Съдържание:
- Стъпка 1: Започнете просто: Добавете бутон
- Стъпка 2: Променете кода, за да регистрирате натискането на бутони
- Стъпка 3: Добавете толкова бутони, колкото имате деца
- Стъпка 4: Добавете зумер
- Стъпка 5: Добавете LCD екран
Видео: Модификатор на поведението на детето: 5 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-02-01 14:39
Модификаторът на поведението на детето записва колко пъти детето ви е имало проблеми (известен още като Удари) и когато достигнат три, звуков сигнал излиза и LCD екран съобщава, че те са заземени.
Стъпка 1: Започнете просто: Добавете бутон
Първата стъпка в този проект е проста. Добавете 1 бутон. В тази стъпка се нуждаете от 4 проводника мъжки към мъжки, 1 220 резистор и бутон за натискане.
- Свържете 5V от страна на захранването към положителния ред на макета
-
Свържете GND към отрицателната страна на макета
- Поставете бутона върху макета
-
Свържете захранването на положителния ред към долната лява част на бутона
- Заземете бутона, като използвате резистор в долната дясна част на бутона към отрицателния ред на макета.
- Свържете #13 от цифровата страна на Arduino към горната дясна страна на бутона.
Проверете с кода си, че бутонът се регистрира:
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); }
if (child1ButtonState == LOW)
{Serial.println ("LOW"); забавяне (5000); }}
Стъпка 2: Променете кода, за да регистрирате натискането на бутони
Променете кода, за да регистрирате натискане на бутон:
int child1ButtonPin = 13; // Това е щифтът, който нашият бутон е свързан toint 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; // Това е щифтът, който нашият бутон е свързан toint 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: Добавете толкова бутони, колкото имате деца
В тази стъпка просто копираме последните няколко стъпки. Добавете толкова бутони, колкото правите деца. В моя случай добавям четири. Не забравяйте да промените кода си на цифровия щифт, към който е свързан бутонът. В моя случай използвах щифтове 12 до 10, за да добавя бутоните си. В случай, че имате нужда от напомняне, ето стъпка 1:
- Свържете 5V от страна на захранването към положителния ред на макета
-
Свържете GND към отрицателната страна на макета
- Поставете бутона за натискане върху платката Свържете захранването на положителния ред към долната лява част на бутона
-
Заземете бутона, като използвате резистор в долната дясна част на натискащия бутон към отрицателния ред на макета.
- Свържете (вашият пинов номер) от цифровата страна на Arduino към горната дясна страна на бутона.
Също така ще трябва да промените кода, за да обработвате всичките си бутони. Моля, имайте предвид, че ако трябва да внимавате за низовете, които сте използвали. Не можете да добавяте заедно с малки букви. Най -добре е да декларирате 1 като String обект.
int child1ButtonPin = 13; // Това е щифтът, който нашият бутон е свързан с toint 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);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Бутонът е натиснат {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strikes");
ако (child1Strike> = 3)
{Serial.println ("Дете 1 е заземено!"); } забавяне (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Бутонът е натиснат {child2Strike ++; Serial.println (String ("Child 2 has:") + child2Strike + "strikes");
ако (child2Strike> = 3)
{Serial.println ("Дете 2 е заземено!"); } забавяне (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Бутонът е натиснат {child3Strike ++; Serial.println (String ("Child 3 has:") + child3Strike + "strikes");
ако (child3Strike> = 3)
{Serial.println ("Дете 3 е заземено!"); } забавяне (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Бутонът е натиснат {child4Strike ++; Serial.println (String ("Child 4 has:") + child4Strike + "strikes");
ако (child4Strike> = 3)
{Serial.println ("Дете 4 е заземено!"); } забавяне (3000); }}}
Стъпка 4: Добавете зумер
Сега нека се уверим, че децата ви знаят, че са заземени. Нека добавим зумер. За да свържете зумера, следвайте тези лесни стъпки.
- Добавете зумер към чертежа си, планирайте място, тъй като предстои LCD екран.
- Свържете позитивната страна (зумерът трябва да има + от положителната страна) към щифта по ваш избор. Направих 9.
- Свържете другата страна към заземената шина на вашата дъска.
След това променете кода си, за да изключите зумера, когато дете се заземи. Има няколко различни начина за кодиране на вашия зумер, но аз харесвам тон (buzzerName, херц, продължителност) за неговата простота. Така че пример за това би бил тон (зумер, 4000, 300).
int child1ButtonPin = 13; // Това е щифтът, който нашият бутон е свързан с toint 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 зумер = 2;
// функцията за настройка се изпълнява веднъж, когато натиснете нулиране или включите платката
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, INPUT); pinMode (child2ButtonPin, INPUT); pinMode (child3ButtonPin, INPUT); pinMode (child4ButtonPin, INPUT); pinMode (зумер, OUTPUT); } // цикълната функция работи отново и отново завинаги void loop () {// чете състоянието на бутона (включено или изключено) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Бутонът е натиснат {child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strikes");
ако (child1Strike> = 3)
{Serial.println ("Дете 1 е заземено!"); тон (зумер, 5000, 500); // Изпраща звук от 5 херца за 5 милисекунди
}
забавяне (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Бутонът е натиснат {child2Strike ++; Serial.println (String ("Child 2 has:") + child2Strike + "strikes");
ако (child2Strike> = 3)
{Serial.println ("Дете 2 е заземено!"); тон (зумер, 5000, 500); } забавяне (3000); }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Бутонът е натиснат {child3Strike ++; Serial.println (String ("Child 3 has:") + child3Strike + "strikes");
ако (child3Strike> = 3)
{Serial.println ("Дете 3 е заземено!"); тон (зумер, 5000, 500); } забавяне (3000); }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Бутонът е натиснат {child4Strike ++; Serial.println (String ("Child 4 has:") + child4Strike + "strikes");
ако (child4Strike> = 3)
{Serial.println ("Дете 4 е заземено!"); тон (зумер, 5000, 500); } забавяне (3000); }}}
Стъпка 5: Добавете LCD екран
Сега позволява LCD екран за ясно и лесно четене.
- Първо, добавете потенциометър към вашата дъска за управление на LCD екрана. Внимавайте къде го поставяте, тъй като вероятно вече ви свършва мястото.
- Използвайте предната лява част, за да свържете вашия потенциометър към захранващата шина
- Използвайте предната дясна част, за да заземите вашия потенциометър.
- Гърбът ще бъде свързан с LCD екрана.
- Добавете LCD екрана към дъската
- Заземете първия щифт на екрана към заземителната шина
- Свържете втория щифт към захранващата шина.
- Третият LCD пин отива към Pin 8 на Arduino
- Четвъртият LCD пин отива до Pin 7 на Arduino
- Пето отива до Pin 6 на Arduino
- Шестият пин отива към пин 5 на Arduino
- Пинове 7 до 10 на LCD екрана са празни
- Пин 11 отива към Пин 5 на Arduino
- Щифт 12 отива към заземената релса
- Pin 13 отива към Pin 4 на Arduino
- Щифт 14 отива в задната част на потенциометъра
- Пин 15 отива към захранващата шина
- Щифт 16 отива към наземната релса.
Сега ще трябва да актуализирате кода си, за да използвате LCD екрана. За това ще използвате библиотеката Течен кристал. Внимавайте с изявленията си за LCD печат. Не забравяйте да изчистите екрана, когато имате нужда от ново съобщение. Също така не забравяйте да зададете курсора, когато искате да използвате два реда.
#включва
LiquidCrystal lcd (3, 4, 5, 6, 7, 8); // Задава LCD екрана
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 зумер = 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 (зумер, OUTPUT); } // цикълната функция работи отново и отново завинаги void loop () {lcd.setCursor (0, 0); // чете състоянието на бутона (включено или изключено) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Бутонът е натиснат {lcd.clear (); child1Strike ++; Serial.println (String ("Child 1 Has:") + child1Strike + "strikes"); 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 ("Дете 1 е"); lcd.setCursor (0, 1); lcd.print ("Заземен!");
тон (зумер, 5000, 500); // Изпраща звук от 5 херца за 5 милисекунди
}
забавяне (3000); }} if (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Бутонът е натиснат {child2Strike ++; Serial.println (String ("Child 2 has:") + child2Strike + "strikes"); 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 ("Дете 2 е"); lcd.setCursor (0, 1); lcd.print ("Заземен!"); тон (зумер, 5000, 500); } забавяне (3000); }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Бутонът е натиснат {child3Strike ++; Serial.println (String ("Child 3 has:") + child3Strike + "strikes"); lcd.print ("Дете 3 има:"); lcd.setCursor (0, 1); lcd.print (child3Strike); lcd.print ("Стачки!"); if (child3Strike> = 3) {Serial.println ("Дете 3 е заземено!"); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Дете 3 е"); lcd.setCursor (0, 1); lcd.print ("Заземен!"); тон (зумер, 5000, 500); } забавяне (3000); }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Бутонът е натиснат {child4Strike ++; Serial.println (String ("Child 4 has:") + child4Strike + "strikes"); 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 ("Дете 4 е"); lcd.setCursor (0, 1); lcd.print ("Заземен!"); тон (зумер, 5000, 500); } забавяне (3000); }}} И това е, всичко, от което се нуждаете, за да изградите свой собствен модификатор на поведение на дете
Препоръчано:
Няма пикаене сега, устройство за регулиране на поведението на домашни любимци, което спира котките да пикаят наоколо във вашия дом: 4 стъпки
Няма пикаене сега, устройство за регулиране на поведението на домашните любимци, което спира котките да пикаят наоколо във вашия дом: Бях толкова притеснен от котето си, че тя обича да пикае в леглото ми, проверих всичко, от което се нуждае, и също я заведох на ветеринар. След като отстраних всичко, което мога да мисля и слушам думата на лекаря, осъзнавам, че тя просто има някакво лошо поведение. Така че
Алтернативно блокиращ дихоптичен модификатор на стереоскопично предаване 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 стъпки
Алтернативно блокиращ дихоптичен модификатор на стереоскопично предаване 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: От известно време работя върху наследник на оригиналния AODMoST. Новото устройство използва по-бърз и по-добър 32-битов микроконтролер и по-бърз аналогов видео превключвател. Това позволява на AODMoST 32 да работи с по -високи резолюции и да внедрява нови функционални
Алтернативно блокиращ дихоптичен модификатор на стереоскопично предаване [ATmega328P+HEF4053B VGA Superimposer]: 7 стъпки
Алтернативно блокиращ дихоптичен модификатор на стереоскопично предаване [ATmega328P+HEF4053B VGA Superimposer]: След моите експерименти с очила от течни кристали, използвани за запушване на очите (тук и там), реших да направя нещо, което е малко по -сложно и също не принуждава потребителя да носите ПХБ на челото си (хората понякога могат да се държат
Save My Child: Интелигентната седалка, която изпраща текстови съобщения, ако забравите детето в колата: 8 стъпки
Save My Child: Интелигентната седалка, която изпраща текстови съобщения, ако забравите детето в колата: Инсталира се в автомобили и благодарение на детектор, поставен на детската седалка, ни предупреждава - чрез SMS или телефонно обаждане - ако получим далеч, без да доведе детето с нас
Направи си сам-Рециклиране на подов вентилатор във фотомодификатор на светлинен модификатор/лампа „всичко в едно“: 11 стъпки
Направи си сам-рециклиране на подов вентилатор във фотомодификатор на светлинен модификатор/лампа „всичко в едно“: Така че наскоро бях на пролетно почистване и попаднах на подов вентилатор, при който двигателят е изгорял. И имах нужда от настолна лампа. 2+2 и аз направих малко мозъчна атака и дойдох с идеята да превърна вентилатора в 20 -инчов светлинен модификатор. Прочетете до s