SHARE
TWEET

Untitled

a guest Feb 27th, 2020 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SPI.h>
  2. #include <RF24.h>
  3. #include <DHT.h>
  4. RF24 myRadio (10, 9);
  5. #define DHTPIN 5
  6. #define DHTTYPE DHT22
  7. DHT dht(DHTPIN, DHTTYPE);
  8. byte addresses[][6] = {"00001" , "00002"};
  9. //------------creo 2 operazioni ogni tot tempo----------
  10. unsigned long ritardo = 500;
  11. unsigned long previousMillis1 = 0; //memorizzerà l'ultima volta che il LED è stato aggiornato
  12. unsigned long interval1 = 1000;  //intervallo a cui lampeggiare (millisecondi)
  13. unsigned long previousMillis2 = 0;
  14. unsigned long interval2 = 5000;
  15. //----------- dati in arrivo----------
  16. struct Ricezione
  17. {
  18.   int accensione; // comando accensione quadro
  19.   int avvio; //comando avvio motorino avviamento
  20.   int id ;
  21.   int tensione  ;
  22.   float ampere = 0;
  23.   char  text[150]  ;
  24. };
  25. struct Ricezione  ricezione;
  26. //------------dati in uscita-----------
  27. struct Data
  28. {
  29.   int mar;     //sensore marcia
  30.   int freno ; //freno a mano
  31.   int secondo;
  32.   int minuto;
  33.   int conf_acc ; //conferma ricevuto comando accensione quadro
  34.   int conf_avv;  //conferma ricevuto comando accensione avviamento
  35.   int conf_cand;         //  dato stato candelette
  36.   float humidithy ;
  37.   float temperature ;
  38. };
  39. struct Data data;
  40.  
  41. //       ---variabili per timer on/off timer quadro ----
  42. unsigned long oldMillis ;// variabile tempo quadro
  43. #define T_MIN 3000       // tempo di inibizione pulsante
  44. #define T_OFF 20000       // tempo di quadro acceso pulsante
  45. bool Ing_quadro = false;
  46.  
  47. //           ---variabili per timer avvio----
  48. bool ing_sen = false;
  49. bool Ing_avv = false;
  50. unsigned long motore ;
  51. int button = 0;
  52. bool ing_mar = false;
  53. bool a=true;
  54. int secondi = 0;
  55. int minuti = 0;
  56.  
  57.  
  58.  
  59. void setup()
  60. {
  61.   dht.begin();
  62.   Serial.begin(115200);
  63.   pinMode(2, INPUT_PULLUP);  // freno a mano
  64.   pinMode(4, INPUT_PULLUP); // pulsante quadro
  65.   pinMode(8, OUTPUT);   // rele' avviamento
  66.   pinMode(7, OUTPUT);  // led dati
  67.   pinMode(6, OUTPUT); //  rele' quadro
  68.   pinMode(14, INPUT_PULLUP);   //pulsante avviamento
  69.   pinMode(15, INPUT_PULLUP);   //sensore marcia 1
  70.   pinMode(16, INPUT_PULLUP);   //sensore marcia 2
  71.   myRadio.begin();
  72.   myRadio.setChannel(115);
  73.   myRadio.setPALevel(RF24_PA_MIN);
  74.   myRadio.setDataRate( RF24_250KBPS ) ;
  75.   myRadio.openWritingPipe( addresses[1]);
  76.   myRadio.openReadingPipe(1, addresses[0]);
  77.   digitalWrite(7, HIGH);
  78.   delay(1000);
  79.   digitalWrite(7, LOW);
  80. }
  81.  
  82. void loop() {
  83.  
  84.   delay(5);
  85.   myRadio.stopListening();
  86.   myRadio.write(&data, sizeof(data));
  87.   delay(5);
  88.   myRadio.startListening();
  89.   while (myRadio.available()) {
  90.     myRadio.read(&ricezione, sizeof(ricezione));
  91.  
  92.   }
  93.   data.secondo = secondi;
  94.   data.minuto = minuti;
  95.   // leggo temperatura
  96.   data.humidithy = dht.readHumidity();
  97.   data.temperature = dht.readTemperature();
  98.  
  99.   lettura();
  100.   trasmissione();
  101.   ricez();
  102. }
  103. void lettura() {
  104.  
  105.   if (millis() - previousMillis1 > 1000) {
  106.     previousMillis1 = millis(); //save the last time I blinked the LED
  107.     // if the LED is off turn it on and vice-versa:
  108.  
  109.  
  110.     secondi = secondi + 1;
  111.     if (secondi == 60) {
  112.       secondi = 0;
  113.       minuti = minuti + 1;
  114.     }
  115.   }
  116. }
  117. void trasmissione() {
  118.   if (myRadio.available()) {
  119.     digitalWrite(7, HIGH);
  120.   }
  121.   if (!myRadio.available()) {
  122.     digitalWrite(7, LOW);
  123.   }
  124.  
  125.   //check if it's time to print the new value of the counter
  126.   //if (millis() - previousMillis2 > interval2) {
  127.   //  previousMillis2 = millis(); //save the last time I printed on the serial
  128.   //Serial.println(ricezione.avvio);
  129.  
  130.   //data.id = data.id + 1;
  131. }
  132. void ricez() {
  133.   //----------azoni accensione quadro-------------
  134.   //pin 4  accensione quadro ricezione.accensione comando remoto
  135.   // leggo pin 4 e variabile ricezione.accensione almeno 1 true
  136.   Ing_quadro = (digitalRead(4) == LOW) || (ricezione.accensione == 1);
  137.   // La pressione del pulsante inverte lo stato dell'uscita
  138.   if (Ing_quadro && millis() - oldMillis > T_MIN) {
  139.     oldMillis  = millis();
  140.     // Toogle  (funzione passo passo)
  141.     digitalWrite(6, !digitalRead(6)); //accendo/spengo quadro
  142.   }
  143.   // Dopo secondi t_off spengo comunque il LED (se acceso)
  144.   if ( (millis() - oldMillis > T_OFF) && digitalRead(6)) {
  145.     digitalWrite(6, LOW); //spengo quadro
  146.   a=!a;
  147.   }
  148.   if (a=a) {   //spengo quadro
  149.     (data.conf_acc = 1);     //invio dato lcd
  150.   }
  151.   else {
  152.     (data.conf_acc = 0);     //invio dato lcd
  153.   }
  154.   //-------------- azioni avviamento----------
  155.  
  156.   if (Ing_avv) {  // se tasto // se sensore marcia HIGH
  157.     if  (!ing_mar || digitalRead(2) == HIGH ) {
  158.       digitalWrite(6, LOW);
  159.      a=!a;
  160.     }
  161.   }
  162.   if (digitalRead(2) == LOW) { //  leggo freno a mano
  163.     data.freno = 0;
  164.   }
  165.   else {
  166.     data.freno = 1;
  167.   }
  168.  if (ing_mar ==1 ) { //  leggo freno a mano
  169.     data.mar = 0;     //invio dato lcd
  170.   }
  171.   else {
  172.     data.mar = 1;      //invio dato lcd
  173.   }
  174.   Serial.println( ing_mar);
  175.   //pin 14 (A0) pin avvio ricezione.avvio comando remoto avvio
  176.   //se almeno 1 e vera e  true qundi 1
  177.   Ing_avv = (digitalRead(14) == LOW || (ricezione.avvio == 1));
  178.   // associo freno a mano e quadro entrambi vere true
  179.   ing_sen = (digitalRead(2) == LOW && digitalRead(6) == HIGH);
  180.   //associo pin con sensori folle
  181.   ing_mar = (digitalRead(15) == LOW && digitalRead(16) == LOW);
  182.  
  183.   if (a==true) { // quadro on
  184.     if (Ing_avv == 1 ) // se tasto
  185.       if  (digitalRead(15) == HIGH || digitalRead(16) == HIGH || digitalRead(2) == HIGH ) {
  186.         // se sensore folle e marcia high
  187.         digitalWrite(6, LOW);  // quadro off
  188.       a=!a;
  189.       }
  190.   }
  191.   //associo button con sensori
  192.   // La pressione del pulsante =low
  193.   button = Ing_avv && ing_sen && ing_mar;
  194.   if (button == LOW) {
  195.     //se tutte e 3  sono vere
  196.     digitalWrite(8, LOW);     //avviamento off
  197.     (data.conf_avv = 0);    //invio dato lcd
  198.     //Accendi avviamento con timer
  199.     motore = millis();
  200.   }
  201.   else if ( millis() - motore <= 2000 ) {
  202.     //ricezione.avvio = 0;      //spegni avviamento con timer
  203.     digitalWrite(8, HIGH);     //avviamento on
  204.     (data.conf_avv = 1);   //invio dato lcd
  205.   }
  206.   else {
  207.     digitalWrite(8, LOW);      //avviamento off
  208.     (data.conf_avv = 0);     //invio dato lcd
  209.   }
  210. }
  211. //-------------- candelette----------||
  212.  
  213. //if ( digitalRead(2) == HIGH) &&
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top