Test de distraction STM32
| 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 Distractions et temps de réaction. Elle reprend la chaîne de programmation pour mesurer le temps de réaction avec stimulus visuel ou sonore, afin d'étudier comment différentes formes de distraction (musique, téléphone, conversation) affectent la vitesse de réponse.
Objectifs d'apprentissage
- Programmer un stimulus visuel (LED) puis sonore (buzzer) en MakeCode
- Mesurer un intervalle temporel via
control.millis() - Comparer des mesures dans plusieurs conditions expérimentales
- Afficher les résultats sur un écran OLED
Étape 1 : Stimulus visuel (LED)
Câblage : Bouton-poussoir sur GND/D2, LED anode sur D4, cathode via résistance 330Ω sur GND.
Installez l'extension Serial.
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 sur GND/D2, buzzer '+' sur D3, '-' 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 I2C : GND, VCC (3.3V), SDA (D14), SCL (D15).
Installez l'extension oled.
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.