Temps de réaction STM32
InformatiqueTechnologieSTM32 IoT NodeBouton-poussoirLED, BuzzerÉcran OLED SSD1306MakeCode
| Projet | Durée | Difficulté | Âge |
|---|---|---|---|
| The Dexter Lab | 1-2 heures | Intermédiaire | 12-16 ans |
Matériel
- 1 carte programmable "STM32 IoT Node Board"
- 1 bouton-poussoir
- 1 LED + résistance 330 Ω
- 1 buzzer
- 1 écran OLED SSD1306
- 1 breadboard + câbles
- 1 câble USB - micro B
De quoi parle-t-on ?
Cette fiche technique accompagne la ressource Temps de réaction en une demi-seconde. Elle décrit comment mesurer un temps de réaction suite à un stimulus visuel (LED) ou sonore (buzzer) grâce à un bouton-poussoir, puis comment afficher les résultats sur un écran OLED.
Objectifs d'apprentissage
- Câbler et programmer une LED, un buzzer et un bouton-poussoir
- Utiliser
control.millis()pour mesurer un intervalle de temps - Générer des délais aléatoires pour un jeu de réaction
- Afficher le temps de réaction sur un écran OLED
Étape 1 : Stimulus visuel (LED)
Câblage :
- Bouton-poussoir : une patte sur GND, l'autre sur D2
- LED : anode sur D4, cathode via résistance 330Ω sur GND
info
La LED a une orientation. L'anode (le '+') est plus longue que la cathode (le '-').
Installez l'extension Serial dans MakeCode.
input.buttonD2.onEvent(ButtonEvent.Down, function () {
Serial.writeValue("Reaction time (ms)", (control.millis() - timeTurnOn));
newGame()
})
function newGame () {
pins.D4.digitalWrite(false)
pause(randint(1000, 5000))
timeTurnOn = control.millis()
pins.D4.digitalWrite(true)
}
let timeTurnOn = 0
Serial.attachToConsole()
newGame()
Étape 2 : Stimulus sonore (buzzer)
Câblage :
- Bouton-poussoir : une patte sur GND, l'autre sur D2
- Buzzer : côté '+' sur D3, côté '-' sur GND
Installez les extensions Music et Serial.
input.buttonD2.onEvent(ButtonEvent.Down, function () {
Serial.writeValue("Reaction time (ms)", (control.millis() - timeTurnOn));
newGame()
})
function newGame () {
music.stopAllSounds()
pause(randint(1000, 5000))
timeTurnOn = control.millis()
music.ringTone(262)
}
let timeTurnOn = 0
Serial.attachToConsole()
newGame()
Étape 3 : Afficher les données sur un écran
Câblage écran OLED SSD1306 (I2C) :
- GND → bande '-' de la breadboard
- VCC → 3.3V de la carte
- SDA → D14 de la carte
- SCL → D15 de la carte
Installez l'extension oled.
Avec stimulus visuel (LED) :
function newGame () {
pins.D4.digitalWrite(false)
pause(randint(1000, 5000))
timeTurnOn = control.millis()
pins.D4.digitalWrite(true)
}
input.buttonD2.onEvent(ButtonEvent.Down, function () {
reaction = control.millis() - timeTurnOn
oled.clear()
oled.showString("Reaction time:", 1)
oled.showString("" + reaction + "ms", 2)
newGame()
})
let reaction = 0
let timeTurnOn = 0
Serial.attachToConsole()
newGame()
Cette fiche fait partie du projet The Dexter Lab, financé par le programme Erasmus+. Contenu sous licence CC BY-SA 4.0.