Spisu treści:
- Krok 1: Zacznij prosto: Dodaj przycisk
- Krok 2: Zmodyfikuj kod, aby zarejestrować naciśnięcia przycisków
- Krok 3: Dodaj tyle przycisków, ile masz dzieci
- Krok 4: Dodaj brzęczyk
- Krok 5: Dodaj ekran LCD
Wideo: Modyfikator zachowania dziecka: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-02-01 14:42
Modyfikator zachowania dziecka rejestruje, ile razy Twoje dziecko wpadło w kłopoty (aka Strikes), a kiedy osiągną trzy, włącza się brzęczyk, a ekran LCD informuje, że jest uziemione.
Krok 1: Zacznij prosto: Dodaj przycisk
Pierwszy krok w tym projekcie jest prosty. Dodaj 1 przycisk. Na tym etapie potrzebujesz 4 przewodów z męskiego na męskie, 1220 rezystora i przycisku.
- Podłącz 5 V po stronie zasilania do dodatniego rzędu na płytce stykowej
-
Podłącz GND do ujemnej strony płytki stykowej
- Włóż przycisk na płytkę stykową
-
Podłącz zasilanie w rzędzie dodatnim do lewej dolnej części przycisku;
- Uziemić przycisk za pomocą rezystora w prawej dolnej części przycisku do ujemnego rzędu płytki stykowej.
- Podłącz nr 13 po cyfrowej stronie Arduino do prawej górnej strony przycisku.
Sprawdź kodem, czy przycisk się rejestruje:
int child1ButtonPin = 13;//To jest pin, do którego podłączony jest nasz przycisk
int child1ButtonState = 0;//Odczytuje stan przycisku (on/off)
int child1Strike = 0; // Ile uderzeń ma dziecko
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // funkcja pętli działa w kółko na zawsze void loop() { //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { Serial.println("HIGH"); opóźnienie(5000); }
if(child1ButtonState == LOW)
{ Serial.println("NISKI"); opóźnienie(5000); } }
Krok 2: Zmodyfikuj kod, aby zarejestrować naciśnięcia przycisków
Zmodyfikuj Kod, aby zarejestrować przycisk naciśnij:
int child1ButtonPin = 13;//To jest pin, z którym nasz przycisk jest połączony doint child1ButtonState = 0;//Odczytuje stan przycisku (on/off) int child1PreviousState = 0; // Poprzedni stan przycisku int child1Strike = 0;
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // funkcja pętli działa w kółko na zawsze void loop() { //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState != child1PreviousState) { if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { child1Strike ++; Serial.println(child1Strike); opóźnienie (1000); } }
}
Następnie Zmodyfikuj Kodeks, aby dziecko otrzymało 3 strajki, po których otrzymało wiadomość, że jest uziemione:
int child1ButtonPin = 13;//To jest pin, z którym nasz przycisk jest połączony doint child1ButtonState = 0;//Odczytuje stan przycisku (on/off) int child1PreviousState = 0; int child1Strike = 0;
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); } // funkcja pętli działa w kółko na zawsze void loop() { //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin); if(child1ButtonState != child1PreviousState) { if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { child1Strike ++; Serial.println(child1Strike);
if(child1Strike >=3)
{ Serial.println("Dziecko 1 jest uziemione!"); } opóźnienie(3000); } }
}
Serial Monitor powinien wyglądać jak na powyższym obrazku.
Uwaga: upewnij się, że opóźnienie jest wygodne. Zbyt małe opóźnienie i zarejestruje jedno naciśnięcie przycisku jako więcej niż jedno!
Krok 3: Dodaj tyle przycisków, ile masz dzieci
W tym kroku po prostu kopiujemy kilka ostatnich kroków. Dodaj tyle przycisków, ile dzieci. W moim przypadku dodaję cztery. Pamiętaj, aby zmienić kod cyfrowy pin, do którego podłączony jest przycisk. W moim przypadku użyłem pinów od 12 do 10, aby dodać moje przyciski. Jeśli potrzebujesz przypomnienia tutaj, to Krok 1:
- Podłącz 5 V po stronie zasilania do dodatniego rzędu na płytce prototypowej
-
Podłącz GND do ujemnej strony płytki stykowej
- Włóż przycisk na płytkę stykową Podłącz zasilanie w rzędzie dodatnim do lewej dolnej części przycisku
-
Uziemić przycisk za pomocą rezystora w prawej dolnej części przycisku do ujemnego rzędu płytki stykowej.
- Połącz (twój numer pinu) po cyfrowej stronie Arduino z prawym górnym rogu przycisku.
Będziesz także musiał zmodyfikować kod, aby obsługiwał wszystkie twoje przyciski. Pamiętaj, że jeśli musisz uważać na użyte struny. Nie można dodawać razem do małych liter. Najlepiej zadeklarować 1 jako obiekt String.
int child1ButtonPin = 13;//To jest pin, z którym nasz przycisk jest połączony doint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Odczytuje stan przycisku (on/off) 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 dziecko3Strike = 0; int child4Strike = 0;
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); } // funkcja pętli działa w kółko na zawsze void loop() { //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { child1Strike ++; Serial.println(String("Dziecko 1 ma: ") + child1Strike + " strajki");
if(child1Strike >=3)
{ Serial.println("Dziecko 1 jest uziemione!"); } opóźnienie(3000); } } if(child2ButtonState != child2PreviousState) { if(child2ButtonState == HIGH)//Przycisk jest wciśnięty { child2Strike ++; Serial.println(String("Dziecko 2 ma:") + child2Strike + " strajki");
if(child2Strike >=3)
{ Serial.println("Dziecko 2 jest uziemione!"); } opóźnienie(3000); } }
if(child3ButtonState != child3PreviousState)
{ if(child3ButtonState == HIGH)//Przycisk jest wciśnięty { child3Strike ++; Serial.println(String("Dziecko 3 ma:") + child3Strike + " strajki");
if(child3Strike >=3)
{ Serial.println("Dziecko 3 jest uziemione!"); } opóźnienie(3000); } }
if(child4ButtonState != child4PreviousState)
{ if(child4ButtonState == HIGH)//Przycisk jest wciśnięty { child4Strike ++; Serial.println(String("Dziecko 4 ma:") + child4Strike + " strajki");
if(child4Strike >=3)
{ Serial.println("Dziecko 4 jest uziemione!"); } opóźnienie(3000); } } }
Krok 4: Dodaj brzęczyk
Teraz upewnijmy się, że twoje dzieci wiedzą, że są uziemione. Dodajmy brzęczyk. Aby podłączyć brzęczyk, wykonaj następujące proste czynności.
- Dodaj brzęczyk do płytki prototypowej, zaplanuj miejsce, ponieważ zbliża się ekran LCD.
- Podłącz stronę dodatnią (brzęczyk powinien mieć + po stronie dodatniej) z wybranym pinem. zrobiłem 9.
- Podłącz drugą stronę do uziemionej szyny płytki stykowej.
Następnie zmodyfikuj swój kod, aby wyłączyć brzęczyk, gdy dziecko zostanie uziemione. Istnieje kilka różnych sposobów kodowania twojego brzęczyka, ale lubię ton(nazwa brzęczyka, herc, czas trwania) ze względu na jego prostotę. Przykładem może być ton(buzzer, 4000, 300).
int child1ButtonPin = 13;//To jest pin, z którym nasz przycisk jest połączony doint child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Odczytuje stan przycisku (on/off) 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 dziecko3Strike = 0; int child4Strike = 0; const int brzęczyk = 2;
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); pinMode(brzęczyk, WYJŚCIE); } // funkcja pętli działa w kółko na zawsze void loop() { //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { child1Strike ++; Serial.println(String("Dziecko 1 ma: ") + child1Strike + " strajki");
if(child1Strike >=3)
{ Serial.println("Dziecko 1 jest uziemione!"); ton (brzęczyk, 5000, 500); // Wysyła dźwięk 5 Hz przez 5 milisekund
}
opóźnienie(3000); } } if(child2ButtonState != child2PreviousState) { if(child2ButtonState == HIGH)//Przycisk jest wciśnięty { child2Strike ++; Serial.println(String("Dziecko 2 ma:") + child2Strike + " strajki");
if(child2Strike >=3)
{ Serial.println("Dziecko 2 jest uziemione!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } }
if(child3ButtonState != child3PreviousState)
{ if(child3ButtonState == HIGH)//Przycisk jest wciśnięty { child3Strike ++; Serial.println(String("Dziecko 3 ma:") + child3Strike + " strajki");
if(child3Strike >=3)
{ Serial.println("Dziecko 3 jest uziemione!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } }
if(child4ButtonState != child4PreviousState)
{ if(child4ButtonState == HIGH)//Przycisk jest wciśnięty { child4Strike ++; Serial.println(String("Dziecko 4 ma:") + child4Strike + " strajki");
if(child4Strike >=3)
{ Serial.println("Dziecko 4 jest uziemione!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } } }
Krok 5: Dodaj ekran LCD
Teraz pozwala ekran LCD na wyraźny i łatwy odczyt.
- Najpierw dodaj potencjometr do płytki prototypowej, aby sterować ekranem LCD. Uważaj na to, gdzie go kładziesz, ponieważ prawdopodobnie już brakuje Ci miejsca.
- Użyj przedniego lewego, aby podłączyć potencjometr do szyny zasilającej
- Użyj prawego przodu, aby uziemić potencjometr.
- Tył zostanie podłączony do ekranu lcd.
- Dodaj ekran LCD do płytki prototypowej
- Uziemić pierwszy pin ekranu do szyny uziemiającej
- Podłącz drugi pin do szyny zasilającej.
- Trzeci pin LCD idzie do pinu 8 w Arduino
- Czwarty pin LCD przechodzi do pinu 7 w Arduino
- Piąta idzie do Pin 6 na Arduino
- Szósty pin idzie do pinu 5 w Arduino
- Piny od 7 do 10 na ekranie LCD są puste
- Pin 11 idzie do Pin 5 na Arduino
- Pin 12 idzie do uziemionej szyny
- Pin 13 idzie do Pin 4 na Arduino
- Pin 14 idzie z tyłu potencjometru
- Pin 15 idzie do szyny zasilania
- Pin 16 idzie do szyny uziemiającej.
Teraz będziesz musiał zaktualizować swój kod, aby korzystać z ekranu lcd. Do tego użyjesz biblioteki Liquid Crystal. Uważaj na swoje instrukcje drukowania na lcd. Pamiętaj, aby wyczyścić ekran, gdy potrzebujesz nowej wiadomości. Pamiętaj też o ustawieniu kursora, gdy chcesz użyć dwóch linii.
#włączać
LCD LiquidCrystal (3, 4, 5, 6, 7, 8); //Ustawia ekran LCD
int child1ButtonPin = 13;//To jest pin, z którym jest połączony nasz przycisk int child2ButtonPin = 12; int child3ButtonPin = 11; int child4ButtonPin = 10; int child1ButtonState = 0;//Odczytuje stan przycisku (on/off) int child2ButtonState = 0; int child3ButtonState = 0; int child4ButtonState = 0; int child1PreviousState = 0; // Poprzedni stan wciśniętego przycisku int child2PreviousState = 0; int child3PreviousState = 0; int child4PreviousState = 0; int child1Strike = 0; //Ile uderzeń ma dziecko int child2Strike = 0; int dziecko3Strike = 0; int child4Strike = 0; const int brzęczyk = 9; // brzęczyk
// funkcja konfiguracji uruchamia się raz po naciśnięciu przycisku reset lub włączeniu zasilania płyty
void setup() { Serial.begin(9600); lcd.początek(16, 2); lcd.print("Dziecko"); lcd.setCursor(0, 1); lcd.print("Modyfikator zachowania"); pinMode(child1ButtonPin, INPUT); pinMode(child2ButtonPin, INPUT); pinMode(child3ButtonPin, INPUT); pinMode(child4ButtonPin, INPUT); pinMode(brzęczyk, WYJŚCIE); } // funkcja pętli działa w kółko w nieskończoność void loop() { lcd.setCursor(0, 0); //odczytaj stan przycisku (włączony lub wyłączony) child1ButtonState = digitalRead(child1ButtonPin);
child2ButtonState = digitalRead(child2ButtonPin);
child3ButtonState = digitalRead(child3ButtonPin);
child4ButtonState = digitalRead(child4ButtonPin);
if(child1ButtonState != child1PreviousState)
{ if(child1ButtonState == HIGH)//Przycisk jest wciśnięty { lcd.clear(); dziecko1Uderzenie ++; Serial.println(String("Dziecko 1 ma: ") + child1Strike + " strajki"); lcd.print("Dziecko 1 ma:"); lcd.setCursor(0, 1); lcd.print(child1Strike); lcd.print("Strajki!");
if(child1Strike >=3)
{ Serial.println("Dziecko 1 jest uziemione!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dziecko 1 to"); lcd.setCursor(0, 1); lcd.print("Uziemiony!");
ton (brzęczyk, 5000, 500); // Wysyła dźwięk 5 Hz przez 5 milisekund
}
opóźnienie(3000); } } if(child2ButtonState != child2PreviousState) { lcd.clear(); if(child2ButtonState == HIGH)//Przycisk jest wciśnięty { child2Strike ++; Serial.println(String("Dziecko 2 ma:") + child2Strike + " strajki"); lcd.print("Dziecko 2 ma:"); lcd.setCursor(0, 1); lcd.print(child2Strike); lcd.print("Strajki!"); if(child2Strike >=3) { Serial.println("Dziecko 2 jest uziemione!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dziecko 2 to"); lcd.setCursor(0, 1); lcd.print("Uziemiony!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } }
if(child3ButtonState != child3PreviousState)
{ lcd.wyczyść(); if(child3ButtonState == HIGH)//Przycisk jest wciśnięty { child3Strike ++; Serial.println(String("Dziecko 3 ma:") + child3Strike + " strajki"); lcd.print("Dziecko 3 ma:"); lcd.setCursor(0, 1); lcd.print(child3Strike); lcd.print("Strajki!"); if(child3Strike >=3) { Serial.println("Dziecko 3 jest uziemione!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dziecko 3 to"); lcd.setCursor(0, 1); lcd.print("Uziemiony!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } }
if(child4ButtonState != child4PreviousState)
{ lcd.wyczyść(); if(child4ButtonState == HIGH)//Przycisk jest wciśnięty { child4Strike ++; Serial.println(String("Dziecko 4 ma:") + child4Strike + " strajki"); lcd.print("Dziecko 4 ma:"); lcd.setCursor(0, 1); lcd.print(child4Strike); lcd.print("Strajki!");
if(child4Strike >=3)
{ Serial.println("Dziecko 4 jest uziemione!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dziecko 4 to"); lcd.setCursor(0, 1); lcd.print("Uziemiony!"); ton (brzęczyk, 5000, 500); } opóźnienie(3000); } } } I to wszystko, czego potrzebujesz, aby zbudować własny modyfikator zachowania dziecka
Zalecana:
Nie siusiu, urządzenie do regulacji zachowania zwierząt, które powstrzymuje koty przed siusianiem w Twoim domu: 4 kroki
Nie siusiu teraz, urządzenie do regulacji zachowania zwierząt, które powstrzymuje koty przed siusianiem w twoim domu: Tak bardzo przeszkadzała mi moja kotka, że lubi sikać na moje łóżko, sprawdziłem wszystko, czego potrzebuje i zabrałem ją również do weterynarza. Po tym, jak załatwiłem wszystko, co mogłem pomyśleć i wysłuchałem słów lekarza, zdaję sobie sprawę, że po prostu ma złe zachowanie. Więc
Alternatywnie okludujący dichoptyczny modyfikator transmisji stereoskopowej 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 kroków
Alternatywnie okludujący dichoptyczny modyfikator transmisji stereoskopowej 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: Od jakiegoś czasu pracuję nad następcą oryginalnego AODMoST. Nowe urządzenie wykorzystuje szybszy i lepszy 32-bitowy mikrokontroler oraz szybszy analogowy przełącznik wideo. Pozwala to AODMoST 32 pracować z wyższymi rozdzielczościami i wdrażać nowe funkcjonalne
Alternatywnie okludujący dichoptyczny modyfikator transmisji stereoskopowej [ATmega328P+HEF4053B VGA Superimposer]: 7 kroków
Alternatywnie okludujący dichoptyczny modyfikator transmisji stereoskopowej [ATmega328P+HEF4053B VGA Superimposer]: Po moich eksperymentach ze szkłami ciekłokrystalicznymi używanymi do okluzji oczu (tu i tam), postanowiłem zbudować coś, co jest trochę bardziej wyrafinowane i nie zmusza użytkownika nosić PCB na czole (ludzie czasami mogą beha
Jak zrobić wagę dziecka za pomocą Arduino Nano, ogniwa obciążnikowego HX-711 i OLED 128X64 -- Kalibracja HX-711: 5 kroków
Jak zrobić wagę dziecka za pomocą Arduino Nano, ogniwa obciążnikowego HX-711 i OLED 128X64 || Kalibracja HX-711: Hello Instructables,Kilka dni temu zostałem ojcem uroczego dziecka?. Kiedy byłem w szpitalu, odkryłem, że waga dziecka jest tak ważna dla monitorowania wzrostu dziecka. Więc mam pomysł ? zrobić z siebie maszynę do wagi dziecka. w tym Instruktażowym
Kwiat dźwiękowy i świetlny dziecka: 6 kroków (ze zdjęciami)
Kwiat Dźwięku i Światła Dziecka: Zabawka dla naszego 3-miesięcznego dziecka (jestem Dziadkiem), aby przyciągnąć jej uwagę za pomocą Dźwięku i Światła osadzonego w kwiatku ikei. To było zamontowane na jej umywalce. Wykorzystuje płytkę mikrokontrolera arduino decimillia, Bipolar (czerwony i zielony