Мазмуну:

Баланын жүрүм -турумун өзгөртүүчү: 5 кадам (Сүрөттөр менен)
Баланын жүрүм -турумун өзгөртүүчү: 5 кадам (Сүрөттөр менен)

Video: Баланын жүрүм -турумун өзгөртүүчү: 5 кадам (Сүрөттөр менен)

Video: Баланын жүрүм -турумун өзгөртүүчү: 5 кадам (Сүрөттөр менен)
Video: РАХМАТ САГА ЖАРАТКАН - Балдар үчүн ыр 2024, Ноябрь
Anonim
Баланын жүрүм -турумун өзгөрткүч
Баланын жүрүм -турумун өзгөрткүч

Баланын жүрүм -турумун өзгөртүүчү сиздин балаңыз канча жолу кыйынчылыкка учураганын жазат (ака уруу) жана алар үчкө жеткенде, ызылдаган үн өчөт жана экрандын экраны алардын негизделгенин жарыялайт.

1 -кадам: Жөнөкөй баштоо: Баскычты кошуу

Жөнөкөй баштоо: Баскычты кошуу
Жөнөкөй баштоо: Баскычты кошуу

Бул долбоордун биринчи кадамы жөнөкөй. 1 баскычты кошуу. Бул кадамда сизге 4 Эркектен Эркек зымдарга, 1 220 резистор жана баскыч керек.

  1. Power жагындагы 5Vны панельдеги оң катарга туташтырыңыз
  2. GNDди нан тактасынын терс жагына туташтырыңыз

  3. Баскычты нан тактасына салыңыз
  4. Постивдүү катардагы кубатты баскычтын сол жагынын асты жагына туташтырыңыз

  5. Баскычтын оң ылдый жагындагы резистордун жардамы менен баскычты негиздин терс катарына коюңуз.
  6. Ардуинонун Санарип тарабындагы #13 баскычтын жогорку оң жагына туташтырыңыз.

Баскыч катталып жатканын кодуңуз менен ырастаңыз:

int child1ButtonPin = 13; // Бул биздин баскыч басылган шилтеме

int child1ButtonState = 0; // Баскычтын абалын окуйт (күйгүзүү/өчүрүү)

int child1Strike = 0; // Баланын канча соккусу бар

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {// баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Баскыч басылат {Serial.println ("HIGH"); кечигүү (5000); }

эгер (child1ButtonState == LOW)

{Serial.println ("LOW"); кечигүү (5000); }}

2 -кадам: Баскычтарды басуу үчүн кодду өзгөртүү

Баскычтарды басуу үчүн кодду өзгөртүү
Баскычтарды басуу үчүн кодду өзгөртүү
Баскычтарды басуу үчүн кодду өзгөртүү
Баскычтарды басуу үчүн кодду өзгөртүү

Кодду өзгөртүү үчүн баскычты басыңыз:

int child1ButtonPin = 13; // Бул биздин баскыч баскычы child1ButtonState = 0 менен туташкан пин; // баскычтын абалын окуйт (күйгүзүү/өчүрүү) int child1PreviousState = 0; // Мурунку баскычтын абалы int child1Strike = 0;

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {// баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Баскыч басылат {child1Strike ++; Serial.println (child1Strike); кечигүү (1000); }}

}

Кийинки жолу кодду өзгөртүңүз, ошондо бала 3 сокку алат, андан кийин алар негизделген деген билдирүү алышат:

int child1ButtonPin = 13; // Бул биздин баскыч баскычы child1ButtonState = 0 менен туташкан пин; // баскычтын абалын окуйт (күйгүзүү/өчүрүү) int child1PreviousState = 0; int child1Strike = 0;

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {// баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Баскыч басылат {child1Strike ++; Serial.println (child1Strike);

эгер (child1Strike> = 3)

{Serial.println ("Бала 1 негизделген!"); } кечигүү (3000); }}

}

Сериялык Монитор жогорудагы сүрөттө окшош болушу керек.

