Commander une lampe via la détection de mouvement¶
Auteurs
URCA
Ce tutoriel s’intéresse à la commande d’une lampe de Home I/O grâce à un capteur de mouvement via le logiciel Scratch 2.
Objectif : commander une lampe via la détection de mouvement
Principe : dès qu’un mouvement est détecté dans la pièce H, la lumière s’allume
Programmation :¶
Dans un premier temps, il est nécessaire de définir quand notre programme sera actif. Pour cela la manière la plus simple est d’activer notre programme dès que l’on appuie sur le drapeau vert au-dessus de l’interface graphique.
On sélectionne donc le bloc « Quand – drapeau vert – est cliqué » dans la catégorie « Evénements ».
Ensuite il est nécessaire que notre programme soit répétable à l’infini tant que le drapeau est cliqué. Sans cette étape, notre programme s’exécutera qu’une seule fois.
On ajoute le bloc « répéter indéfiniment » (catégorie « Contrôle ») dans lequel on viendra intégrer les différentes instructions propres aux lampes.
A partir de maintenant, tous les blocs iront se positionner dans la boucle « répéter indéfiniment ».
Maintenant que notre programme est correctement structuré, nous pouvons programmer la fonction souhaitée.
Dans ce programme, l’action (allumer la lampe) devra s’effectuer sous condition de mouvement dans la pièce. Cette condition se traduit par un bloc « si…alors » dans la catégorie « Contrôle ». Ce bloc exécute les blocs qu’il contient sous réserve que la condition qui lui est affectée soit validée.
Si « condition(s) vraie(s) » alors « faire action(s) »
Dans notre cas, la condition du mouvement dans la pièce est traduite par le bloc « Détecteur de présence de la pièce A ». Ce bloc est modulable et permet de choisir dans quelle pièce on souhaite détecter le mouvement. Dans notre cas, il y a juste à modifier la pièce A et la remplacer par H.
A présent, notre condition est paramétrée et il nous reste plus qu’à définir les actions à effectuer lorsque cette condition sera vérifiée :
Dans un premier temps il faut allumer la lumière de la pièce H via le bloc « allumer la lumière 1 de la pièce H ».
Ensuite, il faut éteindre la lumière uniquement si aucun mouvement n’est détecté. Pour cela, on utilise le bloc « attendre jusqu’à » dans lequel on indiquer ne plus détecter de mouvement dans la pièce.
Il faut donc ajouter dans ce bloc d’attente un bloc « non » de la catégorie « Opérateurs » dans lequel on ajoute le bloc détectant la lumière dans la pièce H.
Pour éviter d’éteindre et de rallumer la lumière sans arrêt parce que nous ne sommes pas constamment en mouvement dans la chambre, on ajoute un bloc de temporisation. Ce bloc de temporisation va ajouter un délai permettant d’être sûr que la pièce est vide avant de l’éteindre. Le bloc de temporisation est le suivant : « attendre…secondes » dans la classe « Contrôle » dans lequel on règle le temps (en secondes) de la temporisation.
Pour notre exemple, nous mettons 10 secondes.
Enfin, nous pouvons éteindre la lumière en reprenant le même bloc que pour l’allumer mais cette fois-ci configuré sur « Eteindre ».
Programme complet :
Amélioration :¶
Ce programme est fonctionnel mais il existe une autre manière de programmer cette même fonction. L’intérêt d’utiliser cette autre version est de rendre le programme plus « propre ». En effet, il faut éviter d’utiliser le bloc conditionnel « si…alors… » car il n’est pas optimisé pour la programmation à état. Par conséquent, on remplace ce bloc « si…alors… » par le bloc « attendre jusqu’à… » tout en gardant la même condition.
A la suite de bloc on place exactement les mêmes blocs que pour la solution précédente. On obtient alors le programme suivant :
A présent le programme est fonctionnel, il ne reste plus qu’à le tester dans Home I/O.