Guest User

Termosaldatrice

a guest
Sep 8th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define START 2
  2. #define RELAY 3
  3. #define MAIN_ON 4
  4. #define HEAT_ON 5
  5. #define BUZZER  6
  6.  
  7. unsigned long timeOn = millis(), startTime = 1000;
  8. bool risingEdge = false;
  9.  
  10. void setup() {
  11.   Serial.begin(9600);
  12.   Serial.println("START");
  13.   pinMode(START, INPUT_PULLUP);
  14.   pinMode(RELAY, OUTPUT);  
  15.   pinMode(MAIN_ON, OUTPUT);  
  16.   pinMode(HEAT_ON, OUTPUT);  
  17.   pinMode(BUZZER, OUTPUT);  
  18.   digitalWrite(HEAT_ON, HIGH);
  19.   digitalWrite(MAIN_ON, HIGH);  
  20.   digitalWrite(BUZZER, LOW);
  21. }
  22.  
  23. void loop() {
  24.   if((digitalRead(START) == LOW) && (!risingEdge)){  
  25.     risingEdge = true;
  26.     delay(100);               // Semplice antirimbalzo dello switch
  27.     // Con il potenziometro imposti un tempo compreso tra 2 e 20 secondi
  28.     timeOn = map(analogRead(A0), 0, 1023, 500, 7000);  
  29.    
  30.     startTime = millis();
  31.     Serial.print("Start delay timer of ");
  32.     Serial.print(timeOn/1000);
  33.     Serial.println(" seconds.");    
  34.   }
  35.  
  36.  
  37.   if((millis() - startTime <= timeOn) && risingEdge){
  38.     digitalWrite(RELAY, LOW);    
  39.     digitalWrite(HEAT_ON, HIGH);  
  40.   }
  41.   else{
  42.     digitalWrite(RELAY, HIGH);
  43.     digitalWrite(HEAT_ON, LOW);
  44.     for(int i=0; i<2; i++){
  45.         digitalWrite(BUZZER, HIGH);
  46.         delay(1000);
  47.         digitalWrite(BUZZER, LOW);
  48.         delay(500);
  49.     }
  50.   }
  51.  
  52.   // Facciamo in modo che a barra alzata l'uscita venga forzata OFF senza attendere il tempo necessario
  53.   if(digitalRead(START) == HIGH) {  
  54.     digitalWrite(RELAY, HIGH);
  55.     digitalWrite(HEAT_ON, LOW);
  56.     risingEdge = false;
  57.   }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment