Taula de continguts:
- Pas 1: Inici simple: afegiu un botó
- Pas 2: Modifiqueu el codi per premer els botons de registre
- Pas 3: afegiu tants botons com tingueu fills
- Pas 4: afegiu un buzzer
- Pas 5: afegiu una pantalla LCD
Vídeo: Modificador de comportament infantil: 5 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-02-01 14:39
El modificador de comportament infantil registra quantes vegades el vostre fill ha tingut problemes (també coneguts com Strikes) i, quan arriba als tres, s’activa un timbre i una pantalla lcd anuncia que està connectada a terra.
Pas 1: Inici simple: afegiu un botó
El primer pas d’aquest projecte és senzill. Afegeix 1 botó. En aquest pas necessiteu 4 cables masculins a masculins, 1 220 Resisitor i un polsador.
- Connecteu el 5V del costat de l'alimentació a la fila positiva de la taula de treball
-
Connecteu el GND al costat negatiu de la taula de treball
- Inseriu el polsador a la taula de suport
-
Connecteu l’alimentació de la fila postiva a la part inferior esquerra del polsador
- Posar a terra el botó mitjançant una resistència a la part inferior dreta del polsador a la fila negativa de la placa.
- Connecteu el número 13 al costat digital de l'Arduino a la part superior dreta del botó.
Verifiqueu amb el vostre codi que el botó s'està registrant:
int child1ButtonPin = 13; // Aquest és el pin al qual està connectat el nostre polsador
int child1ButtonState = 0; // Llegeix l'estat del botó (activat / desactivat)
int child1Strike = 0; // Quantes vagues té el nen
// la funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // la funció de bucle s'executa una i altra vegada per sempre bucle buit () {// llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Es prem el botó {Serial.println ("HIGH"); retard (5000); }
if (child1ButtonState == BAIX)
{Serial.println ("BAIX"); retard (5000); }}
Pas 2: Modifiqueu el codi per premer els botons de registre
Modifiqueu el codi per registrar un botó premeu:
int child1ButtonPin = 13; // Aquest és el pin que el nostre botó està connectat a child1ButtonState = 0; // Llegeix l’estat del botó (activat / desactivat) int child1PreviousState = 0; // Estat del botó anterior int child1Strike = 0;
// la funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // la funció de bucle s'executa una i altra vegada per sempre bucle buit () {// llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Es prem el botó {child1Strike ++; Serial.println (child1Strike); retard (1000); }}
}
A continuació, modifiqueu el codi perquè el nen rebi 3 tocs d'atenció després dels quals rebrà un missatge que indica que està connectat a terra:
int child1ButtonPin = 13; // Aquest és el pin que el nostre botó està connectat a child1ButtonState = 0; // Llegeix l’estat del botó (activat / desactivat) int child1PreviousState = 0; int child1Strike = 0;
// la funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // la funció de bucle s'executa una i altra vegada per sempre void loop () {// llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Es prem el botó {child1Strike ++; Serial.println (child1Strike);
if (child1Strike> = 3)
{Serial.println ("El nen 1 està a terra!"); } retard (3000); }}
}
El monitoreu en sèrie hauria de ser semblant a la imatge superior.
Nota: assegureu-vos que esteu còmode amb el retard. Amb una mica de retard i es registrarà 1 botó de prémer com més d'un!
Pas 3: afegiu tants botons com tingueu fills
En aquest pas, simplement copiem els darrers dos passos. Afegiu tants botons com nens. En el meu cas, n’afegeixo quatre. Assegureu-vos de canviar el codi pel pin digital al qual està connectat el botó. En el meu cas, he fet servir els pins del 12 al 10 per afegir els meus botons. En cas que necessiteu recordar-ho, aquí teniu el pas 1:
- Connecteu el 5V del costat de l'alimentació a la fila positiva de la taula de treball
-
Connecteu el GND al costat negatiu de la taula de treball
- Inseriu el polsador a la placa de connexió Connecteu l’alimentació de la fila postiva a la part inferior esquerra del polsador
-
Posar a terra el botó mitjançant una resistència a la part inferior dreta del polsador a la fila negativa de la taula.
- Connecteu (el vostre número de pin) al costat digital de l'Arduino a la part superior dreta del botó.
També haureu de modificar el codi per gestionar tots els vostres botons. Tingueu en compte que si heu de tenir cura de les cadenes que heu utilitzat. No es poden afegir junts a minúscules. És millor declarar 1 com a objecte de cadena.
int child1ButtonPin = 13; // Aquest és el pin que el nostre botó està connectat a child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Llegeix l’estat del botó (activat / desactivat) 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 funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // la funció de bucle s'executa una i altra vegada per sempre bucle buit () {// llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = DigitalRead (child2ButtonPin);
child3ButtonState = DigitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Es prem el botó {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strikes");
if (child1Strike> = 3)
{Serial.println ("El nen 1 està a terra!"); } retard (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Es prem el botó {child2Strike ++; Serial.println (String ("El nen 2 té:") + child2Strike + "strike");
if (child2Strike> = 3)
{Serial.println ("Child 2 Is Grounded!"); } retard (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Es prem el botó {child3Strike ++; Serial.println (Cadena ("El nen 3 té:") + child3Strike + "strikes");
if (child3Strike> = 3)
{Serial.println ("El nen 3 està a terra!"); } retard (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Es prem el botó {child4Strike ++; Serial.println (String ("Child 4 has:") + child4Strike + "strike");
if (child4Strike> = 3)
{Serial.println ("Child 4 Is Grounded!"); } retard (3000); }}}
Pas 4: afegiu un buzzer
Ara assegureu-vos que els vostres fills sàpiguen que estan connectats a terra. Afegim un brunzidor. Per connectar el brunzidor, seguiu aquests senzills passos.
- Afegiu un buzzer a la vostra taula de treball, planifiqueu l’espai ja que apareix una pantalla LCD.
- Connecteu el costat positiu (el brunzidor hauria de tenir un + al costat positiu) al pin que vulgueu. N’he fet 9.
- Connecteu l’altre costat a la barana de terra de la vostra taula.
A continuació, modifiqueu el codi per desactivar el brunzidor quan un fill es posi a terra. Hi ha un parell de maneres diferents de codificar el vostre brunzidor, però m'agrada el to (buzzerName, hertz, durada) per la seva simplicitat. Per tant, un exemple d'això seria el to (buzzer, 4000, 300).
int child1ButtonPin = 13; // Aquest és el pin que el nostre botó està connectat a child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Llegeix l’estat del botó (activat / desactivat) 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 funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (buzzer, OUTPUT); } // la funció de bucle s'executa una i altra vegada per sempre void loop () {// llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = DigitalRead (child2ButtonPin);
child3ButtonState = DigitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Es prem el botó {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strike");
if (child1Strike> = 3)
{Serial.println ("El nen 1 està a terra!"); to (timbre, 5000, 500); // Envia un so de 5 Hz durant 5 mil·lisegons
}
retard (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Es prem el botó {child2Strike ++; Serial.println (Cadena ("El nen 2 té:") + child2Strike + "strike");
if (child2Strike> = 3)
{Serial.println ("Child 2 Is Grounded!"); to (timbre, 5000, 500); } retard (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Es prem el botó {child3Strike ++; Serial.println (Cadena ("El nen 3 té:") + child3Strike + "strikes");
if (child3Strike> = 3)
{Serial.println ("El nen 3 està a terra!"); to (timbre, 5000, 500); } retard (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Es prem el botó {child4Strike ++; Serial.println (Cadena ("El nen 4 té:") + child4Strike + "strikes");
if (child4Strike> = 3)
{Serial.println ("Child 4 Is Grounded!"); to (timbre, 5000, 500); } retard (3000); }}}
Pas 5: afegiu una pantalla LCD
Ara permet una pantalla LCD per a una lectura clara i senzilla.
- Primer, afegiu un potenciòmetre a la vostra taula de control per controlar la pantalla lcd. Aneu amb compte d'on el poseu, ja que probablement us quedareu sense espai.
- Utilitzeu la part davantera esquerra per connectar el potenciòmetre al carril de potència
- Utilitzeu la part davantera dreta per connectar a terra el potenciòmetre.
- La part posterior es connectarà a la pantalla lcd.
- Afegiu la pantalla LCD a la vostra taula de treball
- Posar a terra el primer passador de pantalla al rail de connexió a terra
- Connecteu el segon passador al rail d'alimentació.
- El tercer pin LCD passa al pin 8 de l’Arduino
- El quart pin LCD va al pin 7 de l'Arduino
- El cinquè va al Pin 6 de l'Arduino
- El sisè Pin passa al Pin 5 de l'Arduino
- Els pins del 7 al 10 de la pantalla LCD estan buits
- El pin 11 va al pin 5 de l’Arduino
- El passador 12 va al rail de terra
- El pin 13 va al pin 4 de l’Arduino
- El pin 14 va a la part posterior del potenciòmetre
- El pin 15 va al carril Power
- El pin 16 va al rail terrestre.
Ara haurà d’actualitzar el codi per utilitzar la pantalla LCD. Per a això, faràs servir el cristal líquid lliure. Aneu amb compte amb les declaracions d'impressió LCD. Recordeu esborrar la pantalla quan necessiteu un missatge nou. Recordeu també d’establir el cursor quan vulgueu utilitzar dues línies.
#incloure
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Estableix la pantalla LCD
int child1ButtonPin = 13; // Aquest és el pin que el nostre botó està connectat a int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Llegeix l’estat del botó (activat / desactivat) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // L'estat anterior del botó premut int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Quantes vagues té un nen int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int buzzer = 9; // el brunzidor
// la funció de configuració s'executa una vegada quan premeu reiniciar o encendre el tauler
configuració nul·la () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("El nen"); lcd.setCursor (0, 1); lcd.print ("Modificador de comportament"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (buzzer, OUTPUT); } // la funció de bucle s'executa una i altra vegada per sempre void loop () {lcd.setCursor (0, 0); // llegir l'estat del botó (activat o desactivat) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = DigitalRead (child2ButtonPin);
child3ButtonState = DigitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Es prem el botó {lcd.clear (); child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strike"); lcd.print ("El nen 1 té:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Vaga!");
if (child1Strike> = 3)
{Serial.println ("El nen 1 està a terra!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("El nen 1 és"); lcd.setCursor (0, 1); lcd.print ("A terra!");
to (timbre, 5000, 500); // Envia un so de 5 Hz durant 5 mil·lisegons
}
retard (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Es prem el botó {child2Strike ++; Serial.println (Cadena ("El nen 2 té:") + child2Strike + "strike"); lcd.print ("El nen 2 té:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Vaga!"); if (child2Strike> = 3) {Serial.println ("Child 2 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("El nen 2 és"); lcd.setCursor (0, 1); lcd.print ("A terra!"); to (timbre, 5000, 500); } retard (3000); }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Es prem el botó {child3Strike ++; Serial.println (Cadena ("El nen 3 té:") + child3Strike + "strikes"); lcd.print ("El nen 3 té:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Vaga!"); if (child3Strike> = 3) {Serial.println ("Child 3 is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("El nen 3 és"); lcd.setCursor (0, 1); lcd.print ("A terra!"); to (timbre, 5000, 500); } retard (3000); }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Es prem el botó {child4Strike ++; Serial.println (String ("Child 4 has:") + child4Strike + "strike"); lcd.print ("El nen 4 té:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Vaga!");
if (child4Strike> = 3)
{Serial.println ("Child 4 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("El nen 4 és"); lcd.setCursor (0, 1); lcd.print ("A terra!"); to (timbre, 5000, 500); } retard (3000); }}} I això és tot, això és tot el que necessiteu per crear el vostre propi Modifer de comportament infantil
Recomanat:
No fa pipí ara, dispositiu d’ajust del comportament de les mascotes que impedeix que els gats facin pipí a casa: 4 passos
No Pee Now, dispositiu d’ajust del comportament de les mascotes que impedeix que els gats facin pipí a casa: em va molestar tant el meu gatet que li agrada fer pipí al meu llit, vaig comprovar tot el que necessita i també la vaig portar al veterinari. Després d’haver resolt tot el que puc pensar i escoltar la paraula del metge, m’adono que només té un mal comportament. Així que
Quadriculació infantil amb pirateig automàtic, seguiment de línia i vehicle de detecció d’obstacles: 4 passos
Quad de pirateria infantil per a un vehicle de conducció autònoma, seguiment de línies i detecció d’obstacles. A l’instructible d’avui convertirem un quadricular de 1000 watts (sí que ho sé!) Elèctric per a nens quadres en un vehicle de conducció automàtica, seguiment de línia i que evita obstacles! Vídeo de demostració: https: //youtu.be/bVIsolkEP1k Per a aquest projecte necessitarem els següents materials
Rellotge d'entrenament del son infantil: 6 passos (amb imatges)
Rellotge per a la formació del son infantil: necessitava un rellotge per ajudar els meus bessons de 4 anys a aprendre a dormir una mica més (ja en tinc prou amb haver de despertar-me a les 5:30 del matí dels dissabtes), però no poden temps de lectura encara. Després de navegar per uns quants articles en un centre comercial molt popular
Caixa de música MP3 infantil: 6 passos (amb imatges)
Kids MP3 Music Box: Quan buscava nous projectes de bricolatge sobre arduino, vaig trobar algunes bones idees sobre reproductors MP3 basats en RFID per a nens. I hi ha una gran caixa de joguines professional al mercat: aquests nois manen. Van fer un gran negoci amb la seva idea intel·ligent. Comprova
Cuina infantil que diu BEEP: 7 passos (amb imatges)
Cuina infantil que diu BEEP: La meva filla de dos anys va tenir una petita petició pel seu tercer aniversari. Volia una cuina petita que digués Beep. "Vols un què?" va ser la meva resposta. "Una cuina que diu pit, igual que la cuina de les mares!", Va dir … Per tant, aquesta va ser la inspiració (jo