INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Die kindergedrag -wysiger teken aan hoeveel keer u kind in die moeilikheid beland het (ook bekend as Stakings) en as hulle drie bereik, gaan 'n gonser af en 'n lcd -skerm kondig aan dat hulle geaard is.
Stap 1: Begin eenvoudig: voeg 'n knoppie by
Die eerste stap in hierdie projek is eenvoudig. Voeg 1 knoppie by. In hierdie stap benodig u 4 manlike tot manlike drade, 1 220 Resisitor en 'n drukknop.
- Koppel die 5V aan die kragkant aan die positiewe ry op die broodbord
-
Koppel die GND aan die negatiewe kant van die broodbord
- Plaas die drukknop op die broodbord
-
Koppel die krag op die postiewe ry aan die linker onderkant van die drukknop
- Aard die knoppie met 'n weerstand in die regter onderkant van die drukknop tot by die negatiewe ry van die broodbord.
- Koppel #13 aan die digitale kant van die Arduino aan die regterkant bo -aan die knoppie.
Verifieer met u kode dat die knoppie registreer:
int child1ButtonPin = 13; // Dit is die pen waarmee ons drukknoppie gekoppel is
int child1ButtonState = 0; // Lees die toestand van die knoppie (aan/af)
int kind1Strike = 0; // Hoeveel aanvalle het die kind
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); pinMode (kind1ButtonPin, INPUT); } // die lusfunksie loop oor en oor vir ewig leeg lus () {// lees die knoppie se toestand (aan of af) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Knoppie word ingedruk {Serial.println ("HIGH"); vertraging (5000); }
as (child1ButtonState == LOW)
{Serial.println ("LAAG"); vertraging (5000); }}
Stap 2: Verander kode om knoppers te registreer
Verander die kode om 'n knoppie te druk:
int child1ButtonPin = 13; // Dit is die pen waarmee ons drukknoppie gekoppel is aan kind1ButtonState = 0; // Lees die toestand van die knoppie (aan/af) int child1PreviousState = 0; // Vorige knoppie staat int child1Strike = 0;
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); pinMode (kind1ButtonPin, INPUT); } // die lusfunksie loop oor en oor vir ewig leeg lus () {// lees die knoppie se toestand (aan of af) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HOOG) // Knoppie word ingedruk {child1Strike ++; Serial.println (kind1Strike); vertraging (1000); }}
}
Pas die kode dan aan sodat die kind drie aanvalle kry, waarna hy 'n boodskap ontvang dat hy gegrond is:
int child1ButtonPin = 13; // Dit is die pen waarmee ons drukknoppie gekoppel is aan kind1ButtonState = 0; // Lees die toestand van die knoppie (aan/af) int child1PreviousState = 0; int kind1Strike = 0;
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); pinMode (kind1ButtonPin, INPUT); } // die lusfunksie loop oor en oor vir ewig leegloop () {// lees die knoppie se toestand (aan of af) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HOOG) // Knoppie word ingedruk {child1Strike ++; Serial.println (kind1Strike);
as (kind1Strike> = 3)
{Serial.println ("Kind 1 is gegrond!"); } vertraging (3000); }}
}
Die Serial Moniter moet soos die prent hierbo lyk.
Let wel: Maak seker dat u vertroud is met die vertraging. 'N bietjie vertraging en dit sal 'n druk van een knoppie registreer as meer as een!
Stap 3: Voeg soveel knoppies by as wat u kinders het
In hierdie stap kopieer ons eenvoudig die laaste paar stappe. Voeg soveel knoppies by as kinders. In my geval voeg ek vier by. Maak seker dat u u kode verander, die digitale pen waarna die knoppie gekoppel is. In my geval het ek penne 12 tot 10 gebruik om my knoppies by te voeg. As u hieraan moet herinner, is stap 1:
- Koppel die 5V aan die kragkant aan die positiewe ry op die broodbord
-
Koppel die GND aan die negatiewe kant van die broodbord
- Plaas die drukknop op die broodbord Sluit die krag in die postiewe ry aan op die onderste onderste deel van die drukknop
-
Aard die knoppie met 'n weerstand in die regter onderkant van die drukknoppie tot by die negatiewe ry van die broodbord.
- Koppel (u speldnommer) aan die digitale kant van die Arduino aan die regterkant bo van die knoppie.
U moet ook die kode verander om al u knoppies te hanteer. Hou in gedagte dat as u versigtig moet wees vir die snare wat u gebruik het. U kan nie by kleinletters saam voeg nie. Dit is die beste om 1 as 'n stringvoorwerp te verklaar.
int child1ButtonPin = 13; // Dit is die speld waarmee ons drukknoppie gekoppel is aan kind 2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lees die toestand van die knoppie (aan/af) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int kind1PreviousState = 0; int kind2PreviousState = 0; int kind3PreviousState = 0; int kind4PreviousState = 0; int kind1Strike = 0; int kind2Strike = 0; int kind3Strike = 0; int kind4Strike = 0;
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); pinMode (kind1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // die lusfunksie loop oor en oor vir ewig leeg lus () {// lees die knoppie se toestand (aan of af) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
as (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Knoppie word ingedruk {child1Strike ++; Serial.println (String ("Kind 1 het:") + child1Strike + "slaan");
as (kind1Strike> = 3)
{Serial.println ("Kind 1 is gegrond!"); } vertraging (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HOOG) // Knoppie word ingedruk {child2Strike ++; Serial.println (String ("Kind 2 het:") + child2Strike + "stakings");
as (child2Strike> = 3)
{Serial.println ("Kind 2 is gegrond!"); } vertraging (3000); }}
as (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HOOG) // Knoppie word ingedruk {child3Strike ++; Serial.println (String ("Kind 3 het:") + child3Strike + "stakings");
as (child3Strike> = 3)
{Serial.println ("Kind 3 is gegrond!"); } vertraging (3000); }}
as (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HOOG) // Knoppie word ingedruk {child4Strike ++; Serial.println (String ("Kind 4 het:") + child4Strike + "stakings");
as (child4Strike> = 3)
{Serial.println ("Kind 4 is gegrond!"); } vertraging (3000); }}}
Stap 4: Voeg 'n gonser by
Laat ons nou seker maak dat u kinders weet dat hulle gegrond is. Laat ons 'n gonser byvoeg. Volg hierdie maklike stappe om die gonser aan te sluit.
- Voeg 'n gonser by u broodbord, beplan ruimte, aangesien 'n LCD -skerm verskyn.
- Koppel die Postive -kant (die zoemer moet 'n + aan die postiewe kant hê) aan die Pin van u keuse. Ek het 9 gedoen.
- Koppel die ander kant met die grondrail van u broodbord.
Verander vervolgens u kode om die gonser uit te skakel as 'n kind op die grond val. Daar is 'n paar verskillende maniere om vir u zoemer te kodeer, maar ek hou van toon (buzzerName, hertz, duur) vanweë sy eenvoud. 'N Voorbeeld hiervan is toon (buzzer, 4000, 300).
int child1ButtonPin = 13; // Dit is die pen wat ons drukknoppie aan ons kind2ButtonPin = 12 gekoppel is; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lees die knoppie se toestand (aan/af) int child2ButtonState = 0; int child3ButtonState = 0; int kind4ButtonState = 0; int kind1PreviousState = 0; int kind2PreviousState = 0; int kind3PreviousState = 0; int kind4PreviousState = 0; int kind1Strike = 0; int kind2Strike = 0; int kind3Strike = 0; int kind4Strike = 0; const int gonser = 2;
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); pinMode (kind1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zoemer, UITGANG); } // die lusfunksie loop oor en oor vir ewig leeg lus () {// lees die knoppie se toestand (aan of af) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
as (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HOOG) // Knoppie word ingedruk {child1Strike ++; Serial.println (String ("Kind 1 het:") + kind1Strike + "slaan");
as (kind1Strike> = 3)
{Serial.println ("Kind 1 is gegrond!"); toon (zoemer, 5000, 500); // Stuur 'n 5 Hertz -klank vir 5 millisekondes
}
vertraging (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HOOG) // Knoppie word ingedruk {child2Strike ++; Serial.println (String ("Kind 2 het:") + child2Strike + "stakings");
as (child2Strike> = 3)
{Serial.println ("Kind 2 is gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}
as (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HOOG) // Knoppie word ingedruk {child3Strike ++; Serial.println (String ("Kind 3 het:") + child3Strike + "stakings");
as (child3Strike> = 3)
{Serial.println ("Kind 3 is gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}
as (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HOOG) // Knoppie word ingedruk {child4Strike ++; Serial.println (String ("Kind 4 het:") + child4Strike + "stakings");
as (child4Strike> = 3)
{Serial.println ("Kind 4 is gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}}
Stap 5: Voeg 'n LCD -skerm by
Nou kan 'n LCD -skerm duidelik en maklik gelees word.
- Voeg eers 'n potensiometer by u broodbord om die lcd -skerm te beheer. Wees versigtig waar u dit plaas, aangesien u waarskynlik nou nie genoeg ruimte het nie.
- Gebruik die linkervoorkant om u potensiometer aan die kragrail te koppel
- Gebruik die voorkant regs om u potensiometer te grond.
- Die agterkant sal aan die lcd -skerm gekoppel word.
- Voeg die LCD -skerm by u broodbord
- Aard die eerste skermpen aan die aardrail
- Draai die tweede pen aan die kragrail.
- Die derde LCD -pen gaan na Pin 8 op die Arduino
- Die vierde LCD -pen gaan na Pin 7 op die Arduino
- Die vyfde gaan na pen 6 op die Arduino
- Sesde pen gaan na pen 5 op die Arduino
- Spelde 7 tot 10 op die LCD -skerm is leeg
- Speld 11 gaan na pen 5 op die Arduino
- Speld 12 gaan na die grondrail
- Speld 13 gaan na pen 4 op die Arduino
- Speld 14 gaan aan die agterkant van die potensiometer
- Speld 15 gaan na die kragrail
- Speld 16 gaan na die Ground Rail.
Nou moet u u kode opdateer om die lcd -skerm te gebruik. Hiervoor gebruik u die libary Liquid Crystal. Wees versigtig vir u lcd -drukstate. Onthou om die skerm skoon te maak as u 'n nuwe boodskap nodig het. Onthou ook om die wyser te stel wanneer u twee reëls wil gebruik.
#insluit
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Stel die LCD -skerm in
int child1ButtonPin = 13; // Dit is die speld waarmee ons drukknoppie gekoppel is aan int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Lees die knoppie se toestand (aan/af) int child2ButtonState = 0; int child3ButtonState = 0; int kind4ButtonState = 0; int kind1PreviousState = 0; // Die vorige toestand van die knoppie wat int child2PreviousState = 0 gedruk is; int kind3PreviousState = 0; int kind4PreviousState = 0; int kind1Strike = 0; // Hoeveel stakings het 'n kind int child2Strike = 0; int kind3Strike = 0; int kind4Strike = 0; const int gonser = 9; // die Gonser
// die opstelfunksie word een keer uitgevoer as u op reset druk of die bord aanskakel
ongeldige opstelling () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Die kind"); lcd.setCursor (0, 1); lcd.print ("Gedragsveranderer"); pinMode (kind1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (zoemer, UITGANG); } // die lusfunksie loop oor en oor vir ewig void lus () {lcd.setCursor (0, 0); // lees die toestand van die knoppie (aan of af) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
as (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HOOG) // Knoppie word ingedruk {lcd.clear (); kind1Strike ++; Serial.println (String ("Kind 1 het:") + child1Strike + "slaan"); lcd.print ("Kind 1 het:"); lcd.setCursor (0, 1); lcd.print (kind1Strike); lcd.print ("Stakings!");
as (kind1Strike> = 3)
{Serial.println ("Kind 1 is gegrond!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Kind 1 is"); lcd.setCursor (0, 1); lcd.print ("gegrond!");
toon (zoemer, 5000, 500); // Stuur 'n 5 Hertz -klank vir 5 millisekondes
}
vertraging (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); as (child2ButtonState == HOOG) // Knoppie ingedruk word {child2Strike ++; Serial.println (String ("Kind 2 het:") + child2Strike + "stakings"); lcd.print ("Kind 2 het:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Stakings!"); if (child2Strike> = 3) {Serial.println ("Kind 2 is gegrond!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Kind 2 is"); lcd.setCursor (0, 1); lcd.print ("gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}
as (child3ButtonState! = child3PreviousState)
{lcd.clear (); as (child3ButtonState == HOOG) // Knoppie ingedruk word {child3Strike ++; Serial.println (String ("Kind 3 het:") + child3Strike + "stakings"); lcd.print ("Kind 3 het:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Stakings!"); if (child3Strike> = 3) {Serial.println ("Kind 3 is gegrond!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Kind 3 is"); lcd.setCursor (0, 1); lcd.print ("gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}
as (child4ButtonState! = child4PreviousState)
{lcd.clear (); as (child4ButtonState == HOOG) // Knoppie ingedruk word {child4Strike ++; Serial.println (String ("Kind 4 het:") + child4Strike + "stakings"); lcd.print ("Kind 4 het:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Stakings!");
as (child4Strike> = 3)
{Serial.println ("Kind 4 is gegrond!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Kind 4 is"); lcd.setCursor (0, 1); lcd.print ("gegrond!"); toon (zoemer, 5000, 500); } vertraging (3000); }}}} En dit is alles, dit is alles wat u nodig het om u eie kindergedragmodifer te bou