Ho fatto questo ma mi dà errore quando provo a verificarlo sul punto
pinmode(motor_mashtun, OUTPUT);
#include <LiquidCrystal.h>
#include <OneWire.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int motor_mashtun = 31; //relè motore mashtun
int mashtun_birra = 29; // relè mashtun birra
int boil_birra = 30; //relè mashtun bollitore birra
int sonda_birra = 8; // pin a cui e' collegata la sonda serbatoio birra
int alza_birra = 32; // pin per il bottone aumento setpoint birra
int abbassa_birra = 33; // pin per il bottone diminuzione setpoint birra
int setpoint_birra;// inizializza il setpoint della birra
long temp_birra; // inizializza una variabile contenente la temperatura della birra
int i;
void setup() { // ingressi come imput o output
pinmode(motor_mashtun, OUTPUT);
pinmode(mashtun_birra, OUTPUT);
pinmode(boil_birra, OUTPUT);
pinMode(sonda_birra, INPUT);
lcd.begin(4,20);
lcd.clear();
}
void loop() {
OneWire ds(temp_birra); // ds18b20 pin #2 (middle pin) to Arduino pin 8
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int HighByte, LowByte, SignBit, Whole, Fract, TReading, Tc_100, FWhole;
void setup(void) {
lcd.begin(4,20); // rows, columns. use 2,16 for a 2x16 LCD, etc.
lcd.clear(); // start with a blank screen
lcd.setCursor(0,0); // set cursor to column 0, row 0
if ( !ds.search(addr)) {
lcd.clear(); lcd.print("No more addrs");
delay(1000);
ds.reset_search();
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
lcd.clear(); lcd.print("CRC not valid!");
delay(1000);
return;
}
}
void getTemp() {
int foo, bar;
ds.reset();
ds.select(addr);
ds.write(0x44,1);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
}
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) {
TReading = -TReading;
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
Whole = Tc_100 / 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
if (Fract > 49) {
if (SignBit) {
--Whole;
} else {
++Whole;
}
}
if (SignBit) {
bar = -1;
} else {
bar = 1;
}
}
void printTemp(void) {
lcd.clear();
lcd.setCursor(0,2);
lcd.print("MASH-TEMP : ");
lcd.setCursor(0,3);
if (SignBit) {
lcd.print("-");
}
lcd.print(Whole);
lcd.print(" C ");
}
void loop(void) {
getTemp();
printTemp();
delay(1000);
}
if (temp_birra < setpoint_birra){ // controlla se la birra è in temperatura
digitalWrite(motor_mashtun, HIGH); // accendi il motore mash tun
delay(50); // attende
digitalWrite(mashtun_birra, HIGH); // accendi caldaia mash tun
delay(50); // attende
}
}
if (temp_birra == setpoint_birra){ // se birra è in temperatura
digitalWrite(mashtun_birra, LOW); // spengi gas mash tun
}
}
if (digitalRead (alza_birra) == LOW){ // se ha rilevato pressione del bottone + birra incrementa
setpoint_birra=setpoint_birra+1;
}
if (digitalRead (abbassa_birra) == LOW){ // se ha rilevato pressione del bottone - birra decrementa
setpoint_birra=setpoint_birra-1;
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Birra");
lcd.setCursor(9, 0);
lcd.print("Set");
lcd.setCursor(9, 1);
lcd.print("Set");
lcd.setCursor(6, 0);
lcd.print(temp_birra);
lcd.setCursor(13, 1);
lcd.print(setpoint_birra);
delay(100);
}