Aller au contenu principal

Temps de réaction STM32

InformatiqueTechnologieSTM32 IoT NodeBouton-poussoirLED, BuzzerÉcran OLED SSD1306MakeCode
ProjetDuréeDifficultéÂge
The Dexter Lab1-2 heuresIntermédiaire12-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
Temps de réaction STM32

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
Câblage LED
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
Câblage micro/buzzer

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
Câblage écran OLED

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.