Эскертүү: Кечигүү сизге ыңгайлуу экенин текшериңиз. Бир аз кечигүү үчүн, ал 1 баскычты бирден көп басат!

3 -кадам: Балалуу болгуңузча көп баскычтарды кошуңуз

Балалуу болгуңузча көп баскычтарды кошуңуз
Балалуу болгуңузча көп баскычтарды кошуңуз
Балалуу болгуңузча көп баскычтарды кошуңуз
Балалуу болгуңузча көп баскычтарды кошуңуз

Бул кадамда биз жөн гана акыркы эки кадамды көчүрөбүз. Балдар сыяктуу эле көп баскычтарды кошуңуз. Менин учурда, мен төрт кошуп. Кодуңузду баскычка туташтырылган Digital пинди өзгөртүүнү унутпаңыз. Менин учурда, мен баскычтарды кошуу үчүн 12ден 10го чейин төөнөгүчтөрдү колдондум. Эгерде сизге бул жерде эскертүү керек болсо, анда 1 -кадам:

  1. Power жагындагы 5Vны панельдеги оң катарга туташтырыңыз

  2. GNDди нан тактасынын терс жагына туташтырыңыз
  3. Баскычты нан тактасына кыстарыңыз Постивдүү катардагы кубатты баскычтын сол жагынын астыңкы бөлүгүнө туташтырыңыз

  4. Баскычтын оң ылдый жагындагы резистордун жардамы менен баскычты негиздин терс катарына коюңуз.
  5. Ардуинонун Санарип тарабындагы (пин номериңизди) баскычтын жогорку оң жагына туташтырыңыз.

Сиз ошондой эле бардык баскычтарыңызды иштетүү үчүн кодду өзгөртүүңүз керек болот. Сураныч, эсиңизде болсун, эгер сиз колдонгон Стрингдерге этият болууңуз керек болсо. Сиз кичине тамгаларды бирге кошо албайсыз. 1ди String объектиси деп жарыялоо эң жакшы.

int child1ButtonPin = 13; // Бул биздин баскыч баскычы child2ButtonPin = 12 менен туташкан пин; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Баскычтын абалын окуйт (күйгүзүү/өчүрүү) 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;

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {// баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin);

child2ButtonState = digitalRead (child2ButtonPin);

child3ButtonState = digitalRead (child3ButtonPin);

child4ButtonState = digitalRead (child4ButtonPin);

эгерде (child1ButtonState! = child1PreviousState)

{if (child1ButtonState == HIGH) // Баскыч басылат {child1Strike ++; Serial.println (String ("Child 1 has:") + child1Strike + "strike");

эгер (child1Strike> = 3)

{Serial.println ("Бала 1 негизделген!"); } кечигүү (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Баскыч басылат {child2Strike ++; Serial.println (String ("Бала 2де:") + child2Strike + "соккулар");

эгер (child2Strike> = 3)

{Serial.println ("Бала 2 негизделген!"); } кечигүү (3000); }}

эгерде (child3ButtonState! = child3PreviousState)

{if (child3ButtonState == HIGH) // Баскыч басылат {child3Strike ++; Serial.println (String ("Child 3 ээ:") + child3Strike + "урат");

эгер (child3Strike> = 3)

{Serial.println ("3 -бала негизделген!"); } кечигүү (3000); }}

эгер (child4ButtonState! = child4PreviousState)

{if (child4ButtonState == HIGH) // Баскыч басылат {child4Strike ++; Serial.println (String ("Бала 4кө ээ:") + child4Strike + "соккулар");

эгер (child4Strike> = 3)

{Serial.println ("4 -бала негизделген!"); } кечигүү (3000); }}}

4 -кадам: Музыка кошуу

Buzzer кошуу
Buzzer кошуу
Buzzer кошуу
Buzzer кошуу

