antonaciantonio

Untitled

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