TolentinoCotesta

Termosaldatrice

Sep 9th, 2018
140
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. // Tempi saldatura (millisecondi)
  8. #define TMIN 2000
  9. #define TMAX 20000
  10. // Tempi buzzer (millisecondi)
  11. #define TON 300
  12. #define TOFF 100
  13.  
  14.  
  15. unsigned long timeOn = millis(), startTime = 1000;
  16. bool risingEdge = false;
  17. unsigned int nBuz = 0;
  18.  
  19. void setup() {
  20.   Serial.begin(9600);
  21.   Serial.println("START");
  22.   pinMode(START, INPUT_PULLUP);
  23.   pinMode(RELAY, OUTPUT);  
  24.   pinMode(MAIN_ON, OUTPUT);  
  25.   pinMode(HEAT_ON, OUTPUT);  
  26.   pinMode(BUZZER, OUTPUT);  
  27.   digitalWrite(HEAT_ON, HIGH);
  28.   digitalWrite(MAIN_ON, HIGH);  
  29.   digitalWrite(BUZZER, LOW);
  30. }
  31.  
  32. void loop() {
  33.   if((digitalRead(START) == LOW) && (!risingEdge)){  
  34.     risingEdge = true;
  35.     delay(100);               // Semplice antirimbalzo dello switch
  36.     // Con il potenziometro imposti un tempo compreso tra TMIN e TMAX milllisecondi
  37.     timeOn = map(analogRead(A0), 0, 1023, TMIN, TMAX);      
  38.     startTime = millis();
  39.     nBuz = 0;
  40.     Serial.print("Start delay timer of ");
  41.     Serial.print(timeOn/1000);
  42.     Serial.println(" seconds.");    
  43.   }
  44.  
  45.  
  46.   if((millis() - startTime <= timeOn) && risingEdge){
  47.     digitalWrite(RELAY, LOW);    
  48.     digitalWrite(HEAT_ON, HIGH);  
  49.   }
  50.   else{
  51.     digitalWrite(RELAY, HIGH);
  52.     digitalWrite(HEAT_ON, LOW);
  53.     if(risingEdge){      
  54.       while(nBuz<3){
  55.         digitalWrite(BUZZER, HIGH);
  56.         delay(TON);
  57.         digitalWrite(BUZZER, LOW);
  58.         delay(TOFF);
  59.         nBuz++;
  60.       }      
  61.     }
  62.   }
  63.      
  64.   if(digitalRead(START) == HIGH) {  
  65.     risingEdge = false;
  66.     digitalWrite(RELAY, HIGH);
  67.     digitalWrite(HEAT_ON, LOW);
  68.     digitalWrite(BUZZER, LOW);    
  69.   }
  70. }
Add Comment
Please, Sign In to add comment