Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Child Behavior Modifier registrerer hvor mange ganger barnet ditt har fått problemer (aka Strikes), og når de når tre, går en summer og en LCD -skjerm annonserer at de er jordet.
Trinn 1: Start enkelt: Legg til en knapp
Det første trinnet i dette prosjektet er enkelt. Legg til 1 knapp. I dette trinnet trenger du 4 mannlige til mannlige ledninger, 1 220 resisitor og en trykknapp.
- Koble 5V på Power -siden til den positive raden på brødbrettet
-
Koble GND til den negative siden av brødbrettet
- Sett trykknappen på brødbrettet
-
Koble strømmen til den postive raden til venstre nedre del av trykknappen
- Jordknappen ved å bruke en motstand nederst til høyre på trykknappen til den negative raden på brødbrettet.
- Koble #13 på den digitale siden av Arduino til øverst til høyre på knappen.
Bekreft med koden at knappen registrerer:
int child1ButtonPin = 13; // Dette er pinnen vår trykknapp er koblet til
int child1ButtonState = 0; // Leser knappens tilstand (på/av)
int child1Strike = 0; // Hvor mange streik barnet har
// oppsettfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // sløyfefunksjonen kjører igjen og igjen for alltid void loop () {// les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin); hvis (child1ButtonState == HIGH) // knappen trykkes på {Serial.println ("HIGH"); forsinkelse (5000); }
hvis (child1ButtonState == LOW)
{Serial.println ("LAV"); forsinkelse (5000); }}
Trinn 2: Endre kode for å registrere knappetrykk
Endre koden for å registrere et knappetrykk:
int child1ButtonPin = 13; // Dette er tappen vår trykknapp er koblet tilint child1ButtonState = 0; // Leser knappens tilstand (på/av) int child1PreviousState = 0; // Forrige knappstilstand int child1Strike = 0;
// oppsettfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // sløyfefunksjonen kjører igjen og igjen for alltid void loop () {// les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Knappen trykkes {child1Strike ++; Serial.println (child1Strike); forsinkelse (1000); }}
}
Neste Endre koden slik at barnet får tre streik, hvoretter det vil motta en melding om at det er jordet:
int child1ButtonPin = 13; // Dette er pinnen vår trykknapp er koblet tilint child1ButtonState = 0; // Leser knappens tilstand (på/av) int child1PreviousState = 0; int child1Strike = 0;
// oppsettfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // sløyfefunksjonen kjører igjen og igjen for alltid void loop () {// les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // knappen trykkes på {child1Strike ++; Serial.println (child1Strike);
hvis (child1Strike> = 3)
{Serial.println ("Barn 1 er jordet!"); } forsinkelse (3000); }}
}
Serial Moniter skal se ut som bildet ovenfor.
Merk: Sørg for at du er komfortabel med forsinkelsen. For liten forsinkelse, og det vil registrere ett knappetrykk som mer enn ett!
Trinn 3: Legg til så mange knapper som du har barn
I dette trinnet kopierer vi ganske enkelt de siste par trinnene. Legg til så mange knapper som du gjør barn. I mitt tilfelle legger jeg til fire. Sørg for å endre koden, den digitale pinnen som knappen er koblet til. I mitt tilfelle brukte jeg pinnene 12 til 10 for å legge til knappene mine. Hvis du trenger påminnelse her, er trinn 1:
- Koble 5V på Power -siden til den positive raden på brødbrettet
-
Koble GND til den negative siden av brødbrettet
- Sett inn trykknappen på brødbrettet Koble strømmen til den postive raden til venstre nedre del av trykknappen
-
Jordknappen ved å bruke en motstand nederst til høyre på trykknappen til den negative raden på brødbrettet.
- Koble (pin -nummeret ditt) på den digitale siden av Arduino til øverst til høyre på knappen.
Du må også endre koden for å håndtere alle knappene dine. Vær oppmerksom på at hvis du må være forsiktig med strengene du brukte. Du kan ikke legge til små bokstaver sammen. Det er best å erklære 1 som et strengobjekt.
int child1ButtonPin = 13; // Dette er pinnen vår trykknapp er koblet tilint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Leser knappens tilstand (på/av) 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;
// oppsettfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // sløyfefunksjonen går igjen og igjen for alltid void loop () {// les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
hvis (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Knappen trykkes på {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strike");
hvis (child1Strike> = 3)
{Serial.println ("Barn 1 er jordet!"); } forsinkelse (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Knappen trykkes {child2Strike ++; Serial.println (String ("Barn 2 har:") + child2Strike + "streik");
hvis (child2Strike> = 3)
{Serial.println ("Barn 2 er jordet!"); } forsinkelse (3000); }}
hvis (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Knappen trykkes på {child3Strike ++; Serial.println (String ("Barn 3 har:") + child3Strike + "streik");
hvis (child3Strike> = 3)
{Serial.println ("Barn 3 er jordet!"); } forsinkelse (3000); }}
hvis (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Knappen trykkes på {child4Strike ++; Serial.println (String ("Barn 4 har:") + child4Strike + "streik");
hvis (child4Strike> = 3)
{Serial.println ("Barn 4 er jordet!"); } forsinkelse (3000); }}}
Trinn 4: Legg til en summer
La oss nå sørge for at barna dine vet at de er jordet. La oss legge til en summer. Følg disse enkle trinnene for å koble til summeren.
- Legg til en summer til brødbrettet ditt, planlegg plass siden en LCD -skjerm kommer opp.
- Koble Postive -siden (summeren skal ha et + på den postive siden) til den valgte pinnen. Jeg gjorde 9.
- Koble den andre siden til den jordede skinnen på brødbrettet.
Deretter endrer du koden din for å slå av summeren når et barn blir jordet. Det er et par forskjellige måter å kode for summeren din, men jeg liker tone (buzzerName, hertz, varighet) for sin enkelhet. Så et eksempel på dette vil være tone (summer, 4000, 300).
int child1ButtonPin = 13; // Dette er pinnen vår trykknapp er koblet tilint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Leser knappens tilstand (på/av) 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 summer = 2;
// oppsettfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (summer, OUTPUT); } // sløyfefunksjonen går igjen og igjen for alltid void loop () {// les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
hvis (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Knappen trykkes på {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strike");
hvis (child1Strike> = 3)
{Serial.println ("Barn 1 er jordet!"); tone (summer, 5000, 500); // Sender en 5 hertz lyd i 5 millisekunder
}
forsinkelse (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Knappen trykkes {child2Strike ++; Serial.println (String ("Barn 2 har:") + child2Strike + "streik");
hvis (child2Strike> = 3)
{Serial.println ("Barn 2 er jordet!"); tone (summer, 5000, 500); } forsinkelse (3000); }}
hvis (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Knappen trykkes på {child3Strike ++; Serial.println (String ("Barn 3 har:") + child3Strike + "streik");
hvis (child3Strike> = 3)
{Serial.println ("Barn 3 er jordet!"); tone (summer, 5000, 500); } forsinkelse (3000); }}
hvis (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Knappen trykkes på {child4Strike ++; Serial.println (String ("Barn 4 har:") + child4Strike + "streik");
hvis (child4Strike> = 3)
{Serial.println ("Barn 4 er jordet!"); tone (summer, 5000, 500); } forsinkelse (3000); }}}
Trinn 5: Legg til en LCD -skjerm
Lar nå en LCD -skjerm for klar og enkel lesing.
- Legg først et potensiometer til brødbrettet for å kontrollere LCD -skjermen. Vær forsiktig med hvor du legger den siden du sannsynligvis er tom for plass nå.
- Bruk fronten til venstre for å koble potensiometeret til kraftskinnen
- Bruk fremre høyre for å jorde potensiometeret.
- Baksiden blir koblet til LCD -skjermen.
- Legg LCD -skjermen til brødbrettet
- Jord den første skjermpinnen til jordingsskinnen
- Koble den andre pinnen til kraftskinnen.
- Den tredje LCD -pinnen går til Pin 8 på Arduino
- Den fjerde LCD -pinnen går til Pin 7 på Arduino
- Femte går til Pin 6 på Arduino
- Sixth Pin går til pin 5 på Arduino
- Pinnene 7 til 10 på LCD -skjermen er tomme
- Pin 11 går til Pin 5 på Arduino
- Pinne 12 går til den jordede skinnen
- Pin 13 går til Pin 4 på Arduino
- Pinne 14 går bak på potensiometeret
- Pin 15 går til Power rail
- Pin 16 går til Ground Rail.
Nå må du oppdatere koden din for å bruke lcd -skjermen. For det vil du bruke libary Liquid Crystal. Vær forsiktig med LCD -utskriftene. Husk å tømme skjermen når du trenger en ny melding. Husk også å sette markøren når du vil bruke to linjer.
#inkludere
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Angir LCD -skjermen
int child1ButtonPin = 13; // Dette er tappen vår trykknapp er koblet til int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Leser knappens tilstand (på/av) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // Den forrige tilstanden til knappen ble trykket int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Hvor mange streiker et barn har int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int summer = 9; // summeren
// oppsettsfunksjonen kjøres en gang når du trykker på reset eller slår på kortet
ugyldig oppsett () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Barnet"); lcd.setCursor (0, 1); lcd.print ("Behavior Modifer"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (summer, OUTPUT); } // sløyfefunksjonen kjører om og om igjen for alltid void loop () {lcd.setCursor (0, 0); // les knappens tilstand (på eller av) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
hvis (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Knappen trykkes på {lcd.clear (); child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strike"); lcd.print ("Barn 1 har:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Strikes!");
hvis (child1Strike> = 3)
{Serial.println ("Barn 1 er jordet!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Barn 1 er"); lcd.setCursor (0, 1); lcd.print ("Grounded!");
tone (summer, 5000, 500); // Sender en 5 hertz lyd i 5 millisekunder
}
forsinkelse (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); hvis (child2ButtonState == HIGH) // knappen trykkes på {child2Strike ++; Serial.println (String ("Barn 2 har:") + child2Strike + "streik"); lcd.print ("Barn 2 har:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Strikes!"); if (child2Strike> = 3) {Serial.println ("Barn 2 er jordet!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Barn 2 er"); lcd.setCursor (0, 1); lcd.print ("Grounded!"); tone (summer, 5000, 500); } forsinkelse (3000); }}
hvis (child3ButtonState! = child3PreviousState)
{lcd.clear (); hvis (child3ButtonState == HIGH) // knappen trykkes på {child3Strike ++; Serial.println (String ("Barn 3 har:") + child3Strike + "streik"); lcd.print ("Barn 3 har:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Strikes!"); if (child3Strike> = 3) {Serial.println ("Barn 3 er jordet!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Barn 3 er"); lcd.setCursor (0, 1); lcd.print ("Grounded!"); tone (summer, 5000, 500); } forsinkelse (3000); }}
hvis (child4ButtonState! = child4PreviousState)
{lcd.clear (); hvis (child4ButtonState == HIGH) // knappen trykkes på {child4Strike ++; Serial.println (String ("Barn 4 har:") + child4Strike + "streik"); lcd.print ("Barn 4 har:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Strikes!");
hvis (child4Strike> = 3)
{Serial.println ("Barn 4 er jordet!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Barn 4 er"); lcd.setCursor (0, 1); lcd.print ("Grounded!"); tone (summer, 5000, 500); } forsinkelse (3000); }}} Og det er det, det er alt du trenger for å bygge din egen barneadferdsmodifikator