Inhoudsopgave:

Gedragsmodificator voor kinderen: 5 stappen (met afbeeldingen)
Gedragsmodificator voor kinderen: 5 stappen (met afbeeldingen)

Video: Gedragsmodificator voor kinderen: 5 stappen (met afbeeldingen)

Video: Gedragsmodificator voor kinderen: 5 stappen (met afbeeldingen)
Video: Behaviorisme - Operant conditioneren Skinner (3 van 5) 2024, December
Anonim
Gedragsmodificator voor kinderen
Gedragsmodificator voor kinderen

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

Begin eenvoudig: voeg een knop toe
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.

  1. Sluit de 5V aan de Power-zijde aan op de positieve rij op het breadboard
  2. Sluit de GND aan op de negatieve kant van het breadboard

  3. Plaats de drukknop op het breadboard
  4. Sluit de stroom op de positieve rij aan op het linker onderste deel van de drukknop

  5. Aard de knop door een weerstand te gebruiken op het rechterondergedeelte van de drukknop op de negatieve rij van het breadboard.
  6. 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

Code wijzigen om druk op de knop te registreren
Code wijzigen om druk op de knop te registreren
Code wijzigen om druk op de knop te registreren
Code wijzigen om druk op de knop 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

Voeg zoveel knoppen toe als je kinderen hebt
Voeg zoveel knoppen toe als je kinderen hebt
Voeg zoveel knoppen toe als je kinderen hebt
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:

  1. Sluit de 5V aan de Power-zijde aan op de positieve rij op het breadboard
  2. Sluit de GND aan op de negatieve kant van het breadboard

  3. Plaats de drukknop op het breadboard Sluit de stroom op de positieve rij aan op het linker onderste deel van de drukknop
  4. Aard de knop door een weerstand te gebruiken op het rechterondergedeelte van de drukknop op de negatieve rij van het breadboard.

  5. 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

Een zoemer toevoegen
Een zoemer toevoegen
Een zoemer toevoegen
Een zoemer toevoegen

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.

  1. Voeg een zoemer toe aan je breadboard, plan ruimte in, want er komt een LCD-scherm aan.
  2. Verbind de positieve kant (de zoemer moet een + hebben aan de positieve kant) met de pin van je keuze. Ik deed er 9.
  3. 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

Image
Image
Een LCD-scherm toevoegen
Een LCD-scherm toevoegen

Nu laat een LCD-scherm voor duidelijk en gemakkelijk lezen.

  1. 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.
  2. Gebruik de linkervoorzijde om uw potentiometer op de stroomrail aan te sluiten
  3. Gebruik rechtsvoor om je potmeter te aarden.
  4. De achterkant wordt verbonden met het lcd-scherm.
  5. Voeg het LCD-scherm toe aan je breadboard
  6. Aard de eerste schermpen aan de aardingsrail
  7. Sluit de tweede pin aan op de stroomrail.
  8. Derde LCD-pin gaat naar Pin 8 op de Arduino
  9. Vierde LCD-pin gaat naar Pin 7 op de Arduino
  10. Vijfde gaat naar pin 6 op de Arduino
  11. Zesde pin gaat naar pin 5 op de Arduino
  12. Pinnen 7 t/m 10 op het LCD-scherm zijn leeg
  13. Pin 11 gaat naar Pin 5 op de Arduino
  14. Pin 12 gaat naar de geaarde rail
  15. Pin 13 gaat naar Pin 4 op de Arduino
  16. Pin 14 gaat naar de achterkant van de potentiometer
  17. Pin 15 gaat naar de Power rail
  18. 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: