Utilisation de ChatGpt
Prompt : Je veux qu’en appuyant sur un bouton, cela allume une LED. J’ai une carte Arduino. Peux-tu me donner le code ?
Réponse de ChatGPT :
// Définir les broches
const int buttonPin = 2; // Le bouton est connecté à la broche 2
const int ledPin = 13; // La LED est connectée à la broche 13 (LED intégrée sur beaucoup d'Arduino)
void setup() {
// Initialiser la broche du bouton comme une entrée
pinMode(buttonPin, INPUT_PULLUP); // INPUT_PULLUP active une résistance interne
// Initialiser la broche de la LED comme une sortie
pinMode(ledPin, OUTPUT);
}
void loop() {
// Lire l'état du bouton
int buttonState = digitalRead(buttonPin);
// Le bouton est appuyé (état LOW à cause de INPUT_PULLUP)
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH); // Allumer la LED
} else {
digitalWrite(ledPin, LOW); // Éteindre la LED
}
}
Comment brancher :
• Bouton : connecte une patte du bouton à la broche 2 et l’autre à GND (terre).
• LED : si tu utilises une LED externe, branche l’anode (patte longue) sur la broche 13 (avec une résistance de 220Ω entre la LED et la broche) et la cathode (patte courte) sur GND.
Sinon, utilise simplement la LED intégrée de ta carte Arduino.
On va lui demander quelques modifications :
Prompt : Je souhaite ajouter une deuxième LED qui s’allume en alternance avec la première. Le clignotement doit durer 5 secondes, chaque LED restant allumée pendant 2 secondes.
Réponse de ChatGPT :
// Définir les broches
const int buttonPin = 2; // Le bouton est connecté à la broche 2
const int led1Pin = 13; // Première LED connectée à la broche 13
const int led2Pin = 12; // Deuxième LED connectée à la broche 12
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Utilisation de la résistance interne
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
// Si bouton appuyé, on démarre l'alternance pendant 5 secondes
unsigned long startTime = millis(); // Enregistrer le moment de départ
while (millis() - startTime < 5000) { // Tant que 5 secondes ne sont pas écoulées
// Allumer LED1, éteindre LED2
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, LOW);
delay(2000); // Attendre 2 secondes
// Allumer LED2, éteindre LED1
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, HIGH);
delay(2000); // Attendre 2 secondes
}
// À la fin du clignotement, éteindre les deux LEDs
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
}
}
Résumé rapide de ce que fait ce programme :
• Quand tu appuies sur le bouton, le programme lance une séquence de 5 secondes.
• Pendant cette séquence, la LED 1 s’allume pendant 2 secondes, puis la LED 2 s’allume pendant 2 secondes, et ainsi de suite.
• Au bout des 5 secondes, tout s’éteint.
Branchement :
• Bouton : entre broche 2 et GND.
• LED 1 : broche 13 (avec résistance 220Ω entre la broche et la LED).
• LED 2 : broche 12 (pareil, avec résistance).
Veux-tu aussi une version sans delay(), un peu plus avancée (qui utilise millis() pour rendre le programme non bloquant) ?
Ça serait plus propre si tu comptes ajouter d’autres fonctions à ton robot plus tard ! 🔥🤖
Vous l'avez compris, avec peu de connaissance, o,n arrive a lui faire faire des choses sympa :-)
Utilisation de Copilot
Prompt : Je veux qu’en appuyant sur un bouton, cela allume une LED. J’ai une carte Arduino. Peux-tu me donner le code ?
const int buttonPin = 2; // Pin du bouton
const int ledPin = 13; // Pin de la LED
int buttonState = 0; // Variable pour lire l'état du bouton
void setup() {
pinMode(buttonPin, INPUT); // Définir le bouton comme entrée
pinMode(ledPin, OUTPUT); // Définir la LED comme sortie
}
void loop() {
buttonState = digitalRead(buttonPin); // Lire l'état du bouton
if (buttonState == HIGH) { // Si le bouton est appuyé
digitalWrite(ledPin, HIGH); // Allumer la LED
} else {
digitalWrite(ledPin, LOW); // Éteindre la LED
}
}
Ce code configure le bouton comme une entrée et la LED comme une sortie. Dans la boucle principale, il lit l'état du bouton et allume ou éteint la LED en conséquence.
N'hésite pas à me demander si tu as besoin de plus d'aide ou d'explications! 😊
On va lui demander quelques modifications :
Prompt : Je souhaite ajouter une deuxième LED qui s’allume en alternance avec la première. Le clignotement doit durer 5 secondes, chaque LED restant allumée pendant 2 secondes.
Réponse de Copilot :
D'accord! Voici un code modifié pour ajouter une deuxième LED qui clignote en alternance avec la première. Chaque LED restera allumée pendant 2 secondes, et le clignotement durera 5 secondes au total:
const int buttonPin = 2; // Pin du bouton
const int ledPin1 = 13; // Pin de la première LED
const int ledPin2 = 12; // Pin de la deuxième LED
int buttonState = 0; // Variable pour lire l'état du bouton
void setup() {
pinMode(buttonPin, INPUT); // Définir le bouton comme entrée
pinMode(ledPin1, OUTPUT); // Définir la première LED comme sortie
pinMode(ledPin2, OUTPUT); // Définir la deuxième LED comme sortie
}
void loop() {
buttonState = digitalRead(buttonPin); // Lire l'état du bouton
if (buttonState == HIGH) { // Si le bouton est appuyé
for (int i = 0; i < 2; i++) { // Répéter le clignotement deux fois (total 4 secondes)
digitalWrite(ledPin1, HIGH); // Allumer la première LED
delay(2000); // Attendre 2 secondes
digitalWrite(ledPin1, LOW); // Éteindre la première LED
digitalWrite(ledPin2, HIGH); // Allumer la deuxième LED
delay(2000); // Attendre 2 secondes
digitalWrite(ledPin2, LOW); // Éteindre la deuxième LED
}
} else {
digitalWrite(ledPin1, LOW); // Éteindre la première LED
digitalWrite(ledPin2, LOW); // Éteindre la deuxième LED
}
}
Ce code configure deux LEDs comme sorties et le bouton comme entrée. Lorsque le bouton est appuyé, les LEDs clignotent en alternance, chaque LED restant allumée pendant 2 secondes, pour un total de 4 secondes de clignotement. Si tu veux que le clignotement dure exactement 5 secondes, tu peux ajuster les délais ou ajouter une pause supplémentaire.
Si tu as des questions ou besoin de plus d'aide, n'hésite pas à demander! 😊
Conclusion
Sur des exemples simples, avec les memes consignes, les deux fonctionnent très bien. On notera toutefois que ChatGPT génère un code de meilleure qualité et propose une évolution pertinente en utilisant millis() pour la gestion du temps d’allumage des LEDs. ChatGPT a également eu la gentillesse de fournir une explication du câblage et du code.