Эми сиздин балдарыңыз негизделгенин билишине ынаналы. Келгиле, коңгуроону кошолу. Зумерди туташтыруу үчүн, бул жөнөкөй кадамдарды аткарыңыз.

  1. Нан тактаңызга Буззерди кошуңуз, ЖК экраны келе жаткандыктан мейкиндикти пландаңыз.
  2. Постивдүү жагын (позициондо + белгиси болушу керек) өзүңүз тандаган пинге туташтырыңыз. Мен 9 кылдым.
  3. Экинчи жагын нан тактаңыздын жерге коюлган темир жолуна туташтырыңыз.

Андан кийин, кодуңузду өзгөртүңүз, эгерде бала негизсиз болуп калса, коңгуроону өчүрүңүз. Коңгурооңузду коддоонун бир нече жолдору бар, бирок мен анын тонусун (buzzerName, Hertz, Duration) жакшы көрөм, андыктан анын мисалы тон болмок (buzzer, 4000, 300).

int child1ButtonPin = 13; // Бул биздин баскыч баскычы child2ButtonPin = 12ге туташкан пин; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Баскычтын абалын окуйт (күйгүзүү/өчүрүү) 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 buzzer = 2;

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (ызы -чуу, ЧЫГУУ); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {// баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin);

child2ButtonState = digitalRead (child2ButtonPin);

child3ButtonState = digitalRead (child3ButtonPin);

child4ButtonState = digitalRead (child4ButtonPin);

эгер (child1ButtonState! = child1PreviousState)

{if (child1ButtonState == HIGH) // Баскыч басылат {child1Strike ++; Serial.println (String ("Child 1 has:") + child1Strike + "strike");

эгер (child1Strike> = 3)

{Serial.println ("Бала 1 негизделген!"); обон (коңгуроо, 5000, 500); // 5 герц үн 5 миллисекундка жөнөтөт

}

кечигүү (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Баскыч басылат {child2Strike ++; Serial.println (String ("Бала 2де:") + child2Strike + "соккулар");

эгер (child2Strike> = 3)

{Serial.println ("Бала 2 негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}

эгер (child3ButtonState! = child3PreviousState)

{if (child3ButtonState == HIGH) // Баскыч басылат {child3Strike ++; Serial.println (String ("Child 3 ээ:") + child3Strike + "урат");

эгер (child3Strike> = 3)

{Serial.println ("3 -бала негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}

эгер (child4ButtonState! = child4PreviousState)

{if (child4ButtonState == HIGH) // Баскыч басылат {child4Strike ++; Serial.println (String ("Бала 4кө ээ:") + child4Strike + "соккулар");

эгер (child4Strike> = 3)

{Serial.println ("4 -бала негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}}

5 -кадам: ЖК экранды кошуу

Image
Image
ЖК экранды кошуу
ЖК экранды кошуу

Эми ачык жана оңой окуу үчүн LCD экранга жол ачат.

  1. Биринчиден, lcd экранын көзөмөлдөө үчүн нан тактаңызга потенциометрди кошуңуз. Кайда коюп жатканыңызга этият болуңуз, анткени азыр орун бошоп баратат.
  2. Потенциометрди электр темир жолуна туташтыруу үчүн алдыңкы сол жагын колдонуңуз
  3. Потенциометрди жерге коюу үчүн алдыңкы оң жагын колдонуңуз.
  4. Арткы бети LCD экранына туташат.
  5. ЖК экранын нан тактаңызга кошуңуз
  6. Биринчи экрандын төөнөгүчүн жерге туташтыруучу темирге негиздеңиз
  7. Экинчи пинди электр рельсине өткөрүңүз.
  8. Үчүнчү ЖК пин Ардуинодогу 8 -пинге барат
  9. Төртүнчү LCD пин Ардуинодогу 7 -пинге барат
  10. Бешинчиси Arduinoдогу 6 -пинге барат
  11. Алтынчы пин Ардуинодогу 5 -пинге барат
  12. ЖК экранда 7ден 10го чейинки төөнөгүчтөр бош
  13. Pin 11 Arduino боюнча 5 -пинге барат
  14. Pin 12 жерге коюлган темир жолго барат
  15. Pin 13 Arduino боюнча 4 -пинге барат
  16. Pin 14 потенциометрдин арт жагына барат
  17. Pin 15 Power темир жолуна барат
  18. Pin 16 жер астындагы темир жолго барат.

Эми сиз LCD экранды колдонуу үчүн кодуңузду жаңыртышыңыз керек болот. Бул үчүн сиз libary Liquid Crystal колдоносуз. Сиздин LCD басма билдирүүлөрүңүзгө этият болуңуз. Жаңы билдирүү керек болгондо экранды тазалоону унутпаңыз. Ошондой эле, эки сапты колдонгуңуз келгенде, курсорду коюуну унутпаңыз.

#кошуу

LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // ЖК экранды орнотот

int child1ButtonPin = 13; // Бул биздин баскыч баскычы int child2ButtonPin = 12ге туташкан пин; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Баскычтын абалын окуйт (күйгүзүү/өчүрүү) 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 buzzer = 9; // Буззер

// орнотуу функциясы, сиз тактаны кайра орнотууну басканда же иштеткенде бир жолу иштейт

void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Бала"); lcd.setCursor (0, 1); lcd.print ("Жүрүм -турумду өзгөрткүч"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (ызы -чуу, ЧЫГУУ); } // цикл функциясы кайра -кайра иштейт түбөлүккө void loop () {lcd.setCursor (0, 0); // баскычтын абалын окуу (күйгүзүү же өчүрүү) child1ButtonState = digitalRead (child1ButtonPin);

child2ButtonState = digitalRead (child2ButtonPin);

child3ButtonState = digitalRead (child3ButtonPin);

child4ButtonState = digitalRead (child4ButtonPin);

эгерде (child1ButtonState! = child1PreviousState)

{if (child1ButtonState == HIGH) // Баскыч басылат {lcd.clear (); child1Strike ++; Serial.println (String ("Child 1 has Has:") + child1Strike + "strike"); lcd.print ("Бала 1ге ээ:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Соккулар!");

эгер (child1Strike> = 3)

{Serial.println ("Бала 1 негизделген!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Child 1 is"); lcd.setCursor (0, 1); lcd.print ("Негизделген!");

обон (коңгуроо, 5000, 500); // 5 герц үн 5 миллисекундка жөнөтөт

}

кечигүү (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Баскыч басылат {child2Strike ++; Serial.println (String ("Бала 2де:") + child2Strike + "соккулар"); lcd.print ("Бала 2ге ээ:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Соккулар!"); if (child2Strike> = 3) {Serial.println ("Child 2 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Child 2 is"); lcd.setCursor (0, 1); lcd.print ("Негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}

эгерде (child3ButtonState! = child3PreviousState)

{lcd.clear (); if (child3ButtonState == HIGH) // Баскыч басылат {child3Strike ++; Serial.println (String ("Child 3 ээ:") + child3Strike + "урат"); lcd.print ("Бала 3кө ээ:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Соккулар!"); if (child3Strike> = 3) {Serial.println ("Child 3 Is Grounded!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Бала 3 - бул"); lcd.setCursor (0, 1); lcd.print ("Негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}

эгер (child4ButtonState! = child4PreviousState)

{lcd.clear (); if (child4ButtonState == HIGH) // Баскыч басылат {child4Strike ++; Serial.println (String ("Бала 4кө ээ:") + child4Strike + "соккулар"); lcd.print ("Бала 4кө ээ:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Соккулар!");

эгер (child4Strike> = 3)

{Serial.println ("4 -бала негизделген!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Child 4 is"); lcd.setCursor (0, 1); lcd.print ("Негизделген!"); обон (коңгуроо, 5000, 500); } кечигүү (3000); }}} Жана бул, баланын жүрүм -турумун өзгөрткүчтү түзүү үчүн сизге ушул гана керек

Сунушталууда: