Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Modifikator ponašanja djeteta bilježi koliko je puta vaše dijete upalo u nevolje (poznate i kao štrajkovi), a kada navrše tri godine, oglašava se zvučni signal i LCD ekran objavljuje da je uzemljen.
Korak 1: Pokrenite jednostavno: Dodajte dugme
Prvi korak u ovom projektu je jednostavan. Dodaj 1 dugme. U ovom koraku su vam potrebne 4 žice muški - muški, 1 220 otpornika i dugme.
- Priključite 5V na strani napajanja u pozitivni red na matičnoj ploči
-
Spojite GND na negativnu stranu ploče
- Umetnite dugme na matičnu ploču
-
Priključite napajanje na pozitivni red u donji lijevi dio tipke
- Uzemljite dugme pomoću otpornika u donjem desnom dijelu dugmeta na negativni red ploče.
- Spojite #13 na digitalnoj strani Arduina na gornju desnu stranu gumba.
Svojim kodom potvrdite da se dugme registruje:
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme povezano
int child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno)
int child1Strike = 0; // Koliko štrajkova ima dijete
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija petlje radi uvijek iznova void loop () {// čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Dugme je pritisnuto {Serial.println ("HIGH"); kašnjenje (5000); }
if (child1ButtonState == LOW)
{Serial.println ("LOW"); kašnjenje (5000); }}
Korak 2: Izmijenite kôd za registraciju pritiska tipki
Izmijenite kôd da biste registrirali dugme.
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme spojeno naint child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno) int child1PreviousState = 0; // Prethodno stanje dugmeta int child1Strike = 0;
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija petlje radi uvijek iznova void loop () {// čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Dugme je pritisnuto {child1Strike ++; Serial.println (child1Strike); kašnjenje (1000); }}
}
Zatim izmijenite kôd tako da dijete dobije 3 opomene, nakon čega će dobiti poruku da je osnovano:
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme povezano zaint1 child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno) int child1PreviousState = 0; int child1Strike = 0;
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija petlje radi uvijek iznova void loop () {// čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Dugme je pritisnuto {child1Strike ++; Serial.println (child1Strike);
if (child1Strike> = 3)
{Serial.println ("Dijete 1 je uzemljeno!"); } kašnjenje (3000); }}
}
Serijski monitor bi trebao izgledati kao na gornjoj slici.
Napomena: Pobrinite se da vam odgovara kašnjenje. Malo kašnjenje i registrirat će 1 pritisak na dugme kao više od jednog!
Korak 3: Dodajte onoliko dugmaca koliko imate djece
U ovom koraku jednostavno kopiramo posljednjih nekoliko koraka. Dodajte onoliko dugmića koliko i djece. U mom slučaju, dodajem četiri. Promijenite kôd digitalni pin na koji je dugme spojeno. U mom slučaju koristio sam pinove od 12 do 10 za dodavanje dugmadi. U slučaju da trebate podsjetiti, evo 1. koraka:
-
Priključite 5V na strani napajanja u pozitivni red na matičnoj ploči
- Spojite GND na negativnu stranu ploče
-
Umetnite tipku na ploču za napajanje. Spojite napajanje pozitivnog reda u donji lijevi dio tipke.
- Uzemljite dugme pomoću otpornika u donjem desnom dijelu dugmeta na negativni red ploče.
- Spojite (vaš pin broj) na digitalnoj strani Arduina na gornju desnu stranu gumba.
Također ćete morati izmijeniti kôd za rukovanje svim vašim gumbima. Imajte na umu da ako trebate paziti na žice koje ste koristili. Ne možete zajedno dodavati mala slova. Najbolje je deklarirati 1 kao objekt String.
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme povezano naint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno) 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;
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // funkcija petlje radi uvijek iznova void loop () {// čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Dugme je pritisnuto {child1Strike ++; Serial.println (String ("Dijete 1 ima:") + child1Strike + "štrajkovi");
if (child1Strike> = 3)
{Serial.println ("Dijete 1 je uzemljeno!"); } kašnjenje (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Dugme je pritisnuto {child2Strike ++; Serial.println (String ("Dijete 2 ima:") + child2Strike + "štrajkovi");
if (child2Strike> = 3)
{Serial.println ("Dijete 2 je uzemljeno!"); } kašnjenje (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Dugme je pritisnuto {child3Strike ++; Serial.println (String ("Dijete 3 ima:") + child3Strike + "štrajkovi");
if (child3Strike> = 3)
{Serial.println ("Dijete 3 je uzemljeno!"); } kašnjenje (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Dugme je pritisnuto {child4Strike ++; Serial.println (String ("Dijete 4 ima:") + child4Strike + "štrajkovi");
if (child4Strike> = 3)
{Serial.println ("Dijete 4 je uzemljeno!"); } kašnjenje (3000); }}}
Korak 4: Dodajte zujalicu
Hajde sada provjerite da li vaša djeca znaju da su utemeljena. Dodajmo zujalicu. Da biste povezali zujalicu, slijedite ove jednostavne korake.
- Dodajte zujalicu na svoju ploču, planirajte prostor jer se pojavljuje LCD ekran.
- Povežite Postive stranu (zujalica bi trebala imati + na pozitivnoj strani) na pin po vašem izboru. Uradio sam 9.
- Spojite drugu stranu na uzemljenu šinu vaše matične ploče.
Zatim izmijenite kôd da biste isključili zvučni signal kada dijete postane uzemljeno. Postoji nekoliko različitih načina kodiranja vašeg zujalice, ali meni se sviđa ton (ime zujalice, herc, trajanje) zbog njegove jednostavnosti. Primjer ovoga bi bio ton (zujalica, 4000, 300).
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme povezano uint2 child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno) 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 zujalica = 2;
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zujalica, OUTPUT); } // funkcija petlje radi uvijek iznova void loop () {// čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Dugme je pritisnuto {child1Strike ++; Serial.println (String ("Dijete 1 ima:") + child1Strike + "štrajkovi");
if (child1Strike> = 3)
{Serial.println ("Dijete 1 je uzemljeno!"); ton (zujalica, 5000, 500); // Šalje zvuk od 5 herca 5 milisekundi
}
kašnjenje (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Dugme je pritisnuto {child2Strike ++; Serial.println (String ("Dijete 2 ima:") + child2Strike + "štrajkovi");
if (child2Strike> = 3)
{Serial.println ("Dijete 2 je uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Dugme je pritisnuto {child3Strike ++; Serial.println (String ("Dijete 3 ima:") + child3Strike + "štrajkovi");
if (child3Strike> = 3)
{Serial.println ("Dijete 3 je uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Dugme je pritisnuto {child4Strike ++; Serial.println (String ("Dijete 4 ima:") + child4Strike + "štrajkovi");
if (child4Strike> = 3)
{Serial.println ("Dijete 4 je uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}}
Korak 5: Dodajte LCD ekran
Sada omogućuje LCD ekran za jasno i jednostavno čitanje.
- Prvo dodajte potenciometar na svoju ploču za upravljanje LCD ekranom. Pazite gdje ste ga stavili jer vam je vjerojatno već ponestalo prostora.
- Upotrijebite prednju lijevu stranu za povezivanje potenciometra na razvodnik
- Upotrijebite prednju desnu stranu za uzemljenje potenciometra.
- Stražnja strana će biti povezana sa LCD ekranom.
- Dodajte LCD ekran na matičnu ploču
- Uzemljite prvu iglu ekrana na šinu za uzemljenje
- Priključite drugi pin na razvodnik.
- Treći LCD pin ide na Pin 8 na Arduinu
- Četvrti LCD pin ide na Pin 7 na Arduinu
- Peti ide na Pin 6 na Arduinu
- Šesti pin ide na pin 5 na Arduinu
- Igle 7 do 10 na LCD ekranu su prazne
- Pin 11 ide na Pin 5 na Arduinu
- Pin 12 ide do uzemljene šine
- Pin 13 ide na Pin 4 na Arduinu
- Pin 14 ide sa zadnje strane potenciometra
- Pin 15 ide na Power rail
- Pin 16 ide do uzemljenja.
Sada ćete morati ažurirati kôd za korištenje LCD ekrana. Za to ćete koristiti biblioteku tekućih kristala. Pazite na izjave o LCD štampanju. Ne zaboravite očistiti ekran kada vam je potrebna nova poruka. Također ne zaboravite postaviti kursor kada želite koristiti dvije linije.
#include
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Postavlja LCD ekran
int child1ButtonPin = 13; // Ovo je pin na koji je naše dugme povezano sa int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Čita stanje dugmeta (uključeno/isključeno) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // Prethodno stanje dugmeta pritisnuto int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Koliko štrajkova dijete ima int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int zujalica = 9; // zujalica
// funkcija postavljanja pokreće se jednom kada pritisnete reset ili uključite ploču
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Dijete"); lcd.setCursor (0, 1); lcd.print ("Mijenjač ponašanja"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zujalica, OUTPUT); } // funkcija petlje radi uvijek iznova void loop () {lcd.setCursor (0, 0); // čita stanje dugmeta (uključeno ili isključeno) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Dugme je pritisnuto {lcd.clear (); child1Strike ++; Serial.println (String ("Dijete 1 ima:") + child1Strike + "štrajkovi"); lcd.print ("Dijete 1 ima:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Strikes!");
if (child1Strike> = 3)
{Serial.println ("Dijete 1 je uzemljeno!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Dijete 1 je"); lcd.setCursor (0, 1); lcd.print ("Uzemljeno!");
ton (zujalica, 5000, 500); // Šalje zvuk od 5 herca 5 milisekundi
}
kašnjenje (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Dugme je pritisnuto {child2Strike ++; Serial.println (String ("Dijete 2 ima:") + child2Strike + "štrajkovi"); lcd.print ("Dijete 2 ima:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Strikes!"); if (child2Strike> = 3) {Serial.println ("Dijete 2 je uzemljeno!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Dijete 2 je"); lcd.setCursor (0, 1); lcd.print ("Uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Dugme je pritisnuto {child3Strike ++; Serial.println (String ("Dijete 3 ima:") + child3Strike + "štrajkovi"); lcd.print ("Dijete 3 ima:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Strikes!"); if (child3Strike> = 3) {Serial.println ("Dijete 3 je uzemljeno!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Dijete 3 je"); lcd.setCursor (0, 1); lcd.print ("Uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Dugme je pritisnuto {child4Strike ++; Serial.println (String ("Dijete 4 ima:") + child4Strike + "štrajkovi"); lcd.print ("Dijete 4 ima:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Strikes!");
if (child4Strike> = 3)
{Serial.println ("Dijete 4 je uzemljeno!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Dijete 4 je"); lcd.setCursor (0, 1); lcd.print ("Uzemljeno!"); ton (zujalica, 5000, 500); } kašnjenje (3000); }}} I to je to, to je sve što vam je potrebno za izgradnju vlastitog Modifera ponašanja djeteta