Outils pour utilisateurs

Outils du site


3._algorithmie_et_programmation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
3._algorithmie_et_programmation [2024/11/14 08:18] – créée mistert3._algorithmie_et_programmation [2026/01/22 09:27] (Version actuelle) – [INTERRUPTEUR CREPUSCULAIRE] mistert2
Ligne 1: Ligne 1:
 ==== ALGORITHMIE ET PROGRAMMATION ==== ==== ALGORITHMIE ET PROGRAMMATION ====
  
-{{https://mistert-forge.site/cours/1sti2d_it/prog/Arduino Vittascience.pdf}}+{{https://mistert.freeboxos.fr//cours/1sti2d_it/prog/Arduino Vittascience.pdf}} 
 + 
 +{{https://fr.vittascience.com/arduino/?mode=mixed&console=bottom&toolbox=vittascience&board=uno | Site VittaScience}} 
 + 
 +{{https://wokwi.com/projects/375144550969032705 | Site Wokwi}} 
 + 
 +{{https://www.tinkercad.com/joinclass/1A9TVJZCA | Classe TinkerCAD}} 
 + 
 +{{https://mistert.freeboxos.fr/circuit/circuitjs.html | Circuits électroniques}} 
 + 
 +==== Piloter un moteur avec arduino ==== 
 + 
 +{{ https://mistert.freeboxos.fr//cours/2SiCit/commande_moteur.png?800 }} 
 + 
 +**Objectifs attendus:** 
 +  - Comprendre comment la vitesse est contrôlée grâce à la technologie PWM ; 
 +  - inverser le sens de rotation d'un moteur en jouant sur les valeurs MOTEUR1_IN1 et MOTEUR2_IN2; 
 +  - faire un graphique Vitesse, Tension en faisant varier le paramètre transmis à MOTEUR1_EN de 0 à 255 (dans ce code il est à 62); 
 +  - brancher le deuxième moteur et proposer le code pour tourner à gauche, à droite, avancer, reculer. 
 + 
 +Se rendre sur la classe TinkerKad:  
 + 
 +<code C> 
 +// C++ code 
 +// 
 +#define MOTEUR1_EN 6 
 +#define MOTEUR1_IN1 7 
 +#define MOTEUR1_IN2 5 
 + 
 +void avancer() { 
 +  analogWrite(MOTEUR1_EN, 62); 
 +  digitalWrite(MOTEUR1_IN1, HIGH); 
 +  digitalWrite(MOTEUR1_IN2, LOW); 
 +  delay(200); 
 +  
 +
 +  
 +void setup() { 
 +  pinMode(MOTEUR1_EN, OUTPUT); 
 +  pinMode(MOTEUR1_IN1, OUTPUT); 
 +  pinMode(MOTEUR1_IN2, OUTPUT); 
 +
 +  
 +void loop() { 
 +  avancer(); 
 +  delay(500);   
 +
 +</code> 
 + 
 +**Fonctionnement du contrôleur moteur L293D:** 
 + 
 +{{ https://electropeak.com/learn/wp-content/uploads/2018/08/Diagraml-1200.jpg?800 }} 
 + 
 +https://www.tinkercad.com/things/8gpHB1obZhl-pir-sensor-example 
 + 
 +==== INTERRUPTEUR CREPUSCULAIRE ==== 
 + 
 +Faire l'activité dans un premier temps sur Vittascience puissur TinkerCad. 
 + 
 +<code> 
 +Algorithme : Interrupteur crépusculaire avec détection de présence et forçage 
 +Variables (conceptuelles) 
 + 
 +Luminosité : valeur mesurée par la LDR 
 + 
 +Présence : état du capteur PIR (oui / non) 
 + 
 +Forçage : état de l’interrupteur (activé / non) 
 + 
 +État_LED : allumée / éteinte 
 + 
 +Seuil_lumière : valeur limite entre jour et nuit 
 + 
 +Algorithme principal 
 +1. Initialisation 
 + 
 +Fixer un seuil de luminosité (crépuscule). 
 + 
 +Mettre la LED à l’état éteint. 
 + 
 +2. Boucle de fonctionnement (répétée en permanence) 
 + 
 +Mesurer la luminosité avec la LDR. 
 + 
 +Lire l’état du capteur PIR (présence ou non). 
 + 
 +Lire l’état de l’interrupteur de forçage. 
 + 
 +3. Décision d’allumage 
 + 
 +Cas 1 : Forçage activé 
 + 
 +Allumer la LED, quelle que soit la luminosité et la présence. 
 + 
 +Sinon (mode automatique) : 
 + 
 +Si la luminosité est faible (nuit ou crépuscule) 
 +ET qu’une présence est détectée 
 +→ Allumer la LED. 
 + 
 +Sinon 
 +→ Éteindre la LED. 
 + 
 +4. Retour au début de la boucle 
 +</code> 
 + 
 +==== Versions améliorées ==== 
 + 
 +Pour éviter que la LED s’éteigne trop vite : 
 + 
 +  * Si une présence est détectée, maintenir la LED allumée pendant un certain temps (temporisation). Puis revenir au mode normal. 
 +  * Ajouter un seuil haut et un seuil bas (hystérésis) pour la détection lumineuse pour que la lampe ne clignote pas de trop pas. 
 +  * Prévoir un mode économique qui permet de ne pas consommer trop d'électricité.    
 + 
3._algorithmie_et_programmation.1731572321.txt.gz · Dernière modification : de mistert