Cac/arduino/rele/rele.ino

112 lines
2.5 KiB
Arduino
Raw Permalink Normal View History

2015-11-14 18:02:13 +01:00
#include <SoftwareSerial.h>
#define RELAY1 8
SoftwareSerial mySerial(4, 2); // RX, TX (seriale su cui e' settato il bluetooth)
2015-11-14 18:02:13 +01:00
2015-12-02 02:34:08 +01:00
char statoRele = 'n'; // salviamo lo stato del rele
2015-11-14 18:02:13 +01:00
char blueToothVal; //value sent over via bluetooth
int contatoreSecondi = 0;
2015-11-14 18:02:13 +01:00
2017-01-22 13:48:55 +01:00
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';
}
2015-11-14 18:02:13 +01:00
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);
2017-01-22 13:48:55 +01:00
pinMode(ledPin,OUTPUT); //il led
pinMode(RELAY1, OUTPUT); //il rele
2017-01-22 13:48:55 +01:00
pinMode(buttonPin, INPUT); //pulsante
contatoreSecondi = 0;
2015-11-14 18:02:13 +01:00
}
void loop() {
//Si autospegne se non riceve alcun messaggio per un ora
2017-02-09 12:02:32 +01:00
if (contatoreSecondi > 7200){
2017-01-22 13:48:55 +01:00
stopCaldaia();
blueToothVal=' ';
}
2015-11-14 18:02:13 +01:00
// Legge l'input dal raspeberry
2015-11-14 18:02:13 +01:00
if (mySerial.available()){
blueToothVal=(char)mySerial.read();
2015-11-14 18:02:13 +01:00
}
2017-02-09 12:02:32 +01:00
String stringContatore;
2017-01-22 13:48:55 +01:00
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;
2017-02-09 12:02:32 +01:00
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;
2017-01-22 13:48:55 +01:00
default:
// if nothing else matches, do the default
// default is optional
break;
}
2017-01-22 13:48:55 +01:00
//Parte pulsante
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
if(statoRele=='0'){
startCaldaia();
blueToothVal=' ';
contatoreSecondi = 0;
}else{
stopCaldaia();
blueToothVal=' ';
contatoreSecondi = 0;
}
}
//fine parte pulsant
2015-11-14 18:02:13 +01:00
delay(1000);
2017-01-22 13:48:55 +01:00
contatoreSecondi += 1;
2015-11-14 18:02:13 +01:00
}