#define POINT 100
#define TIRET 600
volatile boolean actif;
int led = 13;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP);
actif = false;
attachInterrupt(digitalPinToInterrupt(2), serviceInt0, CHANGE);
}
void loop() {
if (actif == true) {
while (actif == true) {
EcrireLettre('S');
delay(100);
EcrireLettre('O');
delay(100);
EcrireLettre('S');
delay(300);
}
}
}
void serviceInt0(void) {
actif = digitalRead(2);
}
void EcrireLettre(unsigned char lettre) {
if (lettre == 'S') {
digitalWrite(led, HIGH);
delay(POINT);
digitalWrite(led, LOW);
delay(POINT);
digitalWrite(led, HIGH);
delay(POINT);
digitalWrite(led, LOW);
delay(POINT);
digitalWrite(led, HIGH);
delay(POINT);
digitalWrite(led, LOW);
} else if (lettre == 'O') {
digitalWrite(led, HIGH);
delay(TIRET);
digitalWrite(led, LOW);
delay(TIRET);
digitalWrite(led, HIGH);
delay(TIRET);
digitalWrite(led, LOW);
delay(TIRET);
digitalWrite(led, HIGH);
delay(TIRET);
digitalWrite(led, LOW);
}
}