This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
in202:seance_6:jalon_2 [2021/05/02 09:25] bmonsuez created |
in202:seance_6:jalon_2 [2022/11/18 10:47] (current) |
||
---|---|---|---|
Line 9: | Line 9: | ||
Les deux schéma suivants expliquent ce qui se passe quand le bouton est relâché ou quand le bouton est pressé. | Les deux schéma suivants expliquent ce qui se passe quand le bouton est relâché ou quand le bouton est pressé. | ||
- | {{ :in202:seance_6:4PinsPressButtonUnpressedSchematic.png?600|Fonctionnement par défaut}} | + | {{:in202:seance_6:4PinsPressButtonUnpressedSchematic.png?600|Fonctionnement par défaut}} |
+ | |||
+ | {{:in202:seance_6:4PinsPressButtonPressedSchematic.png?600|Fonctionnement quand le bouton est appuyé}} | ||
+ | |||
+ | ===== Question 1 ====== | ||
+ | |||
+ | Positionner correctement le bouton sur la //breadboard//. | ||
+ | |||
+ | Pour mémoire, vous avez le schéma de connexion de la //breadboard// qui est rappelé par le schéma suivant : | ||
+ | |||
+ | {{:in202:seance_6:breadsmall.png?600|}} | ||
+ | |||
+ | **Il faudra faire attention à ce que deux pins ne soient pas sur la même ligne de connexion de la breadboard.** | ||
+ | |||
+ | ===== Question 2 ===== | ||
+ | |||
+ | ==== Question 2.1 ==== | ||
+ | |||
+ | Une fois que vous avez positionné le bouton sur la //breadboard//, il faut désormais connecté chacune des pins sur la carte ** ARDUINO **. | ||
+ | |||
+ | Identifier les ports dont vous avez besoin pour : | ||
+ | |||
+ | * Obtenir une tension (attention jamais plus de 3,3 V sinon vous risquez d'endommager la carte). | ||
+ | * Mesurer le signal. | ||
+ | |||
+ | |||
+ | **Indication :** Sur la carte ARDUINO, il existe un port sortant du 3,3 V. De plus il existe une banque de port pouvant générer ou lire des signaux numériques (soit 0 ou 3,3 V) dans la banque PWM. | ||
+ | |||
+ | Connecter le bouton sur ces ports. | ||
+ | |||
+ | ==== Question 2.2 ==== | ||
+ | |||
+ | En fait, nous allons faire un peu plus compliqué, nous allons mettre la diode verte en série avec l'interupteur selon le schéma suivant : | ||
+ | |||
+ | <code> | ||
+ | + --- Interrupteur ---- + ----- diode verte ------- + | ||
+ | | | | | ||
+ | | | | | ||
+ | | | | | ||
+ | 3,3 V (mesure GND | ||
+ | port x sur ARDUINO) | ||
+ | </code> | ||
+ | |||
+ | Quand vous appuez sur l'interrupteur, la diode verte doit s'allumer. | ||
+ | |||
+ | L'intérêt, c'est que quand vous coupez l'interrupteur, la charge mesurée diminue immédiatement puisque la diode a une certaine résistance. Sinon, elle mettrait plus de temps pour disparaitre et créerait des variations de mesure. | ||
+ | Autre montage possible : | ||
+ | |||
+ | <code> | ||
+ | + --- diode blanche ---- + ----- interrupteur ------- + | ||
+ | | | | | ||
+ | | | | | ||
+ | | | | | ||
+ | 3,3 V (mesure GND | ||
+ | port x sur ARDUINO) | ||
+ | </code> | ||
+ | |||
+ | Attention, dans ce cas, l'interuppteur est ''on'' quand la mesure sur le port est ''LOW''. | ||
+ | |||
+ | ===== Question 3 ====== | ||
+ | |||
+ | Nous allons tester si cela fonctionne correctement. Pour ce faire, nous allons faire un petit programme qui va tester régulièrement l'état du bouton. | ||
+ | |||
+ | Le programme sera quelque chose du type : | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | Button myButton(portNumber, "bouton"); // portNumber correspond au port | ||
+ | // que vous avez sélectionné pour connecter | ||
+ | // votre bouton pressoir. | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | if(myButton.isPressed()) // J'ai appelé la fonction qui retourne l'état ''isPressed''. | ||
+ | Serial.print("Button is pressed\n"); | ||
+ | delay(500); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | - Adapter le code pour votre classe ''Button'' et les ports que vous avez sélectionnés en interne. | ||
+ | - Tester le bon fonctionnement de votre circuit en vérifiant que les messages sont bien affichés dans la console. | ||
+ | |||
+ | ===== Question n°4 ====== | ||
+ | |||
+ | Désormais, nous souhaitons que chaque fois que nous appuyons sur le bouton, la diode interne s'allume si elle était éteinte ou au contraire, elle s'éteint si jammais elle était allumée. | ||
+ | |||
+ | |||
+ | Modifier le programmer précédent pour : | ||
+ | - créer un objet associé à la diode interne. | ||
+ | - chaque fois que le bouton est pressé, allumer ou éteindre la diode interne. | ||
+ | |||
+ | Tester le bon fonctionnement de l'ensemble. | ||
+ | |||
+ | ====== Navigation ====== | ||
+ | |||
+ | Précédent: ** Jalon 1: **[[.:jalon_1|La classe ''Button'']] | ||
+ | |||
+ | Suivant: ** Jalon 3: **[[.:jalon_3|Détermination des limites de l'approche synchone.]] | ||
+ | |||
+ | |||
- | {{ :in202:seance_6:4PinsPressButtonPressedSchematic.png?600 |Fonctionnement quand le bouton est appuyé}} | ||