Cuprins:
- Pasul 1: Începeți simplu: adăugați un buton
- Pasul 2: Modificați codul pentru a înregistra apăsările pe butoane
- Pasul 3: Adăugați câte butoane aveți copii
- Pasul 4: adăugați un buzzer
- Pasul 5: Adăugați un ecran LCD
Video: Modificator de comportament al copilului: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-02-01 14:42
Modificatorul comportamentului copilului înregistrează de câte ori copilul dumneavoastră a intrat în probleme (aka Strikes) și când ajung la trei, un buzzer se stinge și un ecran LCD anunță că sunt împământate.
Pasul 1: Începeți simplu: adăugați un buton
Primul pas în acest proiect este simplu. Adăugați 1 buton. În acest pas aveți nevoie de 4 fire de la Tată la Tată, 1 220 Resisitor și un buton.
- Conectați 5V pe partea de alimentare la rândul pozitiv de pe panou
-
Conectați GND la partea negativă a panoului
- Introduceți butonul pe tablă
-
Conectați alimentarea de pe rândul postiv la partea din stânga jos a butonului
- Împământați butonul folosind un rezistor în partea dreaptă jos a butonului, pe rândul negativ al panoului.
- Conectați numărul 13 pe partea digitală a Arduino în partea dreaptă sus a butonului.
Verificați cu codul dvs. că butonul se înregistrează:
int child1ButtonPin = 13; // Acesta este pinul la care este conectat butonul nostru
int child1ButtonState = 0; // Citeste starea butonului (on / off)
int child1Strike = 0; // Câte lovituri are copilul
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {// citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Butonul este apăsat {Serial.println ("HIGH"); întârziere (5000); }
if (child1ButtonState == LOW)
{Serial.println ("LOW"); întârziere (5000); }}
Pasul 2: Modificați codul pentru a înregistra apăsările pe butoane
Modificați codul pentru a înregistra un buton apăsați:
int child1ButtonPin = 13; // Acesta este pinul pe care butonul nostru este conectat la child1ButtonState = 0; // Citește starea butonului (on / off) int child1PreviousState = 0; // Starea butonului anterior int child1Strike = 0;
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {// citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Butonul este apăsat {child1Strike ++; Serial.println (child1Strike); întârziere (1000); }}
}
Apoi Modificați codul astfel încât copilul să primească 3 greve după care va primi un mesaj că este împământat:
int child1ButtonPin = 13; // Acesta este pinul pe care butonul nostru este conectat la child1ButtonState = 0; // Citește starea butonului (on / off) int child1PreviousState = 0; int child1Strike = 0;
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {// citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Butonul este apăsat {child1Strike ++; Serial.println (child1Strike);
if (child1Strike> = 3)
{Serial.println („Copilul 1 este întemeiat!”); } întârziere (3000); }}
}
Serial Moniter ar trebui să arate ca imaginea de mai sus.
Notă: Asigurați-vă că sunteți confortabil cu întârzierea. Într-o mică întârziere și va înregistra 1 buton apăsat ca mai mult decât unul!
Pasul 3: Adăugați câte butoane aveți copii
În acest pas, copiem pur și simplu ultimii pași. Adăugați la fel de multe butoane ca și copii. În cazul meu, adaug patru. Asigurați-vă că modificați codul PIN digital la care este conectat butonul. În cazul meu, am folosit pinii 12 până la 10 pentru a adăuga butoanele mele. În cazul în care trebuie să reamintim, iată pasul 1:
- Conectați 5V pe partea de alimentare la rândul pozitiv de pe panou
-
Conectați GND la partea negativă a panoului
- Introduceți butonul pe panoul de conectare Conectați alimentarea de pe rândul pozitiv la partea din stânga jos a butonului
-
Împământați butonul folosind un rezistor în partea dreaptă jos a butonului pe rândul negativ al panoului.
- Conectați-vă (numărul PIN) de pe partea digitală a Arduino la partea din dreapta sus a butonului.
De asemenea, va trebui să modificați codul pentru a gestiona toate butoanele. Rețineți că, dacă trebuie să fiți atenți la șirurile pe care le-ați folosit. Nu puteți adăuga la minuscule împreună. Este bine să declarați 1 ca obiect String.
int child1ButtonPin = 13; // Acesta este pinul pe care butonul nostru este conectat la child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Citeste starea butonului (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;
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {// citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Butonul este apăsat {child1Strike ++; Serial.println (String ("Copilul 1 are:") + child1Strike + "strike");
if (child1Strike> = 3)
{Serial.println („Copilul 1 este întemeiat!”); } întârziere (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Butonul este apăsat {child2Strike ++; Serial.println (String ("Copilul 2 are:") + child2Strike + "strike");
if (child2Strike> = 3)
{Serial.println („Copilul 2 este întemeiat!”); } întârziere (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Butonul este apăsat {child3Strike ++; Serial.println (String ("Copilul 3 are:") + child3Strike + "strike");
if (child3Strike> = 3)
{Serial.println („Copilul 3 este întemeiat!”); } întârziere (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Butonul este apăsat {child4Strike ++; Serial.println (String ("Copilul 4 are:") + child4Strike + "strike");
if (child4Strike> = 3)
{Serial.println („Copilul 4 este întemeiat!”); } întârziere (3000); }}}
Pasul 4: adăugați un buzzer
Acum, asigurați-vă că copiii dvs. știu că sunt întemeiați. Să adăugăm un buzzer. Pentru a conecta buzzerul, urmați acești pași simpli.
- Adăugați un buzzer la panoul dvs. de calcul, planificați spațiul, deoarece apare un ecran LCD.
- Conectați partea postivă (buzzerul ar trebui să aibă un + pe partea pozitivă) la pinul la alegere. Am făcut 9.
- Conectați cealaltă parte la șina împământată a panoului dvs.
Apoi, modificați codul pentru a dezactiva soneria atunci când un copil devine împământat. Există câteva modalități diferite de a codifica buzzer-ul dvs., dar îmi place tonul (buzzerName, hertz, durata) pentru simplitatea sa, deci un exemplu în acest sens ar fi tonul (buzzer, 4000, 300).
int child1ButtonPin = 13; // Acesta este pinul pe care butonul nostru este conectat la child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Citeste starea butonului (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;
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (buzzer, OUTPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {// citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Butonul este apăsat {child1Strike ++; Serial.println (String ("Copilul 1 are:") + child1Strike + "strike");
if (child1Strike> = 3)
{Serial.println („Copilul 1 este întemeiat!”); ton (buzzer, 5000, 500); // Trimite un sunet de 5 hertz timp de 5 milisecunde
}
întârziere (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Butonul este apăsat {child2Strike ++; Serial.println (String ("Copilul 2 are:") + child2Strike + "strike");
if (child2Strike> = 3)
{Serial.println („Copilul 2 este întemeiat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Butonul este apăsat {child3Strike ++; Serial.println (String ("Copilul 3 are:") + child3Strike + "strike");
if (child3Strike> = 3)
{Serial.println („Copilul 3 este întemeiat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Butonul este apăsat {child4Strike ++; Serial.println (String ("Copilul 4 are:") + child4Strike + "strike");
if (child4Strike> = 3)
{Serial.println („Copilul 4 este întemeiat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}}
Pasul 5: Adăugați un ecran LCD
Acum permite un ecran LCD pentru o citire clară și ușoară.
- Mai întâi, adăugați un potențiometru pe placa dvs. pentru a controla ecranul LCD. Aveți grijă unde l-ați pus, deoarece probabil că ați rămas fără spațiu până acum.
- Utilizați partea din stânga frontală pentru a conecta potențiometrul la șina de alimentare
- Folosiți dreapta din față pentru a vă masa potențiometrul.
- Partea din spate va fi conectată la ecranul LCD.
- Adăugați ecranul LCD la panoul dvs. de verificare
- Împământați primul știft de ecran pe șina de împământare
- Conectați al doilea pin la șina de alimentare.
- Al treilea pin LCD merge la Pinul 8 de pe Arduino
- Al patrulea pin LCD merge la Pinul 7 de pe Arduino
- Al cincilea merge la Pinul 6 de pe Arduino
- Al șaselea Pin merge la pinul 5 de pe Arduino
- Pinii de la 7 la 10 de pe ecranul LCD sunt goi
- Pinul 11 merge la Pinul 5 de pe Arduino
- Pinul 12 merge la șina împământată
- Pinul 13 merge la Pinul 4 de pe Arduino
- Pinul 14 merge în spatele potențiometrului
- Pinul 15 merge la șina de alimentare
- Pinul 16 merge la șina de la sol.
Acum va trebui să vă actualizați codul pentru a utiliza ecranul LCD. Pentru aceasta, veți folosi cristalul lichid. Aveți grijă la declarațiile dvs. de imprimare LCD. Nu uitați să ștergeți ecranul atunci când aveți nevoie de un mesaj nou. De asemenea, nu uitați să setați cursorul atunci când doriți să utilizați două linii.
#include
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Setează ecranul LCD
int child1ButtonPin = 13; // Acesta este pinul pe care butonul nostru este conectat la int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Citeste starea butonului (on / off) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // Starea anterioară a butonului apăsat în child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Câte greve are un copil int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int buzzer = 9; // Buzzer-ul
// funcția de configurare se execută o dată când apăsați reset sau alimentați placa
void setup () {Serial.begin (9600); lcd.inceput (16, 2); lcd.print („Copilul”); lcd.setCursor (0, 1); lcd.print ("Comportament Modifer"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (buzzer, OUTPUT); } // funcția buclă rulează iar și iar pentru totdeauna void loop () {lcd.setCursor (0, 0); // citiți starea butonului (pornit sau oprit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Butonul este apăsat {lcd.clear (); child1Strike ++; Serial.println (String ("Copilul 1 are:") + child1Strike + "strike"); lcd.print („Copilul 1 are:”); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print („Greve!”);
if (child1Strike> = 3)
{Serial.println („Copilul 1 este întemeiat!”); lcd.clear (); lcd.setCursor (0, 0); lcd.print („Copilul 1 este”); lcd.setCursor (0, 1); lcd.print („Împământat!”);
ton (buzzer, 5000, 500); // Trimite un sunet de 5 hertz timp de 5 milisecunde
}
întârziere (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Butonul este apăsat {child2Strike ++; Serial.println (String ("Copilul 2 are:") + child2Strike + "strike"); lcd.print ("Copilul 2 are:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print („Greve!”); if (child2Strike> = 3) {Serial.println ("Child 2 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print („Copilul 2 este”); lcd.setCursor (0, 1); lcd.print („Împământat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Butonul este apăsat {child3Strike ++; Serial.println (String ("Copilul 3 are:") + child3Strike + "strike"); lcd.print ("Copilul 3 are:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print („Greve!”); if (child3Strike> = 3) {Serial.println ("Child 3 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print („Copilul 3 este”); lcd.setCursor (0, 1); lcd.print („Împământat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Butonul este apăsat {child4Strike ++; Serial.println (String ("Copilul 4 are:") + child4Strike + "strike"); lcd.print ("Copilul 4 are:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print („Greve!”);
if (child4Strike> = 3)
{Serial.println („Copilul 4 este întemeiat!”); lcd.clear (); lcd.setCursor (0, 0); lcd.print („Copilul 4 este”); lcd.setCursor (0, 1); lcd.print („Împământat!”); ton (buzzer, 5000, 500); } întârziere (3000); }}} Și asta este, asta este tot ce aveți nevoie pentru a vă construi propriul Modifer de comportament pentru copii
Recomandat:
Modificator dicoptic care exclude alternativ transmisia stereoscopică 32 [STM32F103C8T6 + STMAV340 VGA Superimposer]: 6 pași
Modificator alternativ dicoptic de excludere a transmisiei stereoscopice 32 [STM32F103C8T6 + STMAV340 VGA Superimposer]: De ceva timp lucrez la un succesor al AODMoST original. Dispozitivul nou utilizează un microcontroler pe 32 de biți mai rapid și mai bun și un comutator video analogic mai rapid. Permite AODMoST 32 să lucreze cu rezoluții mai mari și să implementeze noi funcționale
Modificator dicoptic care exclude alternativ transmisia stereoscopică [ATmega328P + HEF4053B VGA Superimposer]: 7 pași
Modificator dicoptic de ocluzie alternativă a transmisiei stereoscopice [ATmega328P + HEF4053B VGA Superimposer]: După experimentele mele cu ochelari cu cristale lichide folosite pentru a ocluda ochii (aici și colo), am decis să construiesc ceva care este puțin mai sofisticat și, de asemenea, nu forțează utilizatorul să poarte PCB pe frunte (uneori oamenii se pot comporta
Quad-ul pirateriei copilului într-un autovehicul, urmărirea liniei și detectarea obstacolelor vehiculului: 4 pași
Quad-ul Kid's Hacking într-un autovehicul, urmărirea liniei și detectarea obstacolelor vehiculului. În instructable-ul de astăzi, vom transforma un 1000Watt (Da, știu foarte mult!) Quad-ul electric Kid Kid într-un vehicul auto-conducător, urmărirea liniei și evitarea obstacolelor! Videoclip demonstrativ: https: //youtu.be/bVIsolkEP1k Pentru acest proiect vom avea nevoie de următoarele materiale
Primul ceas al copilului - cu temporizator luminos: 16 pași (cu imagini)
Primul ceas al copilului - cu temporizator luminos: Acest ghid vă arată cum să faceți „fețe” de ceas interschimbabile - care pot conține imagini ale copilului dvs., fotografii de familie / animale de companie - sau orice altceva - pe care ați crezut că ar fi frumos să le schimbați periodic. Pur și simplu fixați perspexul clar peste ar
Cum să faci să apară zânele la petrecerea de ziua copilului tău !: 4 pași
Cum să faci să apară zânele la petrecerea de ziua copilului tău !: Fiica mea care va avea în curând 8 ani și-a dorit o zi de naștere cu temă de zână, așa că am decis să o fac una extra specială. Am creat un efect foarte simplu care i-a făcut pe toți participanții la petrecere să creadă că zânele adevărate și-au făcut apariția doar pentru ei