Advertisement
KenFalco

Ultimo(?)-tentativo

Sep 12th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.57 KB | None | 0 0
  1. const int ledpinEV1 = 22; // setta il pin elettrovalvola e led
  2. const int ledpinEV2 = 23; //setta il pin elettrovalvola e led
  3. const int ledpinEV3 = 24; //setta il pin elettrovalvola e led
  4. const int ledpinEV4 = 25; //setta il pin elettrovalvola e led
  5. const int ledpinPom = 26; //setta il pin elettrovalvola e led
  6. const int ledpinRes = 27; //setta il pin elettrovalvola e led
  7.  
  8. const int puls = 4;  // setta il pulsante
  9. const int Temp = A0; // setta il sensore temperatura
  10. const int EV1 = A1;  // setta flussometro 1
  11. const int EV2 = A2;  // setta flussometro 2
  12. const int EV3 = A3;  // setta flussometro 3
  13. const int EV4 = A4;  // setta flussometro 4
  14.  
  15. const int ingresso = 2;   //Piedino di ingresso del flussostato
  16.  
  17.  
  18. double flusso;      //Quantità di acqua che scorre
  19. volatile unsigned int count = 0; //Variabile di conteggio
  20.  
  21. char fromSerial = ' '; //Lettura dalla seriale
  22.  
  23. void impulso();
  24. bool readSensors();
  25.  
  26. void setup() {
  27.   Serial.begin(9600);
  28.  
  29.   pinMode(ledpinEV1, OUTPUT);
  30.   pinMode(ledpinEV2, OUTPUT);
  31.   pinMode(ledpinEV3, OUTPUT);
  32.   pinMode(ledpinEV4, OUTPUT);
  33.   pinMode(ledpinPom, OUTPUT);
  34.   pinMode(ledpinRes, OUTPUT);
  35.  
  36.   pinMode(puls, INPUT);
  37.   pinMode(Temp, INPUT);
  38.   pinMode(EV1, INPUT);
  39.  
  40.   pinMode (ingresso, INPUT);  //Imposta piedino 2 in ingresso
  41.   attachInterrupt (0, impulso, RISING);  //Configura interrupt 0 pin 2
  42. }
  43.  
  44. void loop() {
  45.  
  46.   if (Serial.available())
  47.     fromSerial = Serial.read();
  48.  
  49.   if (fromSerial != ' ') {
  50.     switch (fromSerial) {
  51.       case 'a':
  52.         digitalWrite(ledpinEV1, HIGH);
  53.         break;
  54.       case 'h':
  55.         digitalWrite(ledpinEV1, LOW);
  56.         break;
  57.       case 'b':
  58.         digitalWrite(ledpinEV2, HIGH);
  59.         break;
  60.       case 'i':
  61.         digitalWrite(ledpinEV2, LOW);
  62.         break;
  63.       case 'd':
  64.         digitalWrite(ledpinEV3, HIGH);
  65.         break;
  66.       case 'l':
  67.         digitalWrite(ledpinEV3, LOW);
  68.         break;
  69.       case 'e':
  70.         digitalWrite(ledpinEV4, HIGH);
  71.         break;
  72.       case 'm':
  73.         digitalWrite(ledpinEV4, LOW);
  74.         break;
  75.       case 'f':
  76.         digitalWrite(ledpinRes, HIGH);
  77.         break;
  78.       case 'n':
  79.         digitalWrite(ledpinRes, LOW);
  80.         break;
  81.       case 'g':
  82.         digitalWrite(ledpinPom, HIGH);
  83.         break;
  84.       case 'o':
  85.         digitalWrite(ledpinPom, LOW);
  86.         break;
  87.       case 'p':
  88.         while (!readSensors()) { }
  89.         break;
  90.       case 'q':
  91.         digitalWrite(ledpinEV4, LOW);
  92.         break;
  93.       default:
  94.         fromSerial = ' ';
  95.         break;
  96.     }
  97.   }
  98. }
  99.  
  100. void impulso() {
  101.   count++;   //Incrementa count di 1
  102. }
  103.  
  104. bool readSensors() {
  105.   int ELE1 = analogRead(EV1);
  106.   delay(10); //Meglio lasciare questo piccolo delay per motivi interni ad Arduino
  107.   int NTC = analogRead(Temp);
  108.  
  109.   count = 0;      //Resetta il conteggio
  110.   interrupts();   //Abilita gli interrupt
  111.   delay (1000);   //Pausa di 1 secondo
  112.   noInterrupts(); //Disabilita gli interrupt
  113.  
  114.   flusso = (double(count) * 1.12);  //1.12mL per ogni impulso
  115.   flusso *= 60.0;     //Trasforma i secondi in minuti
  116.   flusso /= 1000.0;   //Trasforma i mL in litri
  117.  
  118.   Serial.print("HIGH\n");
  119.   Serial.print("\tT: ");
  120.   Serial.println(NTC);
  121.   Serial.print("\tV: ");
  122.   Serial.println(ELE1);
  123.   Serial.print("\tF: ");
  124.   Serial.println(flusso);
  125.  
  126.   digitalWrite(ledpinEV4, HIGH);
  127.   delay(2000);
  128.   digitalWrite(ledpinEV4, LOW);
  129.   delay(2000);
  130.   digitalWrite(ledpinEV4, HIGH);
  131.   delay(2000);
  132.   digitalWrite(ledpinEV4, LOW);
  133.  
  134.   if (NTC > 400)
  135.     digitalWrite(ledpinRes, HIGH);
  136.  
  137.   if (flusso >= 2.0)
  138.     return true;
  139.  
  140.   return false;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement