Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Uşaq Davranışı Dəyişdiricisi uşağınızın neçə dəfə problem yaşadığını (aka Strikes) qeyd edir və üçə çatdıqda bir səs siqnalı sönür və bir lcd ekran əsaslandırıldığını bildirir.
Addım 1: Sadə Başlayın: Bir Düymə əlavə edin
Bu layihədə ilk addım sadədir. 1 Düymə əlavə edin. Bu addımda sizə 4 Male -to Wire Tel, 1 220 Resisitor və bir düyməyə ehtiyacınız var.
- Güc tərəfindəki 5V -ni çörək lövhəsindəki müsbət sıraya bağlayın
-
GND -ni çörək panelinin mənfi tərəfinə bağlayın
- Düyməni çörək taxtasına daxil edin
-
Pozitiv cərgədəki gücü düymənin sol alt hissəsinə qoşun
- Düymənin sağ alt hissəsindəki bir müqavimətdən istifadə edərək düyməni çörək taxtasının mənfi cərgəsinə qoyun.
- Arduinonun Rəqəmsal tərəfindəki 13 nömrəli düyməni sağ üst tərəfə bağlayın.
Düymənin qeydiyyatdan keçdiyini kodunuzla doğrulayın:
int child1ButtonPin = 13; // Bu, düyməmizin bağlı olduğu pindir
int child1ButtonState = 0; // Düymənin vəziyyətini oxuyur (aç/söndür)
int child1Strike = 0; // Uşağın neçə zərbəsi var
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); pinMode (uşaq1ButtonPin, GİRİŞ); } // döngə funksiyası təkrar -təkrar işləyir sonsuza qədər void loop () {// düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Düyməyə basılır {Serial.println ("HIGH"); gecikmə (5000); }
əgər (child1ButtonState == LOW)
{Serial.println ("LOW"); gecikmə (5000); }}
Addım 2: Düyməni basmaq üçün kodu dəyişdirin
Bir düyməni basmaq üçün kodu dəyişdirin:
int child1ButtonPin = 13; // Bu, düyməmizin child1ButtonState = 0 ilə əlaqəli olduğu pin; // Düymənin vəziyyətini oxuyur (açma/söndürmə) int child1PreviousState = 0; // Əvvəlki düymə vəziyyəti int child1Strike = 0;
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); pinMode (uşaq1ButtonPin, GİRİŞ); } // döngə funksiyası təkrar -təkrar işləyir sonsuza qədər void loop () {// düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Düyməyə basılır {child1Strike ++; Serial.println (child1Strike); gecikmə (1000); }}
}
Sonra Məcəlləni dəyişdirin ki, uşaq 3 zərbə alsın və bundan sonra əsaslandırılmış bir mesaj alsın:
int child1ButtonPin = 13; // Bu, düyməmizin child1ButtonState = 0 ilə əlaqəli olduğu pin; // Düymənin vəziyyətini oxuyur (açma/söndürmə) int child1PreviousState = 0; int child1Strike = 0;
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); pinMode (uşaq1ButtonPin, GİRİŞ); } // loop funksiyası təkrar -təkrar işləyir void loop () {// düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Düyməyə basılır {child1Strike ++; Serial.println (child1Strike);
əgər (child1Strike> = 3)
{Serial.println ("1 -ci Uşaq Torpaqlıdır!"); } gecikmə (3000); }}
}
Serial İzləyicisi yuxarıdakı şəklə bənzəməlidir.
Qeyd: Gecikmə ilə rahat olduğunuzdan əmin olun. Bir az gecikmə və birdən çox düyməni basmağı qeyd edəcək!
Addım 3: Uşaqlarınız olduğu qədər düymə əlavə edin
Bu addımda sadəcə son iki addımı kopyalayırıq. Uşaqlar etdiyiniz qədər çox düymə əlavə edin. Mənim vəziyyətimdə dörd əlavə edirəm. Düymənin bağlı olduğu rəqəmsal pin kodunuzu dəyişdirdiyinizə əmin olun. Mənim vəziyyətimdə düymələrimi əlavə etmək üçün 12 -dən 10 -a qədər sancaqlar istifadə etdim. Burada xatırlatmaq lazımdırsa, 1 -ci addımdır:
-
Güc tərəfindəki 5V -ni çörək lövhəsindəki müsbət sıraya bağlayın
- GND -ni çörək panelinin mənfi tərəfinə bağlayın
-
Düyməni çörək taxtasına daxil edin Düymənin sol alt hissəsindəki pozitiv cərgədəki gücü qoşun
- Düymənin sağ alt hissəsindəki bir müqavimətdən istifadə edərək düyməni çörək taxtasının mənfi cərgəsinə qoyun.
- Arduinonun Rəqəmsal tərəfindəki (pin nömrənizi) düymənin sağ üst tərəfinə bağlayın.
Bütün düymələrinizi idarə etmək üçün kodu da dəyişdirməlisiniz. Zəhmət olmasa unutmayın ki, istifadə etdiyiniz Stringlərə diqqətli olmaq lazımdır. Kiçik hərflərə birlikdə əlavə edə bilməzsiniz. 1 -i String obyekti elan etmək ən yaxşısıdır.
int child1ButtonPin = 13; // Bu, düyməmizin child2ButtonPin = 12 ilə bağlı olduğu pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Düymənin vəziyyətini oxuyur (açma/söndürmə) 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;
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); pinMode (uşaq1ButtonPin, GİRİŞ); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); } // loop funksiyası təkrar -təkrar işləyir void loop () {// düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
əgər (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Düyməyə basılır {child1Strike ++; Serial.println (String ("Uşaq 1 Var:") + uşaq1Strike + "vurur");
əgər (child1Strike> = 3)
{Serial.println ("1 -ci Uşaq Torpaqlıdır!"); } gecikmə (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Düyməyə basılır {child2Strike ++; Serial.println (String ("Uşaq 2 var:") + child2Strike + "zərbələr");
əgər (child2Strike> = 3)
{Serial.println ("2 -ci Uşaq Torpaqlıdır!"); } gecikmə (3000); }}
əgər (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Düyməyə basılır {child3Strike ++; Serial.println (String ("3 -cü uşaq:") + child3Strike + "zərbələr");
əgər (child3Strike> = 3)
{Serial.println ("3 -cü Uşaq Torpaqlıdır!"); } gecikmə (3000); }}
əgər (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Düyməyə basılır {child4Strike ++; Serial.println (String ("Uşaq 4 var:") + child4Strike + "zərbələr");
əgər (child4Strike> = 3)
{Serial.println ("4 -cü Uşaq Torpaqlıdır!"); } gecikmə (3000); }}}
Addım 4: Buzzer əlavə edin
İndi uşaqlarınızın əsaslı olduğunu bildiklərindən əmin olun. Bir səs siqnalı əlavə edək. Səs siqnalı bağlamaq üçün bu sadə addımları izləyin.
- Çörək taxtanıza bir Buzzer əlavə edin, bir LCD ekranı göründüyü üçün yer planlayın.
- Postiv tərəfi (səs siqnalı postiv tərəfində + işarəsi olmalıdır) seçdiyiniz Pin -ə qoşun. 9 etdim.
- Digər tərəfi çörək taxtanızın topraklanmış rayına bağlayın.
Sonra, bir uşaq yerdən düşəndə səs siqnalı söndürmək üçün kodunuzu dəyişdirin. Səs siqnalınızı kodlaşdırmağın bir neçə fərqli yolu var, amma sadəliyi üçün tonu (buzzerName, hertz, müddəti) bəyənirəm. Buna misal olaraq ton ola bilər (buzzer, 4000, 300).
int child1ButtonPin = 13; // Bu, düyməmizin child2ButtonPin = 12 ilə bağlı olduğu pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Düymənin vəziyyətini oxuyur (açma/söndürmə) 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;
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); pinMode (uşaq1ButtonPin, GİRİŞ); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (səs siqnalı, ÇIXIŞ); } // loop funksiyası təkrar -təkrar işləyir void loop () {// düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
əgər (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Düyməyə basılır {child1Strike ++; Serial.println (String ("Uşaq 1 Var:") + uşaq1Strike + "vurur");
əgər (child1Strike> = 3)
{Serial.println ("1 -ci Uşaq Torpaqlıdır!"); ton (səs siqnalı, 5000, 500); // 5 millisekund üçün 5 hertz səs göndərir
}
gecikmə (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Düyməyə basılır {child2Strike ++; Serial.println (String ("2 -ci uşaq:") + child2Strike + "zərbələr");
əgər (child2Strike> = 3)
{Serial.println ("2 -ci Uşaq Torpaqlıdır!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}
əgər (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Düyməyə basılır {child3Strike ++; Serial.println (String ("3 -cü uşaq:") + child3Strike + "zərbələr");
əgər (child3Strike> = 3)
{Serial.println ("3 -cü Uşaq Torpaqlıdır!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}
əgər (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Düyməyə basılır {child4Strike ++; Serial.println (String ("Uşaq 4 var:") + child4Strike + "zərbələr");
əgər (child4Strike> = 3)
{Serial.println ("4 -cü Uşaq Torpaqlıdır!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}}
Addım 5: LCD ekran əlavə edin
İndi aydın və asan oxumaq üçün bir LCD ekrana sahib olun.
- Birincisi, lcd ekranı idarə etmək üçün çörək taxtanıza bir potansiyometr əlavə edin. Harada qoyduğunuza diqqətli olun, çünki ehtimal ki, artıq yeriniz tükənir.
- Potansiyometrenizi elektrik rayına bağlamaq üçün sol öndən istifadə edin
- Potansiyometrinizi yerə bağlamaq üçün ön sağdan istifadə edin.
- Arxa tərəfi lcd ekrana bağlanacaq.
- LCD ekranı çörək taxtanıza əlavə edin
- İlk ekran pinini topraklama rayına bağlayın
- İkinci pimi elektrik rayına bağlayın.
- Üçüncü LCD pin, Arduino -da Pin 8 -ə gedir
- Dördüncü LCD pin, Arduino -da Pin 7 -ə gedir
- Beşinci Arduino -da Pin 6 -a gedir
- Altıncı Pin, Arduino -da 5 -ci pinə gedir
- LCD ekranda 7 -dən 10 -a qədər olan pinlər boşdur
- Pin 11 Arduino -da 5 -ci Pin -ə gedir
- Pin 12 topraklanmış dəmir yolu gedir
- 13 -cü pin Arduino -da 4 -cü pinə gedir
- Pin 14 potensiometrin arxasına gedir
- Pin 15 güc rayına gedir
- Pin 16 Yerüstü Dəmiryoluna gedir.
İndi LCD ekrandan istifadə etmək üçün kodunuzu yeniləməlisiniz. Bunun üçün libary Liquid Crystal istifadə edəcəksiniz. LCD çap ifadələrinizə diqqətli olun. Yeni bir mesaj lazım olduqda ekranı silməyi unutmayın. Həm də iki sətirdən istifadə etmək istədiyiniz zaman imleci qurmağı unutmayın.
#daxil edin
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // LCD Ekranı təyin edir
int child1ButtonPin = 13; // Bu, düyməmizin int child2ButtonPin = 12 ilə bağlı olduğu pin; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0; // Düymənin vəziyyətini oxuyur (açma/söndürmə) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // düymənin əvvəlki vəziyyəti basıldı int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; // Bir uşağın int child2Strike = 0 neçə zərbəsi var; int child3Strike = 0; int child4Strike = 0; const int buzzer = 9; // Buzzer
// lövhəni sıfırladığınızda və ya gücə basdığınızda quraşdırma funksiyası bir dəfə işləyir
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Uşaq"); lcd.setCursor (0, 1); lcd.print ("Davranışı dəyişdirən"); pinMode (uşaq1ButtonPin, GİRİŞ); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (səs siqnalı, ÇIXIŞ); } // loop funksiyası təkrar -təkrar işləyir void loop () {lcd.setCursor (0, 0); // düymənin vəziyyətini oxuyun (yandırın və ya söndürün) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
əgər (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Düyməyə basılır {lcd.clear (); child1Strike ++; Serial.println (String ("Uşaq 1 Var:") + uşaq1Strike + "vurur"); lcd.print ("1 -ci Uşaq:"); lcd.setCursor (0, 1); lcd.print (child1Strike); lcd.print ("Zərbələr!");
əgər (child1Strike> = 3)
{Serial.println ("1 -ci Uşaq Torpaqlıdır!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Uşaq 1 -dir"); lcd.setCursor (0, 1); lcd.print ("Toplanmış!");
ton (səs siqnalı, 5000, 500); // 5 millisekund üçün 5 hertz səs göndərir
}
gecikmə (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == YÜKSEK) // Düymə basıldığında {child2Strike ++; Serial.println (String ("2 -ci uşaq:") + child2Strike + "zərbələr"); lcd.print ("2 -ci Uşaq:"); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print ("Zərbələr!"); if (child2Strike> = 3) {Serial.println ("Uşaq 2 Zəmindir!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Uşaq 2 -dir"); lcd.setCursor (0, 1); lcd.print ("Toplanmış!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}
əgər (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == YÜKSEK) // Düyməyə basılır {child3Strike ++; Serial.println (String ("3 -cü uşaq:") + child3Strike + "zərbələr"); lcd.print ("3 uşaq var:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Zərbələr!"); if (child3Strike> = 3) {Serial.println ("3 -cü Uşaq Torpaqlıdır!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("3 -cü uşaqdır"); lcd.setCursor (0, 1); lcd.print ("Toplanmış!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}
əgər (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == YÜKSEK) // Düyməyə basıldığında {child4Strike ++; Serial.println (String ("Uşaq 4 var:") + child4Strike + "zərbələr"); lcd.print ("Uşaq 4 Var:"); lcd.setCursor (0, 1); lcd.print (child4Strike); lcd.print ("Zərbələr!");
əgər (child4Strike> = 3)
{Serial.println ("4 -cü Uşaq Torpaqlıdır!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("4 -cü uşaqdır"); lcd.setCursor (0, 1); lcd.print ("Toplanmış!"); ton (səs siqnalı, 5000, 500); } gecikmə (3000); }}} Budur, öz Uşaq Davranış Dəyişdiricisini qurmaq üçün lazım olan hər şey budur