Szia!
Az arduinot nem nagyon értem még, de ezt a munkát már össze ollóztam.
Inkább plc-n szoktam játszani az azért eléggé más.
Ment már nanóval és most Unoval is.
Az unot össze dugtam egy relés kártyával.
Ha az élesztéshez segítség kell privátban írj.
Sok sikert!
Üdv. Gábor
// Max6675-tel
//I2C-vel illesztett 20x4 LCD-vel és ARDUINO NANO-val
//4DB DS18B20 HŐM. SZENZOR ÉRTÉKÉT ARDUNO NANO-VAL KIJELEZNI 20X4 LCD-VEL
/////////////////////////////////////////
//LCD-I2C IILESZTŐ PANEL - AVR BEKÖTÉSE:
//GND-FEKETE-0V Arduino Nano-hoz
//VCC-FEHER-5V Arduino Nano-hoz
//SDA-LILA- A4 INPUT Arduino Nano-hoz
//SCL-SZURKE- A5 INPUT Arduino Nano-hoz
///////////////////////////////////////
//A négy darab DS18B20 adatlábát összekötöttem majd felhúztam 4,7 k a pozitív táphoz
//adatlábak - D3 pin Arduino Nano-hoz
// sensor resolution 9(0,5 fok pontosság)
// sensor resolution 10(0,25 fok pontosság)
// sensor resolution 11(0,125 fok pontosság)
// sensor resolution 12(0,0625 fok pontosság)
#include <max6675.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 3 //AVR Nano 3. bemenetére kötve D3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress s1 = { 0x28, 0x8A, 0xF7, 0xE1, 0x06, 0x00, 0x00, 0xDB }; //1.szernzor címe másik progival kiolvasva //DS18B20 1-es
DeviceAddress s2 = { 0x28, 0xE1, 0x82, 0x2F, 0x07, 0x00, 0x00, 0xD8 }; //2.szernzor címe másik progival kiolvasva //DS18B20 2-es
DeviceAddress s3 = { 0x28, 0x9B, 0x38, 0x30, 0x07, 0x00, 0x00, 0xDF }; //3.szernzor címe másik progival kiolvasva //DS18B20 3-as
DeviceAddress s4 = { 0x28, 0xCF, 0xCE, 0x2F, 0x07, 0x00, 0x00, 0xB5 }; //4.szernzor címe másik progival kiolvasva //DS18B20 4-es
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
//Itt határozom meg a Max6675 - Arduino csatoló be & kimeneteit
int thermoDO = 8;
int thermoCS = 9;
int thermoCLK = 10;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
// Kimenet elnevezése
int fustPin = 5; // (Füst meleg) Pin5-re relé kotve{
int tempsensor = 0;
int kerekitesF1 = 0;
int kerekitesV1 = 0;
int kerekitesV2 = 0;
int kerekitesV3 = 0;
int kerekitesV4 = 0;
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.begin(20, 4);
sensors.begin();
digitalWrite(fustPin,LOW);
sensors.setResolution(s1, 9);
}
void loop()
{
// LCD első sor**********************
//Nem tartottam fontosnak az egész foknál kisebb értékeket ezért /1 osztottam. Tuti hogy más módon is lehet nekem elég ha mukodik! :-)
// Így elég sok szabad hely marad és még több hőérték adat is elférhet.
sensors.requestTemperatures();
delay(500); //fontos ha 11 vagy 12 a resolution
lcd.setCursor(0,0); //0. sor 0. karakter a kezdő cím
lcd.print("Puffer horetegek");
// LCD második sor_1_**********************
lcd.setCursor(0,1); //0. sor 0. karakter a kezdő cím
lcd.print("1");
lcd.print("/");
lcd.setCursor(2,1); //0. sor 3. karakter a kezdő cím
kerekitesV1 = sensors.getTempCByIndex(0)/1;
lcd.print(kerekitesV1); //Itt irja be a 1-es szenzor adatát
//lcd.print(sensors.getTempCByIndex(0)); //Itt irja be a 1-es szenzor adatát
lcd.print("C");
// LCD második sor_2_**********************
lcd.setCursor(10,1); //1. sor 10. karakter a kezdő cím
lcd.print("2");
lcd.print("/");
lcd.setCursor(12,1); //1. sor 13. karakter a kezdő cím
kerekitesV2 = sensors.getTempCByIndex(1)/1;
lcd.print(kerekitesV2); //Itt irja be a 1-es szenzor adatát
//lcd.print(sensors.getTempCByIndex(1)); //Itt irja be a 2-es szenzor adatát
lcd.print("C");
// LCD harmadik sor_1_**********************
lcd.setCursor(0,2); //2. sor 0. karakter a kezdő cím
lcd.print("3");
lcd.print("/");
lcd.setCursor(2,2); //2. sor 3. karakter a kezdő cím
kerekitesV3 = sensors.getTempCByIndex(2)/1;
lcd.print(kerekitesV3); //Itt irja be a 1-es szenzor adatát
//lcd.print(sensors.getTempCByIndex(2)); //Itt irja be a 3-as szenzor adatát
lcd.print("C");
// LCD harmadik sor_2_**********************
lcd.setCursor(10,2); //2. sor 10. karakter a kezdő cím
lcd.print("4");
lcd.print("/");
lcd.setCursor(12,2); //2. sor 13. karakter a kezdő cím
kerekitesV4 = sensors.getTempCByIndex(3)/1;
lcd.print(kerekitesV4); //Itt irja be a 1-es szenzor adatát
//lcd.print(sensors.getTempCByIndex(3)); // Itt irja be a 1-es szenzor adatát
lcd.print("C");
// LCD negyedik sor**********************
lcd.setCursor(0,3); //3. sor 10. karakter a kezdő cím
lcd.print("Fust");
lcd.setCursor(5,3);
kerekitesF1 = thermocouple.readCelsius()/1;
lcd.print(kerekitesF1); //Itt irja be a 1-es szenzor adatát
//lcd.print(thermocouple.readCelsius());
lcd.print("C ");
//Max6675 még nem megy! :-(
if(kerekitesF1>=180)
digitalWrite(fustPin,HIGH);
if(kerekitesF1<150)
digitalWrite(fustPin,LOW);
}