Kazalo:
- 1. korak: Začnite preprosto: dodajte gumb
- 2. korak: Spremenite kodo za registracijo pritiskov gumbov
- 3. korak: Dodajte toliko gumbov, kot jih imate
- 4. korak: Dodajte zvočni signal
- 5. korak: Dodajte LCD zaslon
Video: Modifikator vedenja otrok: 5 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-02-01 14:42
Modifikator vedenja otrok zabeleži, kolikokrat je vaš otrok imel težave (aka Strikes), in ko dosežejo tri, se oglasi zvočni signal in LCD zaslon sporoči, da so ozemljeni.
1. korak: Začnite preprosto: dodajte gumb
Prvi korak v tem projektu je preprost. Dodaj 1 gumb. V tem koraku potrebujete 4 moške do moške žice, 1 220 uporov in pritisni gumb.
- Priključite 5V na strani napajanja v pozitivno vrstico na plošči
-
GND priključite na negativno stran plošče
- Gumb vstavite na ploščo
-
Napajalno vrstico priključite na spodnji levi del potisnega gumba
- Gumb ozemljite z uporom v spodnjem desnem delu potisnega gumba do negativne vrstice plošče.
- Priključite #13 na digitalni strani Arduina na zgornjo desno stran gumba.
S kodo preverite, ali se gumb registrira:
int child1ButtonPin = 13; // To je pin, na katerega je povezan naš potisni gumb
int child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop)
int child1Strike = 0; // Koliko stavk ima otrok
// nastavitvena funkcija se zažene enkrat, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija zanke se vedno znova zažene void loop () {// prebere stanje gumba (vklopljeno ali izklopljeno) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Gumb je pritisnjen {Serial.println ("HIGH"); zamuda (5000); }
če (child1ButtonState == LOW)
{Serial.println ("LOW"); zamuda (5000); }}
2. korak: Spremenite kodo za registracijo pritiskov gumbov
Spremenite kodo, da registrirate gumb:
int child1ButtonPin = 13; // To je pin, ki ga je naš potisni gumb priključil naint child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop) int child1PreviousState = 0; // Prejšnje stanje gumba int child1Strike = 0;
// nastavitvena funkcija se zažene enkrat, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija zanke se vedno znova zažene void loop () {// prebere stanje gumba (vklop ali izklop) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Gumb je pritisnjen {child1Strike ++; Serial.println (child1Strike); zamuda (1000); }}
}
Nato spremenite kodo, tako da bo otrok dobil 3 opomine, nato pa bo prejel sporočilo, da je utemeljen:
int child1ButtonPin = 13; // To je pin, ki ga je naš potisni gumb priključil naint child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop) int child1PreviousState = 0; int child1Strike = 0;
// nastavitvena funkcija se zažene enkrat, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // funkcija zanke se vedno znova zažene void loop () {// prebere stanje gumba (vklop ali izklop) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Gumb je pritisnjen {child1Strike ++; Serial.println (child1Strike);
če (child1Strike> = 3)
{Serial.println ("Otrok 1 je ozemljen!"); } zakasnitev (3000); }}
}
Serijski monitor mora izgledati kot zgornja slika.
Opomba: Poskrbite, da vam zamuda ne ustreza. Malo zamude in registriral bo 1 pritisk gumba kot več kot en!
3. korak: Dodajte toliko gumbov, kot jih imate
V tem koraku preprosto kopiramo zadnjih nekaj korakov. Dodajte toliko gumbov, kot jih dodate otrokom. V mojem primeru dodam štiri. Ne pozabite spremeniti svoje kode na digitalni pin, na katerega je priklopljen gumb. V mojem primeru sem za dodajanje gumbov uporabil zatiče od 12 do 10. Če vas je treba opomniti, je 1. korak:
-
Priključite 5V na strani napajanja v pozitivno vrstico na plošči
- GND priključite na negativno stran plošče
-
Vstavite gumb na ploščo Priključite napajanje pozitivne vrstice na spodnji levi del potisnega gumba
- Gumb ozemljite z uporom v spodnjem desnem delu potisnega gumba do negativne vrstice plošče.
- Povežite (vaš PIN) na digitalni strani Arduina z zgornjo desno stran gumba.
Prav tako boste morali spremeniti kodo, da bo upravljala vse gumbe. Upoštevajte, da morate biti previdni pri nizih, ki ste jih uporabljali. Ne morete skupaj dodajati malih črk. Najbolje je, da 1 označite kot objekt String.
int child1ButtonPin = 13; // To je pin, ki ga naš potisni gumb poveže s toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop) 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;
// nastavitvena funkcija se enkrat zažene, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // funkcija zanke se vedno znova zažene void loop () {// prebere stanje gumba (vklopljeno ali izklopljeno) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalno branje (child2ButtonPin);
child3ButtonState = digitalno branje (child3ButtonPin);
child4ButtonState = digitalno branje (child4ButtonPin);
if (otrok1ButtonState! = otrok1PreviousState)
{if (child1ButtonState == HIGH) // Gumb je pritisnjen {child1Strike ++; Serial.println (String ("Otrok 1 ima:") + child1Strike + "stavke");
če (child1Strike> = 3)
{Serial.println ("Otrok 1 je ozemljen!"); } zakasnitev (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Gumb je pritisnjen {child2Strike ++; Serial.println (String ("Otrok 2 ima:") + child2Strike + "stavke");
če (child2Strike> = 3)
{Serial.println ("Otrok 2 je ozemljen!"); } zakasnitev (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Gumb je pritisnjen {child3Strike ++; Serial.println (String ("Otrok 3 ima:") + child3Strike + "stavke");
če (child3Strike> = 3)
{Serial.println ("Otrok 3 je ozemljen!"); } zakasnitev (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Gumb je pritisnjen {child4Strike ++; Serial.println (String ("Otrok 4 ima:") + child4Strike + "stavke");
če (child4Strike> = 3)
{Serial.println ("Otrok 4 je ozemljen!"); } zakasnitev (3000); }}}
4. korak: Dodajte zvočni signal
Zdaj pa poskrbimo, da bodo vaši otroci vedeli, da so prizemljeni. Dodamo zvočni signal. Če želite povezati zvočni signal, sledite tem preprostim korakom.
- Na mizo dodajte zvočni signal, načrtujte prostor, saj se prikaže LCD zaslon.
- Priključite stran Postive (zvočni signal mora imeti + na pozitivni strani) na izbrani pin. Jaz sem naredil 9.
- Priključite drugo stran na ozemljeno tirnico vaše plošče.
Nato spremenite kodo, da izklopite zvočni signal, ko se otrok ozemlji. Obstaja nekaj različnih načinov kodiranja vašega brenčalnika, vendar mi je všeč ton (buzzerName, herc, trajanje) zaradi njegove preprostosti. Primer tega bi bil lahko ton (brenčalo, 4000, 300).
int child1ButtonPin = 13; // To je pin, ki ga naš potisni gumb poveže s toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop) 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; zvočni signal const int = 2;
// nastavitvena funkcija se zažene enkrat, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zvočni signal, OUTPUT); } // funkcija zanke se vedno znova zažene void loop () {// prebere stanje gumba (vklop ali izklop) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalno branje (child2ButtonPin);
child3ButtonState = digitalno branje (child3ButtonPin);
child4ButtonState = digitalno branje (child4ButtonPin);
if (otrok1ButtonState! = otrok1PreviousState)
{if (child1ButtonState == HIGH) // Gumb je pritisnjen {child1Strike ++; Serial.println (String ("Otrok 1 ima:") + child1Strike + "stavke");
če (child1Strike> = 3)
{Serial.println ("Otrok 1 je ozemljen!"); ton (zvonec, 5000, 500); // Pošlje 5 hercev zvok za 5 milisekund
}
zamuda (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Gumb je pritisnjen {child2Strike ++; Serial.println (String ("Otrok 2 ima:") + child2Strike + "stavke");
če (child2Strike> = 3)
{Serial.println ("Otrok 2 je ozemljen!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Gumb je pritisnjen {child3Strike ++; Serial.println (String ("Otrok 3 ima:") + child3Strike + "stavke");
če (child3Strike> = 3)
{Serial.println ("Otrok 3 je ozemljen!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Gumb je pritisnjen {child4Strike ++; Serial.println (String ("Otrok 4 ima:") + child4Strike + "stavke");
če (child4Strike> = 3)
{Serial.println ("Otrok 4 je ozemljen!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}}
5. korak: Dodajte LCD zaslon
Zdaj omogoča LCD zaslon za jasno in enostavno branje.
- Najprej na nadzorno ploščo dodajte potenciometer za nadzor LCD zaslona. Bodite previdni, kam ga postavite, saj vam verjetno že zmanjka prostora.
- S sprednjo levo priključite potenciometer na napajalno tirnico
- S sprednjo desno stranjo ozemljite potenciometer.
- Hrbtna stran bo povezana z LCD zaslonom.
- Dodajte LCD zaslon na ploščo
- Prvi zatič zaslona ozemljite na ozemljitveno tirnico
- Drugi zatič priključite na napajalno tirnico.
- Tretji zatič LCD pride do Pin 8 na Arduinu
- Četrti zatič LCD gre na Pin 7 na Arduinu
- Peti gre na Pin 6 na Arduinu
- Šesti pin gre na pin 5 na Arduinu
- Zatiči od 7 do 10 na LCD zaslonu so prazni
- Pin 11 gre na Pin 5 na Arduinu
- Pin 12 gre na ozemljeno tirnico
- Pin 13 gre na Pin 4 na Arduinu
- Pin 14 gre na zadnjo stran potenciometra
- Pin 15 gre na Power rail
- Pin 16 gre na zemeljsko tirnico.
Zdaj boste morali za uporabo LCD zaslona posodobiti kodo. Za to boste uporabili knjižnični tekoči kristal. Bodite previdni pri izjavah o tiskanju na LCD. Ne pozabite počistiti zaslona, ko potrebujete novo sporočilo. Ne pozabite tudi nastaviti kurzorja, če želite uporabiti dve vrstici.
#vključi
LCD tekoči kristal (3, 4, 5, 6, 7, 8); // Nastavi LCD zaslon
int child1ButtonPin = 13; // To je pin, ki ga je naš potisni gumb priključil na int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Prebere stanje gumba (vklop/izklop) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // Prejšnje stanje gumba pritisnjenega int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Koliko stavk ima otrok int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; zvočni signal const int = 9; // zvočni signal
// nastavitvena funkcija se enkrat zažene, ko pritisnete reset ali vklopite ploščo
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Otrok"); lcd.setCursor (0, 1); lcd.print ("Sprememba vedenja"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zvočni signal, OUTPUT); } // funkcija zanke se vedno znova izvaja za vedno void loop () {lcd.setCursor (0, 0); // preberemo stanje gumba (vklopljeno ali izklopljeno) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalno branje (child2ButtonPin);
child3ButtonState = digitalno branje (child3ButtonPin);
child4ButtonState = digitalno branje (child4ButtonPin);
if (otrok1ButtonState! = otrok1PreviousState)
{if (child1ButtonState == HIGH) // Gumb je pritisnjen {lcd.clear (); child1Strike ++; Serial.println (String ("Otrok 1 ima:") + child1Strike + "stavke"); lcd.print ("Otrok 1 ima:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Stavke!");
če (child1Strike> = 3)
{Serial.println ("Otrok 1 je ozemljen!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Otrok 1 je"); lcd.setCursor (0, 1); lcd.print ("Ozemljeno!");
ton (zvonec, 5000, 500); // Pošlje 5 hercev zvok za 5 milisekund
}
zamuda (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Gumb je pritisnjen {child2Strike ++; Serial.println (String ("Otrok 2 ima:") + child2Strike + "stavke"); lcd.print ("Otrok 2 ima:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Stavke!"); if (child2Strike> = 3) {Serial.println ("Otrok 2 je ozemljen!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Otrok 2 je"); lcd.setCursor (0, 1); lcd.print ("Ozemljeno!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Gumb je pritisnjen {child3Strike ++; Serial.println (String ("Otrok 3 ima:") + child3Strike + "stavke"); lcd.print ("Otrok 3 ima:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Stavke!"); if (child3Strike> = 3) {Serial.println ("Otrok 3 je ozemljen!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Otrok 3 je"); lcd.setCursor (0, 1); lcd.print ("Ozemljeno!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Gumb je pritisnjen {child4Strike ++; Serial.println (String ("Otrok 4 ima:") + child4Strike + "stavke"); lcd.print ("Otrok 4 ima:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Stavke!");
če (child4Strike> = 3)
{Serial.println ("Otrok 4 je ozemljen!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Otrok 4 je"); lcd.setCursor (0, 1); lcd.print ("Ozemljeno!"); ton (zvonec, 5000, 500); } zakasnitev (3000); }}} In to je to, vse, kar potrebujete za izgradnjo lastnega modifikatorja vedenja otrok
Priporočena:
Ura RGB za poučevanje otrok o času: 4 koraki
RGB ura za poučevanje otrok o času: Sinoči sem se domislila, kako svojim petletnikom pomagati, da dobijo občutek za čas. Jasno je, da se otroci usmerjajo v vsakodnevne dogodke, da bi dobili predstavo o tem, kaj sledi. Toda prejšnji dogodki ponavadi so malo zmedeni in skoraj nikoli v redu
No Pee Now, naprava za prilagajanje vedenja hišnih ljubljenčkov, ki preprečuje mačkam, da bi lulele po vašem domu: 4 koraki
No Pee Now, Pet -Behavior Adjustment Device, preprečuje mačkam, da bi lulele po vašem domu: moja mucka me je tako motila, da rada lula na mojo posteljo, preveril sem vse, kar potrebuje, in jo odpeljal tudi k veterinarju. Ko sem odpravil težave in si prisluhnil zdravnikovi besedi, se zavedam, da ima le nekaj slabega vedenja. Torej
Alternativno zapirajoči dihoptični modifikator stereoskopskega prenosa 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 korakov
Alternativno zapirajoči dihoptični modifikator stereoskopskega prenosa 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: Nekaj časa sem delal na nasledniku prvotnega AODMoST. Nova naprava uporablja hitrejši in boljši 32-bitni mikrokrmilnik in hitrejše analogno video stikalo. AODMoST 32 omogoča delo z višjimi ločljivostmi in izvajanje novih funkcionalnih
Alternativno zapirajoči dihoptični modifikator stereoskopskega prenosa [ATmega328P+HEF4053B VGA Superimposer]: 7 korakov
Alternativno zapirajoči dihoptični modifikator stereoskopskega prenosa [ATmega328P+HEF4053B VGA Superimposer]: Po mojih poskusih s kozarci s tekočimi kristali, ki so včasih zapirali oči (sem in tja), sem se odločil zgraditi nekaj bolj sofisticiranega in uporabnika tudi ne sili nositi PCB na čelu (ljudje se včasih lahko obnašajo
Samodejni Mandalorian otrok: 10 korakov (s slikami)
Samodejni Mandalorian otrok: Kupili ste to novo igračo (za nekoga poleg vas) in jo želite postaviti na " aktivno " zaslon brez poškodb enote. Na žalost deluje le, če se dotaknete njegove glave. Če kos kovinske folije prilepite na vrh