#include #define RELAY1 8 SoftwareSerial mySerial(4, 2); // RX, TX (seriale su cui e' settato il bluetooth) char statoRele = 'n'; // salviamo lo stato del rele char blueToothVal; //value sent over via bluetooth int contatoreSecondi = 0; const int buttonPin = 11; //pin del pulsante int buttonState = 0; // stato del pulsante const int ledPin = 13; //pin del led stato caldaia void startCaldaia(){ digitalWrite(ledPin,HIGH); //accendo il led digitalWrite(RELAY1,HIGH); //accendo il rele statoRele = '1'; } void stopCaldaia(){ digitalWrite(ledPin,LOW); //spengo il led digitalWrite(RELAY1,LOW); //spengo il rele statoRele = '0'; } void setup() { // Open serial communications: Serial.begin(9600); Serial.println("Type AT commands!"); // The HC-06 defaults to 9600 according to the datasheet. mySerial.begin(9600); pinMode(ledPin,OUTPUT); //il led pinMode(RELAY1, OUTPUT); //il rele pinMode(buttonPin, INPUT); //pulsante contatoreSecondi = 0; } void loop() { //Si autospegne se non riceve alcun messaggio per un ora if (contatoreSecondi > 7200){ stopCaldaia(); blueToothVal=' '; } // Legge l'input dal raspeberry if (mySerial.available()){ blueToothVal=(char)mySerial.read(); } String stringContatore; switch (blueToothVal) { case '0'://se ricevo 0 lo spengo stopCaldaia(); mySerial.write('0\n'); blueToothVal=' '; contatoreSecondi = 0; break; case '1'://se ricevo 1 lo accendo startCaldaia(); mySerial.write('1\n'); blueToothVal=' '; contatoreSecondi = 0; break; case 's'://richiedo lo stato e azzero il contatore mySerial.write(statoRele); //mando lo stato mySerial.write("\n"); blueToothVal=' '; contatoreSecondi = 0; break; case 't'://info sul contatore stringContatore = String(contatoreSecondi); char charBuf[50]; stringContatore.toCharArray(charBuf, 50); strcat(charBuf, "\n"); mySerial.write(charBuf); //mando lo stato break; default: // if nothing else matches, do the default // default is optional break; } //Parte pulsante buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { if(statoRele=='0'){ startCaldaia(); blueToothVal=' '; contatoreSecondi = 0; }else{ stopCaldaia(); blueToothVal=' '; contatoreSecondi = 0; } } //fine parte pulsant delay(1000); contatoreSecondi += 1; }