You are on page 1of 8

MICROCONTROLLEURS

TP 5
Marin Iuliana
Example
• Création d'un projet Arduino pour
utiliser les interruptions à l'aide des
boutons poussoirs.

• https://www.tinkercad.com/things/
gs4tR1OXeX2-copy-of-test-for-
interupt/editel?sharecode=3p9ovE
bsBWxB8ZFG7XvTVckTtO4kxD
8Q8ihTFXtEhfE
2
Composants

• Vous aurez besoin de:


• Arduino Uno R3
• Breadboard
• Boutons poussoirs
• Capteur piézoélectrique
• Interruptions
• Alimentation
• Résistances
• LEDs
• Fils

3
Composants

• Un capteur piézoélectrique est un


dispositif qui utilise l'effet piézoélectrique
pour mesurer les changements de
pression, d'accélération, de température,
de déformation ou de force en les
convertissant en une charge électrique.

4
Le code (1/3)
pinMode(9, INPUT); // Button - Speaker/Buzzer
int buttonState = 0;
pinMode(10, OUTPUT); // Speaker/Buzzer
int counter;
pinMode(11, OUTPUT); // Green LED
int counter2;
pinMode(12, OUTPUT); // Yellow LED
int counter3;
pinMode(13, OUTPUT); // Red LED
int counter4;
}
int counter5;
int counter6;
void myDelay( uint32_t msecs )
int counter7;
{
for (uint32_t i=0; i < msecs/100; i++)
void setup () {
{
pinMode(2, INPUT); // Pause
if (digitalRead(2)) // Pause button pressed ?
Sequence/Loop
{
pinMode(3, INPUT); // Continue
digitalWrite(11, LOW ); // green LED off
Sequence/Loop
digitalWrite(12, LOW ); // yellow LED off
pinMode(4, INPUT); // Start
digitalWrite(13, HIGH ); // red LED on
Sequence/Loop
tone(10, 1000, 100); // beep for 3 seconds
pinMode(5, INPUT); // Button - RED
LED
while (!digitalRead(3)) ; // wait for Continue button
pinMode(6, INPUT); // Button -
YELLOW LED
digitalWrite(13, LOW ); // red LED off
pinMode(7, INPUT); // Button -
digitalWrite(11, HIGH ); // green LED on
GREEN LED
}
pinMode(8, INPUT); // Start Shoot
delay(100); // poll at 1/10 sec intervals
Off 5
}
}
Le code (2/3)
// Button GREEN LED
void loop() {
buttonState = digitalRead(7);
// Button Buzzer
if (buttonState == HIGH) {
buttonState = digitalRead(9);
digitalWrite(11, HIGH);
if (buttonState == HIGH) {
digitalWrite(12, LOW);
tone(10, 523, 1); // play tone 60 (C5
digitalWrite(13, LOW);
= 523 Hz)
}
}
else { (buttonState == LOW);
// Button START Sequence
}
buttonState = digitalRead(4);
// Button RED LED
if (buttonState == HIGH) {
buttonState = digitalRead(5);
for (counter4 = 0; counter4 < 1; ++counter4) {
if (buttonState == HIGH) {
digitalWrite(11, HIGH);
digitalWrite(11, LOW);
tone(10, 523, 1000); // play tone 60 (C5 = 523 Hz)
digitalWrite(12, LOW);
myDelay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, HIGH);
myDelay(1000); // Wait for 1000 millisecond(s)
}
myDelay(1000); // Wait for 1000 millisecond(s)
// Button YELLOW LED
myDelay(1000); // Wait for 1000 millisecond(s)
buttonState = digitalRead(6);
myDelay(1000); // Wait for 1000 millisecond(s)
if (buttonState == HIGH) {
myDelay(1000); // Wait for 1000 millisecond(s)
digitalWrite(11, LOW);
myDelay(1000); // Wait for 1000 millisecond(s)
digitalWrite(12, HIGH);
myDelay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
myDelay(1000); // Wait for 1000 millisecond(s)
}
myDelay(1000); // Wait for 1000 millisecond(s))
6
Le code (3/3)
// Button START Shoot Off Sequence
for (counter2 = 0; counter2 < 2;
buttonState = digitalRead(8);
++counter2) {
if (buttonState == HIGH) {
tone(10, 523, 1000); // play tone
for (counter5 = 0; counter5 < 1; ++counter5) {
60 (C5 = 523 Hz)
digitalWrite(11, HIGH);
myDelay(1500); // Wait for 1500
tone(10, 523, 1000); // play tone 60 (C5 = 523 Hz)
millisecond(s)
myDelay(10000); // Wait for 10000 millisecond(s)
}
for (counter6 = 0; counter6 < 2; ++counter6) {
myDelay(6500); // Wait for 86500
tone(10, 523, 1000); // play tone 60 (C5 = 523 Hz)
millisecond(s)
myDelay(1500); // Wait for 1500 millisecond(s)
myDelay(80000); // Wait for 86500
}
millisecond(s)
myDelay(36500); // Wait for 36500 millisecond(s)
digitalWrite(11, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
myDelay(30000); // Wait for 30000
for (counter7 = 0; counter7 < 3; ++counter7) {
millisecond(s)
tone(10, 523, 1000); // play tone 60 (C5 = 523 Hz)
digitalWrite(12, LOW);
myDelay(1500); // Wait for 1500 millisecond(s)
digitalWrite(13, HIGH);
}
for (counter3 = 0; counter3 < 3;
}
++counter3) {
}
tone(10, 523, 1000); // play tone
}
60 (C5 = 523 Hz)
myDelay(1500); // Wait for 1500
millisecond(s)
} 7
}
}
Exercices
1.Créez et testez le circuit précédemment créé.
2.Pensez à 5 nouveaux cas où des interruptions peuvent être
utilisées. Expliquez les scénarios testés.

You might also like