Il sito per chi ama smanettare con Arduino, Raspberry Pi & Co.
Condividi:
Notifiche
Cancella tutti

Aiuto Ciclo millis  

   RSS

0

Ciao, mi sono appena iscritto, vi chiedo un aiuto con arduino. 

Quando eseguo questo programma (se le condizioni sono verificate), con un tempo di 2s l'uscita "pumpPin" si abilita e disabilita, all'infinito. E fino a qui funziona tutto.
Come faccio a fare eseguire 1 solo ciclo a "pumpPin? (Quindi accensione e spegnimento)

Sono riuscito a farla eseguire solo una volta, ma poi quando la condizione 
"if (tempc>300)" si verifica nuovamente, "pumpPin" non si abilita più.

 

Mi potete aiutare per favore? Grazie tante.

 

//millis3 POMPA
byte pumpState = 0;
unsigned long previousMillis4 = 0;
unsigned long interval4 = 2000;  //intervallo carico acqua
//millis1
unsigned long previousMillis1 = 0;
unsigned long interval1 = 1000; //intervallo di lettura NTC caldaia
int buttonstate = 0; //Variabile per leggere stato pulsante accensione
int buttonstatev = 0; //Variabile per lettura stato pulsante vapore
int tempc;
#define swa A3
#define swv A2
#define ledon 7
#define ledoff 11
#define ev 10
#define pumpPin 2

void setup()
{
  Serial.begin(9600);
  pinMode(ledon, OUTPUT);
  pinMode(swa, INPUT);
  pinMode(swv, INPUT);
  pinMode(ledoff, OUTPUT);
  pinMode(ev, OUTPUT);
  pinMode(pumpPin, OUTPUT);
}
void loop()
{
  //ACCENSIONE IMPIANTO
  buttonstate = digitalRead(swa);
  if (buttonstate == 1) {
    digitalWrite(ledoff, LOW);
    digitalWrite(ledon, HIGH);
    //GESTIONE CALDAIA
    if (millis() - previousMillis1 > interval1) {
      previousMillis1 = millis();
      tempc = analogRead (A0);
      Serial.print("NTC: ");
      Serial.println(tempc, DEC);
    }

    //GESTIONE EV VAPORE
    buttonstatev = digitalRead(A2);
    digitalWrite(ev, buttonstatev);

    //GESTIONE POMPA
    if (tempc > 300) {
     if (millis() - previousMillis4 > interval4) {
        previousMillis4 = millis();
        pumpState ^= 1;
      }
      if (pumpState == 0) {
        digitalWrite(pumpPin, HIGH);

      }
      else
        digitalWrite(pumpPin, LOW);
   }
 }
  else {
    digitalWrite(ledoff, HIGH);
    digitalWrite(ledon, LOW);
    digitalWrite(ev, LOW);
    digitalWrite(pumpPin, LOW);

  }
}
Questa discussione è stata modificata 2 mesi fa da fabiano
Etichette discussione
Condividi:

Entra nel forum

Hai un nuovo progetto in mente ma hai dei dubbi su come realizzarlo? Vuoi condividere la tua conoscenza da maker con gli altri? Registrati nella nostra community e potrai chiedere fare la tua domanda o rispondere e condividere la tua conoscenza in internet.