Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <RF24.h>
- //#include <Adafruit_Sensor.h>
- #include <nRF24L01.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- RF24 myRadio (10, 9);
- byte addresses[6] = {"00001"};
- #define LEDDATI 5
- #define ACC 7
- #define AVV 8
- //------------variabili pulsante----------
- unsigned long dopo;
- unsigned long radioo;
- //----------- dati in uscita----------
- struct Data
- {
- boolean mar; //sensore marcia
- boolean freno; //freno a mano
- boolean candel ; //candelette
- boolean olio ; //sensore olio
- int secondo = 00; // secondi
- int minuto = 00; //minuti
- boolean conf_acc; //conferma ricevuto comando accensione quadro
- boolean conf_avv; //conferma ricevuto comando accensione avviamento
- float humidithy = 0.0; // humi
- float temperature = 0.0; // temp
- };
- struct Data data;
- //------------variabili di confronto -----------
- int old_secondo = 99 ; // secondi
- int old_minuto = 99 ; //minuti
- float old_humi = 99.0; // humi
- float old_temp = 99.0; // temp
- boolean old_olio = 10 ; //"stop"
- boolean old_tot = 10; //"stop"
- boolean old_risc = 10; //"riscal"
- boolean old_candel ; //"pronto"
- boolean old_avv = 10; //"avviato"
- boolean old_off = 10; //"avviato"
- boolean old_mar = 10; //"marcia"
- boolean old_freno = 10; //"freno"
- boolean old_conf_acc = 10; //"acceso"
- boolean old_conf_avv = 10; //"avviato"
- boolean disp; //variablile lcd no connessione
- boolean old_lost = 10; //variablile lcd no connessione
- boolean old_pul_acc = 0; //pulsante quadro on off
- //------------dati in arrivo------------
- struct Ricezione
- {
- boolean accensione; // comando accensione quadro remoto
- boolean avvio; // comando avviamento remoto
- int id;
- int tensione ;
- float ampere = 0;
- };
- struct Ricezione ricezione;
- void setup()
- {
- Serial.begin(115200);
- pinMode(LEDDATI, OUTPUT); // led dati
- pinMode(ACC, INPUT_PULLUP); // pulsante quadro
- pinMode(AVV, INPUT_PULLUP); // pulsante avvio
- myRadio.begin();
- myRadio.setChannel(115);
- myRadio.setPALevel(RF24_PA_MIN);
- myRadio.setDataRate( RF24_250KBPS ) ;
- myRadio.openWritingPipe( addresses); //( addresses[0]);
- myRadio.openReadingPipe(1, addresses); // (1, addresses[1]);
- lcd.init();
- lcd.backlight();
- lcd.clear();
- lcd.setCursor(5, 0);
- lcd.print("CONTROLLO");
- lcd.setCursor(5, 1);
- lcd.print("REMOTO");
- lcd.setCursor(5, 2);
- lcd.print("Start");
- for (int a = 4; a > 0; a--) {
- lcd.setCursor(a, 0); // posiziono cursore
- lcd.print(".");
- delay(100);
- }
- for (int a = 0; a < 4; a++) {
- lcd.setCursor(0, a); // posiziono cursore
- lcd.print(".");
- delay(100);
- }
- for (int a = 1; a < 19; a++) {
- lcd.setCursor(a, 3); // posiziono cursore
- lcd.print(".");
- delay(100);
- }
- for (int a = 3; a > 0; a--) {
- lcd.setCursor(19, a); // posiziono cursore
- lcd.print(".");
- delay(100);
- }
- for (int a = 19; a > 13; a--) {
- lcd.setCursor(a, 0); // posiziono cursore
- lcd.print(".");
- delay(100);
- }
- lcd.clear();
- }
- void loop() {
- if (myRadio.available()) {
- digitalWrite(5, HIGH);
- while (myRadio.available()) {
- myRadio.read(&data, sizeof(data));
- }
- delay(5);
- myRadio.stopListening();
- myRadio.write(&ricezione, sizeof(ricezione));
- digitalWrite(5, LOW);
- }
- comunicazione();
- ricezione.id = data.secondo;
- pulsanti() ;
- stampa ();
- }
- void pulsanti() {
- //------------pulsante quadro------------------------
- boolean pul_acc = digitalRead(ACC) ; //cosi evita i
- if (pul_acc == LOW && old_pul_acc == HIGH) { //rimbalzi del
- Serial.print("!""!!");
- (ricezione.accensione = true); //1 tasto
- }
- else {
- (ricezione.accensione = false); //0
- }
- old_pul_acc = pul_acc;
- //------------------pulsante avviamento-----------
- if (digitalRead(AVV) == LOW ) { // qui mi serve
- ricezione.avvio = true; // 1 il tempo
- } // per cui tengopremuto
- else {
- ricezione.avvio = false; // 0 spegni avviamento con timer
- }
- }
- void comunicazione() {
- }
- void stampa() {
- //-----------------display-----------
- if (millis() - dopo <= 3000) {
- //disp = true;
- if (data.conf_acc) { // = a 1 true
- if (data.olio && (data.olio != old_olio || data.conf_acc != old_tot)) { // = a 1 true
- lcd.setCursor(16, 0); // posiziono cursore
- lcd.print("Stop"); //scrivi Stop
- }
- old_olio = data.olio ;
- // = a 1 true
- if ( data.candel && (data.candel != old_risc || data.conf_acc != old_tot)) { //se data.candel == 1
- lcd.setCursor(7, 0); // posiziono cursore
- lcd.print("Riscald"); //scrivi Riscald
- }
- old_risc = data.candel ;
- // = 0 false =1 true diverso da
- if (!data.candel && data.olio && data.candel != old_candel ) { //se dato freno non e' 1
- lcd.setCursor(7, 0); // posiziono cursore
- lcd.print("Pronto "); // scrivi Pronto
- }
- old_candel = !data.candel ;
- // = a 1 true = 0 false = 0 false
- if ( !data.olio && !data.candel && (data.olio != old_off && data.candel != old_avv )) {
- lcd.setCursor(7, 0); // posiziono cursore
- lcd.print("avviato "); // scrivi avviato
- old_avv = !data.candel ;
- old_off = !data.olio;
- } // diverso da or diverso da
- if (data.freno != old_freno || data.conf_acc != old_tot) { // se cambia
- lcd.setCursor(0, 1); // posiziono cursore
- if (data.freno) { // se dato freno e' 1/true
- lcd.print("Freno OK"); //scrivi Freno OK
- } else { //altrimenti
- lcd.print("Freno NO"); // scrivi Freno NO
- }
- old_freno = data.freno;
- } // diverso da
- if (data.conf_avv != old_conf_avv) { // se cambia
- lcd.setCursor(9, 1); // posiziono cursore
- if ( data.conf_avv) { // se data.conf_avv e' 1/true
- lcd.print("Avvio"); //scrivi Avvio
- }
- else { //altrimenti
- lcd.print(" "); // scrivi vuoto
- }
- old_conf_avv = data.conf_avv;
- } // diverso da or diverso da
- if (data.mar != old_mar || data.conf_acc != old_tot) { // se cambia
- lcd.setCursor(0, 2); // posiziono cursore
- if (data.mar) { // se data.mar e'1/true
- lcd.print("Folle "); //scrivi Folle
- } else { //altrimenti
- lcd.print("Marcia"); // scrivi Marcia
- }
- old_mar = data.mar;
- } // diverso da
- if (data.temperature != old_temp || data.conf_acc != old_tot) { //se cambia
- lcd.setCursor(15, 2); // posiziono cursore
- lcd.print(data.temperature, 1); //stampa temp
- lcd.print((char)223);
- old_temp = data.temperature;
- } // diverso da or diverso da
- if (data.humidithy != old_humi || data.conf_acc != old_tot) { //se cambia
- lcd.setCursor(15, 3); // posiziono cursore
- lcd.print(data.humidithy, 1); //stampa humi
- lcd.print("%");
- old_humi = data.humidithy;
- }
- lcd.setCursor(17, 1);
- lcd.print(":");
- // diverso da or diverso da
- if (data.secondo != old_secondo || data.conf_acc != old_tot) { //se cambia
- if (data.secondo < 10) { //se inferiore a 10
- lcd.setCursor(18, 1); // posiziono cursore
- lcd.print(' '); //cancello carattere precedente
- lcd.setCursor(19, 1); // posiziono cursore
- lcd.print(data.secondo); //stampa secondo
- }
- else {
- lcd.setCursor(18, 1); //altrimenti
- lcd.print(data.secondo); //stampa secondo
- }
- old_secondo = data.secondo;
- } // diverso da
- if (data.minuto != old_minuto || data.conf_acc != old_tot) { //se cambia
- if (data.minuto < 10) { //se inferiore a 10
- lcd.setCursor(15, 1); // posiziono cursore
- lcd.print(' '); //cancello carattere precedente
- lcd.setCursor(16, 1); // posiziono cursore
- lcd.print(data.minuto); //stampa minuto
- }
- if ( data.minuto > 10) { //altrimenti
- lcd.setCursor(15, 1); // posiziono cursore
- lcd.print(data.minuto); //stampa minuto
- }
- old_minuto = data.minuto;
- }
- old_tot = !data.conf_acc;
- }
- else { //altrimenti
- lcd.setCursor(7, 0); // posiziono cursore
- lcd.print(" "); // scrivi vuoto
- lcd.setCursor(0, 1);
- lcd.print(" ");//scrivi vuoto
- lcd.setCursor(0, 2);
- lcd.print(" ");//scrivi vuoto
- } // se diverso or // se diverso
- if (data.conf_acc != old_conf_acc || data.conf_acc != old_tot || ! old_lost) { // se cambia
- lcd.setCursor(0, 0); // posiziono cursore
- if (data.conf_acc) { // se data.conf_acc e' 1/true
- lcd.print("Acceso "); //scrivi Acceso
- }
- else { //altrimenti
- lcd.print("Spento "); // Spento
- lcd.setCursor(9, 3);
- lcd.print(" ");
- }
- old_conf_acc = data.conf_acc;
- }
- }
- else {
- disp = false;
- if (! old_lost) { // se cambia
- lcd.setCursor(0, 0);
- lcd.print(F(" attenzione "));
- lcd.setCursor(0, 1);
- lcd.print(F(" problema "));
- lcd.setCursor(0, 2);
- lcd.print(F(" comunicazione "));
- lcd.setCursor(0, 3);
- lcd.print(F(" persa "));
- }
- }
- old_lost = disp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement