Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Le modificateur de comportement de l'enfant enregistre le nombre de fois où votre enfant a eu des ennuis (c'est-à-dire des grèves) et lorsqu'il atteint trois ans, une sonnerie retentit et un écran LCD annonce qu'il est mis à la terre.
Étape 1: Commencer simplement: ajouter un bouton
La première étape de ce projet est simple. Ajouter 1 bouton. Dans cette étape, vous avez besoin de 4 fils mâles à mâles, d'une résistance 220 et d'un bouton-poussoir.
- Connectez le 5V du côté alimentation à la rangée positive de la planche à pain
-
Connectez le GND au côté négatif de la planche à pain
- Insérez le bouton-poussoir sur la planche à pain
-
Branchez l'alimentation sur la ligne positive à la partie inférieure gauche du bouton poussoir
- Mettez le bouton à la terre en utilisant une résistance dans la partie inférieure droite du bouton-poussoir sur la rangée négative de la planche à pain.
- Connectez #13 sur le côté numérique de l'Arduino en haut à droite du bouton.
Vérifiez avec votre code que le bouton s'enregistre:
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton-poussoir est connecté
int child1ButtonState = 0; // Lit l'état du bouton (on/off)
int child1Strike = 0; // Combien de coups l'enfant a fait
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { // lit l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState == HIGH)//Le bouton est enfoncé { Serial.println("HIGH"); retard (5000); }
if(child1ButtonState == LOW)
{ Serial.println("LOW"); retard (5000); } }
Étape 2: Modifier le code pour enregistrer les pressions sur les boutons
Modifiez le Code pour enregistrer une pression sur un bouton:
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton poussoir est connecté à int child1ButtonState = 0; // Lit l'état du bouton (on/off) int child1PreviousState = 0; // État du bouton précédent int child1Strike = 0;
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { // lit l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState != child1PreviousState) { if(child1ButtonState == HIGH)//Le bouton est enfoncé { child1Strike ++; Serial.println(child1Strike); retard(1000); } }
}
Ensuite, modifiez le code pour que l'enfant reçoive 3 avertissements, après quoi il recevra un message indiquant qu'il est puni:
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton poussoir est connecté à int child1ButtonState = 0; // Lit l'état du bouton (on/off) int child1PreviousState = 0; int child1Strike = 0;
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { // lit l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState != child1PreviousState) { if(child1ButtonState == HIGH)//Le bouton est enfoncé { child1Strike ++; Serial.println(child1Strike);
if(child1Strike >=3)
{ Serial.println("L'enfant 1 est mis à la terre !"); } délai(3000); } }
}
Le Serial Monitor devrait ressembler à l'image ci-dessus.
Remarque: Assurez-vous que vous êtes à l'aise avec le délai. Un peu de retard et il enregistrera 1 pression sur un bouton comme plus d'une!
Étape 3: ajoutez autant de boutons que vous avez d'enfants
Dans cette étape, nous copions simplement les deux dernières étapes. Ajoutez autant de boutons que vous le faites d'enfants. Dans mon cas, j'en rajoute quatre. Assurez-vous de changer votre code la broche numérique à laquelle le bouton est câblé. Dans mon cas, j'ai utilisé les broches 12 à 10 pour ajouter mes boutons. Au cas où vous auriez besoin d'un rappel, voici l'étape 1:
- Connectez le 5V du côté alimentation à la rangée positive de la planche à pain
-
Connectez le GND au côté négatif de la planche à pain
- Insérez le bouton-poussoir sur la planche à painConnectez l'alimentation sur la ligne positive à la partie inférieure gauche du bouton-poussoir
-
Mettez le bouton à la terre en utilisant une résistance dans la partie inférieure droite du bouton-poussoir sur la rangée négative de la planche à pain.
- Connectez (votre numéro de broche) sur le côté numérique de l'Arduino en haut à droite du bouton.
Vous devrez également modifier le code pour gérer tous vos boutons. Veuillez garder à l'esprit que si vous devez faire attention aux chaînes que vous avez utilisées. Vous ne pouvez pas ajouter de minuscules ensemble. Il est préférable de déclarer 1 en tant qu'objet String.
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton-poussoir est connecté toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lit l'état du bouton (on/off) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; int child2Strike = 0; int child3Strike = 0; int child4Strike = 0;
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { // lit l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Le bouton est enfoncé { child1Strike ++; Serial.println(String("Child 1 Has: ") + child1Strike + " strikes");
if(child1Strike >=3)
{ Serial.println("L'enfant 1 est mis à la terre !"); } délai(3000); } } if(child2ButtonState != child2PreviousState) { if(child2ButtonState == HIGH)//Le bouton est enfoncé { child2Strike ++; Serial.println(String("Child 2 has: ") + child2Strike + " strikes");
if(child2Strike >=3)
{ Serial.println("L'enfant 2 est bloqué !"); } délai(3000); } }
if(child3ButtonState != child3PreviousState)
{ if(child3ButtonState == HIGH)//Le bouton est enfoncé { child3Strike ++; Serial.println(String("L'enfant 3 a: ") + child3Strike + " strikes");
if(child3Strike >=3)
{ Serial.println("L'enfant 3 est bloqué !"); } délai(3000); } }
if(child4ButtonState != child4PreviousState)
{ if(child4ButtonState == HIGH)//Le bouton est enfoncé { child4Strike ++; Serial.println(String("Child 4 has: ") + child4Strike + " strikes");
if(child4Strike >=3)
{ Serial.println("L'enfant 4 est bloqué !"); } délai(3000); } } }
Étape 4: ajouter un buzzer
Maintenant, assurez-vous que vos enfants savent qu'ils sont ancrés. Ajoutons un buzzer. Pour connecter le buzzer, suivez ces étapes simples.
- Ajoutez un buzzer à votre maquette, prévoyez de l'espace puisqu'un écran LCD arrive.
- Connectez le côté positif (le buzzer doit avoir un + sur le côté positif) à la broche de votre choix. J'ai fait 9.
- Connectez l'autre côté au rail mis à la terre de votre maquette.
Ensuite, modifiez votre code pour désactiver la sonnerie lorsqu'un enfant est mis à la terre. Il existe plusieurs manières de coder votre buzzer, mais j'aime la tonalité (nom de la sonnerie, hertz, durée) pour sa simplicité. Un exemple de ceci serait la tonalité (buzzer, 4000, 300).
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton-poussoir est connecté toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lit l'état du bouton (on/off) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int buzzer = 2;
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); pinMode(buzzer, SORTIE); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { // lit l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Le bouton est enfoncé { child1Strike ++; Serial.println(String("Child 1 Has: ") + child1Strike + " strikes");
if(child1Strike >=3)
{ Serial.println("L'enfant 1 est mis à la terre !"); tonalité (buzzer, 5000, 500); // Envoie un son de 5 hertz pendant 5 millisecondes
}
retard(3000); } } if(child2ButtonState != child2PreviousState) { if(child2ButtonState == HIGH)//Le bouton est enfoncé { child2Strike ++; Serial.println(String("L'enfant 2 a: ") + child2Strike + " strikes");
if(child2Strike >=3)
{ Serial.println("L'enfant 2 est bloqué !"); tonalité (buzzer, 5000, 500); } délai(3000); } }
if(child3ButtonState != child3PreviousState)
{ if(child3ButtonState == HIGH)//Le bouton est enfoncé { child3Strike ++; Serial.println(String("L'enfant 3 a: ") + child3Strike + " strikes");
if(child3Strike >=3)
{ Serial.println("L'enfant 3 est bloqué !"); tonalité (buzzer, 5000, 500); } délai(3000); } }
if(child4ButtonState != child4PreviousState)
{ if(child4ButtonState == HIGH)//Le bouton est enfoncé { child4Strike ++; Serial.println(String("Child 4 has: ") + child4Strike + " strikes");
if(child4Strike >=3)
{ Serial.println("L'enfant 4 est bloqué !"); tonalité (buzzer, 5000, 500); } délai(3000); } } }
Étape 5: ajouter un écran LCD
Permet maintenant un écran LCD pour une lecture claire et facile.
- Tout d'abord, ajoutez un potentiomètre à votre maquette pour contrôler l'écran LCD. Faites attention à l'endroit où vous le placez car vous êtes probablement à court d'espace maintenant.
- Utilisez l'avant gauche pour connecter votre potentiomètre au rail d'alimentation
- Utilisez l'avant droit pour mettre à la terre votre potentiomètre.
- Le dos sera connecté à l'écran lcd.
- Ajoutez l'écran LCD à votre maquette
- Reliez la première broche de l'écran au rail de mise à la terre
- Câblez la deuxième broche au rail d'alimentation.
- La troisième broche LCD va à la broche 8 sur l'Arduino
- La quatrième broche LCD va à la broche 7 sur l'Arduino
- Le cinquième va à la broche 6 sur l'Arduino
- La sixième broche va à la broche 5 de l'Arduino
- Les broches 7 à 10 sur l'écran LCD sont vides
- La broche 11 va à la broche 5 sur l'Arduino
- La broche 12 va au rail mis à la terre
- La broche 13 va à la broche 4 sur l'Arduino
- La broche 14 va à l'arrière du potentiomètre
- La broche 15 va au rail d'alimentation
- La broche 16 va au rail au sol.
Maintenant, vous devrez mettre à jour votre code pour utiliser l'écran LCD. Pour cela vous utiliserez la bibliothèque Liquid Crystal. Faites attention à vos déclarations d'impression LCD. N'oubliez pas d'effacer l'écran lorsque vous avez besoin d'un nouveau message. N'oubliez pas non plus de positionner le curseur lorsque vous souhaitez utiliser deux lignes.
#comprendre
LiquidCrystal LCD (3, 4, 5, 6, 7, 8); //Définit l'écran LCD
int child1ButtonPin = 13;//C'est la broche à laquelle notre bouton-poussoir est connecté int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lit l'état du bouton (on/off) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // L'état précédent du bouton enfoncé int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; //Combien de frappes un enfant a int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int buzzer = 9; // le buzzer
// la fonction de configuration s'exécute une fois lorsque vous appuyez sur reset ou que vous mettez la carte sous tension
void setup() { Serial.begin(9600); lcd.begin (16, 2); lcd.print("L'enfant"); lcd.setCursor(0, 1); lcd.print("Modificateur de comportement"); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); pinMode(buzzer, SORTIE); } // la fonction de boucle s'exécute encore et encore pour toujours void loop() { lcd.setCursor(0, 0); //lire l'état du bouton (activé ou désactivé) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Le bouton est enfoncé { lcd.clear(); child1Strike ++; Serial.println(String("Child 1 Has: ") + child1Strike + " strikes"); lcd.print("L'enfant 1 a:"); lcd.setCursor(0, 1); lcd.print(child1Strike); lcd.print(" Grèves !");
if(child1Strike >=3)
{ Serial.println("L'enfant 1 est mis à la terre !"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("L'enfant 1 est"); lcd.setCursor(0, 1); lcd.print("Mise à la terre !");
tonalité (buzzer, 5000, 500); // Envoie un son de 5 hertz pendant 5 millisecondes
}
retard(3000); } } if(child2ButtonState != child2PreviousState) { lcd.clear(); if(child2ButtonState == HIGH)//Le bouton est enfoncé { child2Strike ++; Serial.println(String("Child 2 has: ") + child2Strike + " strikes"); lcd.print("L'enfant 2 a:"); lcd.setCursor(0, 1); lcd.print(child2Strike); lcd.print(" Grèves !"); if(child2Strike >=3) { Serial.println("Child 2 Is Grounded!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("L'enfant 2 est"); lcd.setCursor(0, 1); lcd.print("Mise à la terre !"); tonalité (buzzer, 5000, 500); } délai(3000); } }
if(child3ButtonState != child3PreviousState)
{ lcd.clear(); if(child3ButtonState == HIGH)//Le bouton est enfoncé { child3Strike ++; Serial.println(String("L'enfant 3 a: ") + child3Strike + " strikes"); lcd.print("L'enfant 3 a:"); lcd.setCursor(0, 1); lcd.print(child3Strike); lcd.print(" Grèves !"); if(child3Strike >=3) { Serial.println("L'enfant 3 est bloqué !"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("L'enfant 3 est"); lcd.setCursor(0, 1); lcd.print("Mise à la terre !"); tonalité (buzzer, 5000, 500); } délai(3000); } }
if(child4ButtonState != child4PreviousState)
{ lcd.clear(); if(child4ButtonState == HIGH)//Le bouton est enfoncé { child4Strike ++; Serial.println(String("L'enfant 4 a: ") + child4Strike + " strikes"); lcd.print("L'enfant 4 a:"); lcd.setCursor(0, 1); lcd.print(child4Strike); lcd.print(" Grèves !");
if(child4Strike >=3)
{ Serial.println("L'enfant 4 est bloqué !"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("L'enfant 4 est"); lcd.setCursor(0, 1); lcd.print("Mise à la terre !"); tonalité (buzzer, 5000, 500); } délai(3000); } } } Et c'est tout, c'est tout ce dont vous avez besoin pour créer votre propre modificateur de comportement d'enfant