Mundarija:
- 1 -qadam: oddiy boshlash: tugma qo'shing
- 2 -qadam: tugmachalarni bosish uchun kodni o'zgartiring
- 3 -qadam: Farzandingiz boricha ko'p tugmachalarni qo'shing
- 4 -qadam: Buzzer qo'shish
- 5 -qadam: LCD displey qo'shing
Video: Bolaning xulq -atvorini o'zgartiruvchi: 5 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-02-01 14:43
Bolaning xulq -atvori modifikatori sizning farzandingiz necha marta muammoga duch kelganini yozadi (aka Strikes) va ular uchga yetganda, ovozli signal o'chadi va LCD displeyi ularning ishdan chiqqanligini e'lon qiladi.
1 -qadam: oddiy boshlash: tugma qo'shing
Loyihaning birinchi bosqichi oddiy. 1 tugma qo'shing. Ushbu bosqichda sizga 4 ta erkakdan erkakgacha simlar, 1 220 ta rezistor va tugma kerak.
- Quvvat tomonidagi 5V ni non panelidagi ijobiy qatorga ulang
-
GND -ni non panelining salbiy tomoniga ulang
- Tugmani non paneliga joylashtiring
-
Pozitsion qatordagi quvvatni tugmachaning chap pastki qismiga ulang
- Rezistor yordamida tugmachaning o'ng pastki qismidagi non panelining salbiy qatorini bosing.
- Arduinoning raqamli tomonidagi 13 -sonni tugmachaning o'ng yuqori qismiga ulang.
Tugma ro'yxatdan o'tayotganligini kodingiz bilan tasdiqlang:
int child1ButtonPin = 13; // Bu bizning tugmachamiz ulangan pin
int child1ButtonState = 0; // Tugma holatini o'qiydi (yoqish/o'chirish)
int child1Strike = 0; // Bolaning qancha zarbasi bor
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {// tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Tugma bosiladi {Serial.println ("HIGH"); kechikish (5000); }
agar (child1ButtonState == LOW)
{Serial.println ("LOW"); kechikish (5000); }}
2 -qadam: tugmachalarni bosish uchun kodni o'zgartiring
Tugmani bosish uchun kodni o'zgartiring:
int child1ButtonPin = 13; // Bu bizning tugmachamiz child1ButtonState = 0 ga ulangan pin; // tugma holatini o'qiydi (yoqish/o'chirish) int child1PreviousState = 0; // Oldingi tugma holati int child1Strike = 0;
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {// tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Tugma bosiladi {child1Strike ++; Serial.println (child1Strike); kechikish (1000); }}
}
Keyin kodni o'zgartiring, shunda bola 3 ta zarba oladi, shundan so'ng ular asoslanmaganligi to'g'risida xabar oladi:
int child1ButtonPin = 13; // bu bizning tugmachamiz child1ButtonState = 0 ga ulangan pin; // tugma holatini o'qadi (yoqish/o'chirish) int child1PreviousState = 0; int child1Strike = 0;
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {// tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Tugma bosiladi {child1Strike ++; Serial.println (child1Strike);
agar (child1Strike> = 3)
{Serial.println ("1 -bola asoslantirilgan!"); } kechikish (3000); }}
}
Serial monitori yuqoridagi rasmga o'xshash bo'lishi kerak.
Eslatma: Kechiktirish sizga qulay ekanligiga ishonch hosil qiling. Biroz kechikish va u 1 tugmachani bir martadan ko'proq bosadi!
3 -qadam: Farzandingiz boricha ko'p tugmachalarni qo'shing
Bu bosqichda biz faqat oxirgi ikki qadamni nusxa ko'chiramiz. Bolalar kabi qancha tugmachani qo'shsangiz. Menimcha, men to'rttasini qo'shaman. Tugma bog'langan raqamli pin kodini o'zgartirganingizga ishonch hosil qiling. Mening holatimda tugmachalarni qo'shish uchun 12 dan 10 gacha pimlardan foydalanardim. Agar sizga bu erda eslatish kerak bo'lsa, 1 -qadam:
- Quvvat tarafidagi 5V ni non panelidagi ijobiy qatorga ulang
-
GND -ni non panelining salbiy tomoniga ulang
- Tugmachani non paneliga joylashtiring Quvvatni tugmachaning chap pastki qismiga qo'ying.
-
Rezistor yordamida tugmachaning o'ng pastki qismidagi non panelining salbiy qatorini bosing.
- Arduinoning raqamli tomonidagi (pin raqamingizni) tugmani o'ng yuqori qismiga ulang.
Shuningdek, siz barcha tugmachalarni boshqarish uchun kodni o'zgartirishingiz kerak bo'ladi. Shuni yodda tutingki, agar siz ishlatgan satrlarga ehtiyot bo'lishingiz kerak bo'lsa. Siz kichik harflarga birgalikda qo'sha olmaysiz. String obyekti sifatida 1 deb e'lon qilish eng yaxshisidir.
int child1ButtonPin = 13; // Bu bizning tugmachamiz child2ButtonPin = 12 ga ulangan pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // tugma holatini o'qiydi (yoqish/o'chirish) 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;
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {// tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
agar (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Tugma bosiladi {child1Strike ++; Serial.println (String ("1 -bolada:") + child1Strike + "urish");
agar (child1Strike> = 3)
{Serial.println ("1 -bola asoslantirilgan!"); } kechikish (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Tugma bosiladi {child2Strike ++; Serial.println (String ("2 -bolada:") + child2Strike + "urish");
agar (child2Strike> = 3)
{Serial.println ("2 -bola asoslantirilgan!"); } kechikish (3000); }}
agar (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Tugma bosiladi {child3Strike ++; Serial.println (String ("3 -bolada:") + child3Strike + "urish");
agar (child3Strike> = 3)
{Serial.println ("3 -bola asoslantirilgan!"); } kechikish (3000); }}
agar (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Tugma bosiladi {child4Strike ++; Serial.println (String ("4 -bolada:") + child4Strike + "urish");
agar (child4Strike> = 3)
{Serial.println ("4 -bola asosli!"); } kechikish (3000); }}}
4 -qadam: Buzzer qo'shish
Keling, sizning bolalaringiz ular asosli ekanligini bilishlariga ishonch hosil qilaylik. Qo'ng'iroq qilaylik. Buzzerni ulash uchun quyidagi oddiy qadamlarni bajaring.
- O'zingizning taxtangizga Buzzer -ni qo'shing, LCD displey paydo bo'lgandan keyin bo'sh joyni rejalashtiring.
- Postiv tomonni (zilzilaning pozitsiyali tomonida + belgisi bo'lishi kerak) siz tanlagan Pinga ulang. Men 9 qildim.
- Boshqa tomonni non taxtangizning erga ulangan relsiga ulang.
Keyin, bola erga tushganda signal signalini o'chirish uchun kodingizni o'zgartiring. Sizning ovozli signalingizni kodlashning bir necha xil usullari bor, lekin men ohangni (buzzerName, herts, davomiyligi) soddaligi bilan yaxshi ko'raman, shuning uchun bunga misol bo'la oladi (buzzer, 4000, 300).
int child1ButtonPin = 13; // Bu bizning tugmachamiz child2ButtonPin = 12 ga ulangan pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // tugma holatini o'qiydi (yoqish/o'chirish) 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;
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (signal, OUTPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {// tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
agar (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Tugma bosiladi {child1Strike ++; Serial.println (String ("1 -bolada:") + child1Strike + "urish");
agar (child1Strike> = 3)
{Serial.println ("1 -bola asoslantirilgan!"); ohang (signal, 5000, 500); // 5 millisekundga 5 gertsli ovoz yuboradi
}
kechikish (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Tugma bosiladi {child2Strike ++; Serial.println (String ("2 -bolada:") + child2Strike + "urish");
agar (child2Strike> = 3)
{Serial.println ("2 -bola asoslantirilgan!"); ohang (signal, 5000, 500); } kechikish (3000); }}
agar (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Tugma bosiladi {child3Strike ++; Serial.println (String ("3 -bolada:") + child3Strike + "urish");
agar (child3Strike> = 3)
{Serial.println ("3 -bola asoslantirilgan!"); ohang (signal, 5000, 500); } kechikish (3000); }}
agar (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Tugma bosiladi {child4Strike ++; Serial.println (String ("4 -bolada:") + child4Strike + "urish");
agar (child4Strike> = 3)
{Serial.println ("4 -bola asosli!"); ohang (signal, 5000, 500); } kechikish (3000); }}}
5 -qadam: LCD displey qo'shing
Endi LCD displeyi aniq va oson o'qish uchun ruxsat beradi.
- Birinchidan, LCD displeyni boshqarish uchun non paneliga potentsiometr qo'shing. Qaerga qo'yganingizga ehtiyot bo'ling, chunki hozir bo'sh joyingiz tugab qolgandir.
- Potentsiometrni elektr tarmog'iga ulash uchun old chapdan foydalaning
- Potentsiometrni erga ulash uchun old o'ngdan foydalaning.
- Orqa tomon LCD displeyga ulanadi.
- LCD displeyni taxtangizga qo'shing
- Birinchi ekran pinini topraklama rayiga ulang
- Ikkinchi pinni elektr tarmog'iga ulang.
- Uchinchi LCD -pin Arduino -dagi 8 -pinga o'tadi
- To'rtinchi LCD pin Arduino -dagi 7 -pinga o'tadi
- Beshinchisi Arduino -dagi 6 -pinga o'tadi
- Oltinchi pin Arduino 5 -piniga o'tadi
- LCD displeyda 7 dan 10 gacha bo'lgan pinlar bo'sh
- 11 -pin Arduino -dagi 5 -pinga o'tadi
- 12 -chi pin yerga o'rnatilgan temir yo'lga o'tadi
- 13 -pin Arduino -dagi 4 -pinga o'tadi
- 14 -pin potensiometrning orqa tomoniga o'tadi
- 15 -pin quvvat rayiga o'tadi
- 16 -pin yer osti temir yo'liga o'tadi.
Endi siz LCD ekranni ishlatish uchun kodingizni yangilashingiz kerak bo'ladi. Buning uchun siz libary suyuq kristalidan foydalanasiz. Lcd bosma bayonotlaringizga ehtiyot bo'ling. Yangi xabar kerak bo'lganda ekranni tozalashni unutmang. Shuningdek, ikkita satrdan foydalanmoqchi bo'lganingizda kursorni o'rnatishni unutmang.
#qo'shing
LiquidCrystal LCD (3, 4, 5, 6, 7, 8); // LCD ekranni o'rnatadi
int child1ButtonPin = 13; // Bu bizning tugmachamiz int child2ButtonPin = 12 ga ulangan pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // tugma holatini o'qiydi (yoqish/o'chirish) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // tugmachaning oldingi holati int child2PreviousState = 0 bosilgan; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Bolada qancha bola bor int child2Strike = 0; int child3Strike = 0; int child4Strike = 0; const int buzzer = 9; // Buzzer
// taxtani qayta o'rnatish yoki quvvat tugmasini bosganingizda sozlash funktsiyasi bir marta ishlaydi
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Bola"); lcd.setCursor (0, 1); lcd.print ("Xatti -harakatni o'zgartiruvchi"); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (signal, OUTPUT); } // loop funktsiyasi qayta -qayta ishlaydi abadiy void loop () {lcd.setCursor (0, 0); // tugma holatini o'qish (yoqish yoki o'chirish) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
agar (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Tugma bosiladi {lcd.clear (); child1Strike ++; Serial.println (String ("1 -bolada:") + child1Strike + "urish"); lcd.print ("1 -bolada bor:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Ish tashlashlar!");
agar (child1Strike> = 3)
{Serial.println ("1 -bola asoslantirilgan!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("1 -bola"); lcd.setCursor (0, 1); lcd.print ("Tuproqli!");
ohang (signal, 5000, 500); // 5 millisekundga 5 gertsli ovoz yuboradi
}
kechikish (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Tugma bosiladi {child2Strike ++; Serial.println (String ("2 -bolada:") + child2Strike + "urish"); lcd.print ("2 -bolada:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Ish tashlashlar!"); if (child2Strike> = 3) {Serial.println ("2 -bola asosli!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("2 -bola"); lcd.setCursor (0, 1); lcd.print ("Tuproqli!"); ohang (signal, 5000, 500); } kechikish (3000); }}
agar (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Tugma bosiladi {child3Strike ++; Serial.println (String ("3 -bolada:") + child3Strike + "urish"); lcd.print ("3 -bolada:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Ish tashlashlar!"); if (child3Strike> = 3) {Serial.println ("3 -bola asosli!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("3 -bola"); lcd.setCursor (0, 1); lcd.print ("Tuproqli!"); ohang (signal, 5000, 500); } kechikish (3000); }}
agar (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Tugma bosiladi {child4Strike ++; Serial.println (String ("4 -bolada:") + child4Strike + "urish"); lcd.print ("4 -bolada:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Ish tashlashlar!");
agar (child4Strike> = 3)
{Serial.println ("4 -bola asosli!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("4 -bola"); lcd.setCursor (0, 1); lcd.print ("Tuproqli!"); ohang (signal, 5000, 500); } kechikish (3000); }}} Va bu, o'z shaxsiy bolalar xulq -atvorini yaratish uchun kerak bo'lgan narsa
Tavsiya:
Bolaning avtomatlashtirilgan mandalori: 10 qadam (rasmlar bilan)
Bolaning avtomatlashtirilgan mandalori: Siz bu yangi o'yinchoqni sotib oldingiz (sizdan boshqa birov uchun) va uni "faol" ga qo'yishni xohlaysiz. qurilmaga zarar bermasdan ko'rsatish. Afsuski, u faqat boshini tekkizganda ishlaydi, agar siz metall plyonkaning yuqori qismiga yopishtirsangiz
Rangni o'zgartiruvchi optik tolali mato: 10 qadam (rasmlar bilan)
Rangni o'zgartiruvchi optik tolali mato: taxminan 150 dollarlik bir hovli va kesish cheklovlari ko'p bo'lsa, bozorda optik tolali mato eng qulay material emas. Ammo siz o'zingizning optik tolali filamentingiz, tulingiz va LED -laringiz bilan har qanday shaklda o'zingiz yaratishingiz mumkin
Ovozni o'zgartiruvchi: 5 qadam (rasmlar bilan)
Ovozni o'zgartiruvchi: Salom! Siz har doim ovozingizni filtrlash yoki modulyatsiya kabi o'zgartirishi mumkin bo'lgan akvitsiya/restitutsiya ovoz tizimini yaratmoqchi edingiz! Ovoz almashtirgich siz uchun yaratilgan! Bu loyihaga taxminan 10 soat vaqt kerak va byudjeti 173.78.1 DE0 nano Xo'sh
Rangni o'zgartiruvchi chiroqlar va Bluetooth xavfsizlik demosi: 7 qadam (rasmlar bilan)
Rangni o'zgartiruvchi chiroqlar va Bluetooth xavfsizligi demosi: Ushbu ko'rsatmada men Android (Samsung, Google va boshqalar) yoki Apple smartfoni yoki planshet yordamida Bluetooth orqali masofadan boshqariladigan rangni o'zgartiruvchi yorug'lik displeyini qanday yaratishni tushuntiraman. Bu arzon. Yoshlar uchun ajoyib loyiha
Rangni o'zgartiruvchi Shadowbox Light: 5 qadam (rasmlar bilan)
Rangni o'zgartiruvchi Shadowbox Light: ta'tildan so'ng, biz Ikea-dan foydalanilmaydigan soya qutilarining haddan tashqari ko'pligi bilan yakunlandik. Shunday qilib, men akam uchun tug'ilgan kun sovg'alaridan birini yasashga qaror qildim. G'oya akkumulyator bilan ishlaydigan, o'z guruhining logotipi bilan yorituvchi xususiyatni yaratish edi