volatile uint32_t count = 0; // Holds the count of interrupts
const int ledPinA= 4;
const int ledPinB =5;
const int ledPinC=6;
int stato=0;
void incrementCount() {
count++;
}
void setup() {
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
pinMode(ledPinA, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(ledPinC, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), incrementCount, RISING);
}
void loop() {
Serial.print("Interrupt count: ");
noInterrupts();
if(stato<2){
stato++;
}
else{
stato=0;
}
Serial.println(count);
interrupts();
switch(stato)
{
case 0:
digitalWrite(ledPinA, HIGH);
digitalWrite(ledPinB, LOW);
digitalWrite(ledPinC, LOW);
break;
case 1:
digitalWrite(ledPinB, HIGH);
digitalWrite(ledPinA, LOW);
digitalWrite(ledPinC, LOW);
break;
case 2:
digitalWrite(ledPinC, HIGH);
digitalWrite(ledPinB, LOW);
digitalWrite(ledPinA, LOW);
break;
}
delay(100);
}