Advertisement
KenFalco

readSensors_v2

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