const int ledPin = 13; //led 1
const int buttonPin = 2; //Button to perform interrupt
const int thresholdL = 100;
const int thresholdH = 400;
const int thresholdHH = 700;
int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog pin 3
int val = 0; // variable to store the value read
int x=0, y=0; //some variables to increment
int ledToggle = LOW; //led state
int ledPin_R = 10;
int ledPin_G = 9;
int ledPin_2 = 12;
int ledPin_3 = 11;
int vent = 8;
//variables to keep track of the timing of recent interrupts
unsigned long button_time = 0;
unsigned long last_button_time = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(buttonPin), button_ISR, CHANGE);
}
void loop(){
int analogValue = analogRead(analogPin);
// if the analog value is high enough, turn on the LED:
if (analogValue < thresholdL) {
digitalWrite(ledPin_G, HIGH);
digitalWrite(ledPin_R, LOW);
digitalWrite(vent, LOW);
}
if (analogValue > thresholdH) {
digitalWrite(ledPin_R, HIGH);
digitalWrite(ledPin_G, LOW);
digitalWrite(vent, LOW);
}
if (analogValue > thresholdHH) {
digitalWrite(ledPin_G, LOW);
digitalWrite(ledPin_R, HIGH);
digitalWrite(vent, HIGH);
}
if (digitalRead(ledPin == LOW))
Serial.print("loop " );
Serial.print(x++ );
Serial.println();
delay(500);
}
void button_ISR(){
button_time = millis();
//check to see if increment() was called in the last 250 milliseconds
if (button_time - last_button_time > 250){
Serial.print("Interrupt ");
Serial.print(y++);
Serial.println();
ledToggle = !ledToggle;
digitalWrite(ledPin, ledToggle);
digitalWrite(ledPin_2, ledToggle);
digitalWrite(ledPin_3, ledToggle);
last_button_time = button_time;
}
}