View difference between Paste ID: xCknYfe5 and 2LcRqmCr
SHOW: | | - or go back to the newest paste.
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-
    if(digitalRead(START) == HIGH)
41+
42-
      risingEdge = false;
42+
43
    digitalWrite(HEAT_ON, LOW);
44
	for(int i=0; i<2; i++){
45
		digitalWrite(BUZZER, HIGH);
46-
  // Se non necessario, rimuovi queste righe
46+
		delay(1000);
47-
  ////////////////////////////////////////
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-
  ////////////////////////////////////////
53+
54
    digitalWrite(RELAY, HIGH);
55
    digitalWrite(HEAT_ON, LOW);
56
    risingEdge = false;
57
  }
58
  
59
}