Inhoudsopgave:
- Stap 1: Begin eenvoudig: voeg een knop toe
- Stap 2: Wijzig de code om het indrukken van knoppen te registreren
- Stap 3: Voeg zoveel knoppen toe als je kinderen hebt
- Stap 4: Voeg een zoemer toe
- Stap 5: voeg een lcd-scherm toe
Video: Gedragsmodificator voor kinderen: 5 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-02-01 14:41
De Child Behaviour Modifier registreert hoe vaak uw kind in de problemen is gekomen (ook wel Strikes genoemd) en wanneer ze drie bereiken, gaat er een zoemer af en een lcd-scherm kondigt aan dat ze geaard zijn.
Stap 1: Begin eenvoudig: voeg een knop toe
De eerste stap in dit project is eenvoudig. Voeg 1 knop toe. In deze stap heb je 4 male naar male draden, 1 220 weerstand en een drukknop nodig.
- Sluit de 5V aan de Power-zijde aan op de positieve rij op het breadboard
-
Sluit de GND aan op de negatieve kant van het breadboard
- Plaats de drukknop op het breadboard
-
Sluit de stroom op de positieve rij aan op het linker onderste deel van de drukknop
- Aard de knop door een weerstand te gebruiken op het rechterondergedeelte van de drukknop op de negatieve rij van het breadboard.
- Sluit #13 aan de digitale kant van de Arduino aan op de rechterbovenhoek van de knop.
Controleer met uw code of de knop zich registreert:
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden
int child1ButtonState = 0;//Lees de status van de knop (aan/uit)
int child1Strike = 0; // Hoeveel slagen heeft het kind?
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); pinMode (child1ButtonPin, INPUT); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin); if(child1ButtonState == HOOG)//Knop is ingedrukt { Serial.println("HIGH"); vertraging (5000); }
if(child1ButtonState == LAAG)
{ Serieel.println ("LAAG"); vertraging (5000); } }
Stap 2: Wijzig de code om het indrukken van knoppen te registreren
Wijzig de code om een druk op de knop te registreren:
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden toint child1ButtonState = 0;//Lees de status van de knop (aan/uit) int child1PreviousState = 0; // Vorige knopstatus int child1Strike = 0;
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin); if(child1ButtonState!= child1PreviousState) { if(child1ButtonState == HIGH)//Knop is ingedrukt { child1Strike ++; Serial.println(child1Strike); vertraging (1000); } }
}
Pas vervolgens de code aan zodat het kind 3 slagen krijgt, waarna het een bericht krijgt dat het geaard is:
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden toint child1ButtonState = 0;//Lees de status van de knop (aan/uit) int child1PreviousState = 0; int child1Strike = 0;
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin); if(child1ButtonState!= child1PreviousState) { if(child1ButtonState == HIGH)//Knop is ingedrukt { child1Strike ++; Serial.println(child1Strike);
if(child1Strike >=3)
{ Serial.println ("Kind 1 heeft huisarrest!"); } vertraging (3000); } }
}
De seriële monitor zou eruit moeten zien als de afbeelding hierboven.
Opmerking: zorg ervoor dat u vertrouwd bent met de vertraging. Te weinig vertraging en het zal 1 druk op de knop registreren als meer dan één!
Stap 3: Voeg zoveel knoppen toe als je kinderen hebt
In deze stap kopiëren we eenvoudig de laatste paar stappen. Voeg net zoveel knoppen toe als kinderen. In mijn geval voeg ik er vier toe. Zorg ervoor dat u uw code wijzigt in de digitale pin waarop de knop is aangesloten. In mijn geval gebruikte ik pinnen 12 tot en met 10 om mijn knoppen toe te voegen. Voor het geval u eraan moet worden herinnerd, is hier stap 1:
- Sluit de 5V aan de Power-zijde aan op de positieve rij op het breadboard
-
Sluit de GND aan op de negatieve kant van het breadboard
- Plaats de drukknop op het breadboard Sluit de stroom op de positieve rij aan op het linker onderste deel van de drukknop
-
Aard de knop door een weerstand te gebruiken op het rechterondergedeelte van de drukknop op de negatieve rij van het breadboard.
- Verbind (je pincode) aan de digitale kant van de Arduino met de rechterbovenhoek van de knop.
U moet ook de code aanpassen om al uw knoppen te verwerken. Houd er rekening mee dat als je voorzichtig moet zijn met de snaren die je hebt gebruikt. Je kunt niet samen kleine letters optellen. Het is het beste om 1 te declareren als een String-object.
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Lees de status van de knop (aan/uit) 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;
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{if(child1ButtonState == HOOG)//Knop is ingedrukt {child1Strike ++; Serial.println(String("Kind 1 heeft: ") + child1Strike + "strikt");
if(child1Strike >=3)
{ Serial.println ("Kind 1 heeft huisarrest!"); } vertraging (3000); } } if(child2ButtonState!= child2PreviousState) { if(child2ButtonState == HOOG)//Knop is ingedrukt { child2Strike ++; Serial.println(String("Kind 2 heeft: ") + child2Strike + "strikt");
if(child2Strike >=3)
{ Serial.println ("Kind 2 heeft huisarrest!"); } vertraging (3000); } }
if(child3ButtonState != child3PreviousState)
{if(child3ButtonState == HOOG)//Knop is ingedrukt {child3Strike ++; Serial.println(String("Kind 3 heeft: ") + child3Strike + "strikt");
if(child3Strike >=3)
{ Serial.println ("Kind 3 heeft huisarrest!"); } vertraging (3000); } }
if(child4ButtonState != child4PreviousState)
{if(child4ButtonState == HOOG)//Knop is ingedrukt {child4Strike ++; Serial.println(String("Kind 4 heeft: ") + child4Strike + "strikt");
if(child4Strike >=3)
{ Serial.println ("Kind 4 heeft huisarrest!"); } vertraging (3000); } } }
Stap 4: Voeg een zoemer toe
Laten we er nu voor zorgen dat uw kinderen weten dat ze geaard zijn. Laten we een zoemer toevoegen. Volg deze eenvoudige stappen om de zoemer aan te sluiten.
- Voeg een zoemer toe aan je breadboard, plan ruimte in, want er komt een LCD-scherm aan.
- Verbind de positieve kant (de zoemer moet een + hebben aan de positieve kant) met de pin van je keuze. Ik deed er 9.
- Verbind de andere kant met de geaarde rail van je breadboard.
Pas vervolgens uw code aan om de zoemer af te zetten wanneer een kind huisarrest krijgt. Er zijn een aantal verschillende manieren om voor je zoemer te coderen, maar ik hou van toon (zoemernaam, hertz, duur) vanwege zijn eenvoud. Een voorbeeld hiervan is toon (zoemer, 4000, 300).
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden toint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Lees de status van de knop (aan/uit) 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 zoemer = 2;
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zoemer, UITGANG); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{if(child1ButtonState == HOOG)//Knop is ingedrukt {child1Strike ++; Serial.println(String("Kind 1 heeft: ") + child1Strike + "strikt");
if(child1Strike >=3)
{ Serial.println ("Kind 1 heeft huisarrest!"); toon (zoemer, 5000, 500); // Stuurt 5 milliseconden een geluid van 5 hertz
}
vertraging (3000); } } if(child2ButtonState!= child2PreviousState) { if(child2ButtonState == HOOG)//Knop is ingedrukt { child2Strike ++; Serial.println(String("Kind 2 heeft: ") + child2Strike + "strikt");
if(child2Strike >=3)
{ Serial.println ("Kind 2 heeft huisarrest!"); toon (zoemer, 5000, 500); } vertraging (3000); } }
if(child3ButtonState != child3PreviousState)
{if(child3ButtonState == HOOG)//Knop is ingedrukt {child3Strike ++; Serial.println(String("Kind 3 heeft: ") + child3Strike + "strikt");
if(child3Strike >=3)
{ Serial.println ("Kind 3 heeft huisarrest!"); toon (zoemer, 5000, 500); } vertraging (3000); } }
if(child4ButtonState != child4PreviousState)
{if(child4ButtonState == HOOG)//Knop is ingedrukt {child4Strike ++; Serial.println(String("Kind 4 heeft: ") + child4Strike + "strikt");
if(child4Strike >=3)
{ Serial.println ("Kind 4 heeft huisarrest!"); toon (zoemer, 5000, 500); } vertraging (3000); } } }
Stap 5: voeg een lcd-scherm toe
Nu laat een LCD-scherm voor duidelijk en gemakkelijk lezen.
- Voeg eerst een potentiometer toe aan je breadboard om het lcd-scherm te bedienen. Wees voorzichtig met waar je het neerzet, want je hebt waarschijnlijk bijna geen ruimte meer.
- Gebruik de linkervoorzijde om uw potentiometer op de stroomrail aan te sluiten
- Gebruik rechtsvoor om je potmeter te aarden.
- De achterkant wordt verbonden met het lcd-scherm.
- Voeg het LCD-scherm toe aan je breadboard
- Aard de eerste schermpen aan de aardingsrail
- Sluit de tweede pin aan op de stroomrail.
- Derde LCD-pin gaat naar Pin 8 op de Arduino
- Vierde LCD-pin gaat naar Pin 7 op de Arduino
- Vijfde gaat naar pin 6 op de Arduino
- Zesde pin gaat naar pin 5 op de Arduino
- Pinnen 7 t/m 10 op het LCD-scherm zijn leeg
- Pin 11 gaat naar Pin 5 op de Arduino
- Pin 12 gaat naar de geaarde rail
- Pin 13 gaat naar Pin 4 op de Arduino
- Pin 14 gaat naar de achterkant van de potentiometer
- Pin 15 gaat naar de Power rail
- Pin 16 gaat naar de grondrail.
Nu moet u uw code bijwerken om het lcd-scherm te gebruiken. Daarvoor gebruik je de bibliotheek Liquid Crystal. Wees voorzichtig met uw lcd-afdrukken. Vergeet niet om het scherm leeg te maken als je een nieuw bericht nodig hebt. Denk er ook aan om de cursor in te stellen wanneer u twee regels wilt gebruiken.
#erbij betrekken
LiquidCrystal-lcd (3, 4, 5, 6, 7, 8); // Stelt het LCD-scherm in
int child1ButtonPin = 13;//Dit is de pin waarmee onze drukknop is verbonden int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Lees de status van de knop (aan/uit) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // De vorige staat van de ingedrukte knop int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; //Hoeveel slagen heeft een kind int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int zoemer = 9; // de zoemer
// de setup-functie wordt één keer uitgevoerd wanneer u op reset drukt of het bord van stroom voorziet
void setup() { Serial.begin(9600); lcd.begin (16, 2); lcd.print("Het Kind"); lcd.setCursor(0, 1); lcd.print("Gedragsmodificatie"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zoemer, UITGANG); } // de loop-functie wordt keer op keer uitgevoerd voor altijd void loop () { lcd.setCursor (0, 0); // lees de status van de knop (aan of uit) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{if(child1ButtonState == HIGH)//Knop is ingedrukt { lcd.clear(); child1Strike ++; Serial.println(String("Kind 1 heeft: ") + child1Strike + "strikt"); lcd.print("Kind 1 heeft:"); lcd.setCursor(0, 1); lcd.print(child1Strike); lcd.print("Stakingen!");
if(child1Strike >=3)
{ Serial.println ("Kind 1 heeft huisarrest!"); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Kind 1 is"); lcd.setCursor(0, 1); lcd.print("Geaard!");
toon (zoemer, 5000, 500); // Stuurt 5 milliseconden een geluid van 5 hertz
}
vertraging (3000); } } if(child2ButtonState!= child2PreviousState) { lcd.clear(); if(child2ButtonState == HOOG)//Knop is ingedrukt { child2Strike ++; Serial.println(String("Kind 2 heeft: ") + child2Strike + "strikt"); lcd.print("Kind 2 heeft:"); lcd.setCursor(0, 1); lcd.print(child2Strike); lcd.print("Stakingen!"); if(child2Strike >=3) { Serial.println("Kind 2 is geaard!"); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Kind 2 is"); lcd.setCursor(0, 1); lcd.print("Geaard!"); toon (zoemer, 5000, 500); } vertraging (3000); } }
if(child3ButtonState != child3PreviousState)
{ lcd.wissen(); if(child3ButtonState == HOOG)//Knop is ingedrukt { child3Strike ++; Serial.println(String("Kind 3 heeft: ") + child3Strike + "strikt"); lcd.print("Kind 3 heeft:"); lcd.setCursor(0, 1); lcd.print(child3Strike); lcd.print("Stakingen!"); if(child3Strike >=3) { Serial.println("Kind 3 is geaard!"); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Kind 3 is"); lcd.setCursor(0, 1); lcd.print("Geaard!"); toon (zoemer, 5000, 500); } vertraging (3000); } }
if(child4ButtonState != child4PreviousState)
{ lcd.wissen(); if (child4ButtonState == HOOG)//Knop is ingedrukt { child4Strike ++; Serial.println(String("Kind 4 heeft: ") + child4Strike + "strikt"); lcd.print("Kind 4 heeft:"); lcd.setCursor(0, 1); lcd.print(child4Strike); lcd.print("Stakingen!");
if(child4Strike >=3)
{ Serial.println ("Kind 4 heeft huisarrest!"); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Kind 4 is"); lcd.setCursor(0, 1); lcd.print("Geaard!"); toon (zoemer, 5000, 500); } vertraging (3000); } } } En dat is alles, dat is alles wat je nodig hebt om je eigen Child Behaviour Modifer te bouwen
Aanbevolen:
NASA-configuratiescherm voor kinderen: 10 stappen (met afbeeldingen)
NASA-configuratiescherm voor kinderen: ik heb dit gebouwd voor mijn schoonzus die een kinderdagverblijf runt. Ze zag mijn pils die ik bijna drie jaar geleden bouwde voor een bedrijfsmaker en vond het erg leuk, dus ik bouwde deze voor haar voor een kerstcadeau. Link naar mijn andere project hier: https://www
Sourino - het beste speelgoed voor katten en kinderen: 14 stappen (met afbeeldingen)
Sourino – het beste speelgoed voor katten en kinderen: stel je voor dat lange feesten met kinderen en katten Sourino spelen. Dit speelgoed zal zowel katten als kinderen verbazen. Je zult genieten van het spelen in de op afstand bestuurbare modus en je kat gek maken. In de autonome modus zult u het op prijs stellen om Sourino rond uw kat te laten bewegen
Terug naar de basis: solderen voor kinderen: 6 stappen (met afbeeldingen)
Back to Basics: Solderen voor kinderen: Of je nu een robot bouwt of met Arduino werkt, vorm "hands-on" elektronica tot prototyping van een projectidee, weten hoe te solderen komt van pas. solderen is een essentiële vaardigheid om te leren als iemand echt van elektr
Een elektronisch quizbord voor kinderen maken: 10 stappen (met afbeeldingen)
Een elektronisch quizbord voor kinderen maken: in deze Instructable laat ik je zien hoe de zoon van mijn neef, Mason en ik, samen een elektronisch quizbord maakten! Dit is een geweldig STEM-gerelateerd project om te doen met kinderen van alle leeftijden die geïnteresseerd zijn in wetenschap! Mason is pas 7 jaar oud, maar heeft steeds meer
Oplichtende klok voor kinderen - Groen betekent gaan! Rood, blijf in BED!!!: 5 stappen (met afbeeldingen)
Oplichtende klok voor kinderen - Groen betekent gaan! Rood, blijf in BED!!!: We werden gek zonder voldoende slaap!!! Onze 2-jarige kon niet begrijpen hoe hij moest "wachten op de 7" op de klok voordat hij ochtend na ochtend uit zijn kamer kwam. Hij zou vroeg wakker worden (ik bedoel ongeveer 5:27 uur - "er is een 7!!!"