« STIC:STIC IV (2019)/Pomodor'Up » : différence entre les versions
m (→Persona) |
|||
Ligne 55 : | Ligne 55 : | ||
==== Persona ==== | ==== Persona ==== | ||
[[Fichier:Persona corinne.png | [[Fichier:Persona corinne.png|Persona des utilisateurs·trice de Pomodor'Up]] | ||
==== Objectifs ==== | ==== Objectifs ==== |
Version du 7 juillet 2020 à 20:43
Cet article est en construction: un auteur est en train de le modifier.
En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.
Pomodor'Up est un dispositif tangible servant à mettre en œuvre facilement et rapidement la méthode pomodoro.
Introduction
Le projet Teach'Out consiste à créer un dispositif composé d'une carte Adafruit Circuit Playground Express (ou CPX) pour les enseignants et/ou accompagnateurs en sortie avec un groupe d’enfants. Le dispositif est basé sur les capteurs/émetteurs d’infrarouge déjà installés sur le circuit.
Problème
Durant les sorties scolaires, un grand nombre d'enfants sont accompagnés d'un petit nombre d'enseignants/accompagnateurs. Ce groupe se déplace dans la ville à pied ou en transports publics. À présent, les accompagnateurs n'ont aucun moyen rapide de vérifier que tous les enfants sont présents à tout moment. Ils doivent également assurer la sécurité des enfants lorsqu'ils doivent traverser la route.
Apports théoriques : à compléter.
Cahier des charges
Contexte
Ce dispositif est conçu pour être utilisé principalement en contexte scolaire. Cependant, il est facilement adaptable à un contexte de sortie familiale.
Public
Le public cible du dispositif Teach'Out sont les enseignants/accompagnateurs en sortie scolaire avec un groupe d'enfants et les enfants faisant partie de ce groupe.
Objectifs
L'objectif principal du dispositif Teach'Out est d'aider les enseignants/accompagnateurs à s’assurer que tous les enfants sont bien présents à tout moment. Teach'Out aide également à éviter des accidents de la route lorsqu’on veut traverser avec le groupe d’enfants, ainsi qu'à sensibiliser les enfants envers la sécurité routière.
Besoins et contraintes
- les besoins et contraintes de votre projet (matérielles, humaines, techniques ...)
Présentation du projet
Le dispositif est basé sur les capteurs/émetteurs d’infrarouge déjà installés sur le circuit, utilisés pour compter les élèves. La puissance de ces émetteurs étant limitée à des facteurs de distance/direction, les élèves doivent passer devant l'enseignant afin d'être correctement comptés. Les LEDs de la guirlande s'allument une par une, à chaque passage. Une couleur est associée à chaque dizaine d'unités afin d'améliorer la lecture de la part des accompagnateurs.
Informations additionnelles
- Tout autre item pertinent selon notre projet.
Solution
Dispositif et son fonctionnement
Composantes matérielles du dispositif :
Fonctionnalités de Teach'Out :
- possibilité de compter les élèves et voir s’ils sont tous présents ;
- messages/sons et lumières déclenchés par l’enseignant lorsqu’on doit traverser la route: si la lumière affichée sur la guirlande est verte cela signifie que l’on peut traverser ; si elle est rouge alors il ne faut surtout pas bouger.
Documentation
Prototypes
Difficultés
Test(s) de la solution
Wearable réalisé
Cognitive walkthrough
Persona
Objectifs
- forcer une alternance entre des phases de travail et des phases de pause
- forcer une mise en mouvement au début et à la fin des phases de pause
- indiquer facilement la progression de l'utilisateur·trice dans sa réalisation des tâches (dans une même séquence "pomodoro")
Scénario d'utilisation
- (en amont) Réfléchir à un fractionnement des tâches compatibles avec un pomodoro
- Allumage du dispositif
- (facultatif: activation/désactivation des fonctionnalités sonores)
- Lancement du dispositif
- Réalisation d'une séquence "pomodoro" (i.e. réalisation de tâches lors de 4 phases de travail de 25 minutes alternées avec des phases de pause de 5 minutes (avec une pause finale de 20 minutes)
- Lancement et réalisation d'une autre séquence "pomodoro" (4 à 5 dans la journée)
- Mise hors tension du dispositif
Test utilisateurs
Questionnaire
Discussion
Cette partie inclus deux sous parties :
- Discussion du design (et si c'était à refaire)
- Discussion des résultats de vos tests utilisateurs
Licence, fichiers et documentation
Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International.
- Fichiers :
Insérer ici vos fichiers ou les liens vers vos fichiers
- Documentation :
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire
Images et code
//////////////////////// DEFINITION DES VARIABLES ////////////////////////
let strip: light.NeoPixelStrip = null // definition des leds utilisees dans le strip
let volume = 0
let check = 0 // nombre de pomodoro effectues
// Variables liees au temps //
let minutes = 0
let tempsTravail = 0
let tempsPauseCourte = 0
let tempsPauseLongue = 0
// Variables liees au signalement de la pause
let pause2 = 0
let finPause = 0
// Definition des temps de travail et de pause (en minutes)
forever(function () {
minutes = 60000
tempsTravail = minutes * 25
tempsPauseCourte = minutes * 5
tempsPauseLongue = minutes * 15
})
//////////////////////// FONCTIONS DU POMODOR'UP (volume, mouvement, sons, lumieres, temps de travail et de pause) ////////////////////////
// gestion du volume (on/off)
input.buttonA.onEvent(ButtonEvent.Click, function () {
// desactiver le volume
if (volume != 0) {
music.jumpDown.playUntilDone() // feedback audio off
volume = 0
music.setVolume(volume)
}
// activer le volume
else {
volume = 500
music.setVolume(volume) // feedback audio on
music.jumpUp.play()
}
})
// Gestion du mouvement (si le pomodoro est secoue => mettre ces variables a 1)
input.onGesture(Gesture.Shake, function () {
pause2 = 1
finPause = 1
})
// periode de travail
function travail () {
// gestion de la lumiere sur le strip et le CPX
light.setBrightness(20)
strip.setBrightness(20)
light.setAll(0xff8000)
strip.setAll(0xff8000)
// gestion du volume
music.setVolume(volume)
// timer
pause(tempsTravail)
}
// signal de pause
function alarmePause () {
// gestion de la lumiere
light.setBrightness(255)
strip.setBrightness(255)
// alternance de lumieres jusqu'a ce que l'accelerometre soit declenche
while (pause2 == 0) {
// alternance lumiere
light.setAll(0x00ffff)
strip.setAll(0x00ffff)
pause(200)
light.setAll(0xffff00)
strip.setAll(0xffff00)
// declenchement de l'alarme
music.setVolume(volume)
music.baDing.play()
pause(100)
light.clear()
}
// mettre la variable fin de pause a 0 pour que la fonction se declenche a la prochaine pause
finPause = 0
}
// signal de fin de pause
function alarmeFinPause () {
// gestion de la puissance de la lumiere
light.setBrightness(255)
strip.setBrightness(255)
// si l'accelerometre n'est pas declenche => alternance de lumiere et signal sonore
if (finPause == 0) {
while (finPause == 0) {
light.setAll(0x00ffff)
strip.setAll(0x00ffff)
music.playTone(659, music.beat(BeatFraction.Half))
pause(50)
light.setAll(0x00ff00)
strip.setAll(0x00ff00)
music.setVolume(volume)
music.playTone(523, music.beat(BeatFraction.Half))
pause(50)
light.clear()
}
}
// si l'accelerometre est declenche => mettre pause2 a 0
if (finPause == 1) {
pause2 = 0
}
}
// definition de la pause
function pauseCourte () {
music.setVolume(volume)
pause2 = 0
// si la pause est a 0 => declencher l'alarme
if (pause2 == 0) {
alarmePause()
}
//si le pomodorup a ete secoue => lancer la pause
if (pause2 == 1) {
light.setBrightness(255)
strip.setBrightness(255)
light.setAll(0x00ff00)
strip.setAll(0x00ff00)
pause(tempsPauseCourte) // attendre le temps defini en amont avant de declencher l'alarme de fin de pause
alarmeFinPause() // appelle l'alarme de fin de pause
}
}
// meme fonction que "pauseCourte" avec un temps de pause plus long
function pauseLongue () {
music.setVolume(volume)
pause2 = 0
if (pause2 == 0) {
alarmePause()
}
if (pause2 == 1) {
light.setBrightness(255)
strip.setBrightness(255)
light.setAll(0x00ff00)
strip.setAll(0x00ff00)
pause(tempsPauseLongue)
}
}
//////////////////////// SEQUENCE POMODORO ////////////////////////
// declenchement avec le bouton B
input.buttonB.onEvent(ButtonEvent.Click, function () {
// definition des parametres de base
light.setBrightness(255)
check = 0
strip = light.createStrip(pins.A1, check)
music.setVolume(volume)
// feedback d'initialisation
music.powerUp.play()
light.setAll(0x00ff00)
pause(750)
// alternance travail - pause (3 fois)
for (let i = 0; i < 3; i++) {
// phase "travail"
travail()
// gestion des checks signalant les pomodoro
if (check >= 1) {
check = check + 2 // allumer 2 LEDs par pomodoro
} else {
check = 1 // allumer une seule LED au premier pomodoro
}
//activer les LEDs
strip = light.createStrip(pins.A1, check)
strip.setAll(0x00ff00)
//declenchement de la pause
pauseCourte()
}
// DERNIER POMODORO : travail + pause longue
travail() // phase travail
// ajout de la derniere coche
check = check + 2
strip = light.createStrip(pins.A1, check)
strip.setAll(0x00ff00)
//pause longue
pauseLongue()
pause(100)
// signal de fin
light.setBrightness(255)
strip.setBrightness(255)
light.setAll(0xffffff)
strip.setAll(0xffffff)
// musique de fin
music.playMelody("G C5 B A A G G - ", 300)
music.playMelody("G A G A G A G A ", 300)
music.playMelody("G A G A G A A A ", 300)
pause(2000)
// remise a 0 des elements
strip.setBrightness(0)
light.clear()
strip.clear()
})