Оглавление:
- Шаг 1. Начните с простого: добавьте кнопку
- Шаг 2. Измените код для регистрации нажатий кнопок
- Шаг 3. Добавьте столько кнопок, сколько у вас есть дети
- Шаг 4. Добавьте зуммер
- Шаг 5: Добавьте ЖК-экран
Видео: Модификатор поведения ребенка: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-02-01 14:42
Модификатор поведения ребенка регистрирует, сколько раз ваш ребенок попадал в беду (или забастовки), и когда они достигают трех, срабатывает зуммер, а ЖК-экран сообщает, что ребенок заземлен.
Шаг 1. Начните с простого: добавьте кнопку
Первый шаг в этом проекте прост. Добавить 1 кнопку. На этом этапе вам понадобятся 4 провода типа папа-папа, 1 резистор 220 и кнопка.
- Подключите 5 В на стороне питания к положительному ряду на макетной плате.
-
Подключите GND к отрицательной стороне макета.
- Вставьте кнопку на макетную плату.
-
Подключите питание положительного ряда к левой нижней части кнопки.
- Заземлите кнопку, подключив резистор к нижней правой части кнопки и к отрицательному ряду макета.
- Подключите №13 на цифровой стороне Arduino к верхней правой стороне кнопки.
Подтвердите своим кодом, что кнопка регистрируется:
int child1ButtonPin = 13; // Это контакт, к которому подключена наша кнопка
int child1ButtonState = 0; // Считывает состояние кнопки (включено / выключено)
int child1Strike = 0; // Сколько ударов у ребенка
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, ВХОД); } // функция цикла выполняется снова и снова навсегда void loop () {// считываем состояние кнопки (включено или выключено) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState == HIGH) // Кнопка нажата {Serial.println ("HIGH"); задержка (5000); }
если (child1ButtonState == LOW)
{Serial.println ("НИЗКИЙ"); задержка (5000); }}
Шаг 2. Измените код для регистрации нажатий кнопок
Измените код, чтобы зарегистрировать нажатие кнопки:
int child1ButtonPin = 13; // Это контакт, к которому наша кнопка подключена int child1ButtonState = 0; // Считывает состояние кнопки (включено / выключено) int child1PreviousState = 0; // Предыдущее состояние кнопки int child1Strike = 0;
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, ВХОД); } // функция цикла выполняется снова и снова навсегда void loop () {// считываем состояние кнопки (включено или выключено) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Кнопка нажата {child1Strike ++; Serial.println (child1Strike); задержка (1000); }}
}
Затем измените код так, чтобы ребенок получил 3 удара, после чего он получил сообщение о том, что он заземлен:
int child1ButtonPin = 13; // Это контакт, к которому наша кнопка подключена int child1ButtonState = 0; // Считывает состояние кнопки (включено / выключено) int child1PreviousState = 0; int child1Strike = 0;
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, ВХОД); } // функция цикла выполняется снова и снова навсегда void loop () {// считываем состояние кнопки (включено или выключено) child1ButtonState = digitalRead (child1ButtonPin); if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // Кнопка нажата {child1Strike ++; Serial.println (child1Strike);
если (child1Strike> = 3)
{Serial.println («Ребенок 1 заземлен!»); } задержка (3000); }}
}
Последовательный монитор должен выглядеть как на изображении выше.
Примечание. Убедитесь, что вам удобна задержка. Небольшая задержка, и он зарегистрирует нажатие одной кнопки как более одной!
Шаг 3. Добавьте столько кнопок, сколько у вас есть дети
На этом этапе мы просто копируем последние пару шагов. Добавьте столько кнопок, сколько детей. В моем случае я добавляю четыре. Обязательно измените свой код на цифровой контакт, к которому подключена кнопка. В моем случае я использовал контакты с 12 по 10, чтобы добавить свои кнопки. Если вам нужно напомнить, вот шаг 1:
- Подключите 5 В на стороне питания к положительному ряду на макетной плате.
-
Подключите GND к отрицательной стороне макета.
- Вставьте кнопку на макетную плату Подключите питание в положительном ряду к левой нижней части кнопки
-
Заземлите кнопку, используя резистор в правой нижней части кнопки и к отрицательному ряду макета.
- Подключите (свой пин-код) на цифровой стороне Arduino к правой верхней части кнопки.
Вам также нужно будет изменить код для обработки всех ваших кнопок. Имейте в виду, что если вам нужно быть осторожным с используемыми строками. Вы не можете складывать вместе строчные буквы. Лучше всего объявить 1 как объект String.
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;
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, ВХОД); pinMode (child2ButtonPin, ВХОД); pinMode (child3ButtonPin, ВХОД); pinMode (child4ButtonPin, ВХОД); } // функция цикла выполняется снова и снова навсегда void loop () {// считываем состояние кнопки (включено или выключено) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
если (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Кнопка нажата {child1Strike ++; Serial.println (String ("У ребенка 1:") + child1Strike + "Strikes");
если (child1Strike> = 3)
{Serial.println («Ребенок 1 заземлен!»); } задержка (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Кнопка нажата {child2Strike ++; Serial.println (String ("У ребенка 2:") + child2Strike + "Strikes");
если (child2Strike> = 3)
{Serial.println («Ребенок 2 заземлен!»); } задержка (3000); }}
если (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Кнопка нажата {child3Strike ++; Serial.println (String ("У ребенка 3:") + child3Strike + "Strikes");
если (child3Strike> = 3)
{Serial.println («Ребенок 3 заземлен!»); } задержка (3000); }}
если (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Кнопка нажата {child4Strike ++; Serial.println (String («У ребенка 4:») + child4Strike + «Strikes»);
если (child4Strike> = 3)
{Serial.println («Ребенок 4 заземлен!»); } задержка (3000); }}}
Шаг 4. Добавьте зуммер
Теперь давайте убедимся, что ваши дети знают, что они заземлены. Давайте добавим зуммер. Чтобы подключить зуммер, выполните следующие простые шаги.
- Добавьте зуммер на макет, запланируйте место, так как появится ЖК-экран.
- Подключите положительную сторону (у зуммера должен быть + на положительной стороне) к контакту по вашему выбору. Я сделал 9.
- Подключите другую сторону к заземленной шине макетной платы.
Затем измените свой код, чтобы отключить зуммер, когда ребенок будет заземлен. Есть несколько различных способов кодирования вашего зуммера, но мне нравится тон (имя зуммера, герц, продолжительность) из-за его простоты. Примером этого может быть тон (зуммер, 4000, 300).
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 = 2;
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату
void setup () {Serial.begin (9600); pinMode (child1ButtonPin, ВХОД); pinMode (child2ButtonPin, ВХОД); pinMode (child3ButtonPin, ВХОД); pinMode (child4ButtonPin, ВХОД); pinMode (зуммер, ВЫХОД); } // функция цикла выполняется снова и снова навсегда void loop () {// считываем состояние кнопки (включено или выключено) child1ButtonState = digitalRead (child1ButtonPin);
child2ButtonState = digitalRead (child2ButtonPin);
child3ButtonState = digitalRead (child3ButtonPin);
child4ButtonState = digitalRead (child4ButtonPin);
если (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // Кнопка нажата {child1Strike ++; Serial.println (String ("У ребенка 1:") + child1Strike + "Strikes");
если (child1Strike> = 3)
{Serial.println («Ребенок 1 заземлен!»); тон (зуммер, 5000, 500); // Посылает звук с частотой 5 Гц в течение 5 миллисекунд
}
задержка (3000); }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // Кнопка нажата {child2Strike ++; Serial.println (String ("У ребенка 2:") + child2Strike + "Strikes");
если (child2Strike> = 3)
{Serial.println («Ребенок 2 заземлен!»); тон (зуммер, 5000, 500); } задержка (3000); }}
если (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // Кнопка нажата {child3Strike ++; Serial.println (String ("У ребенка 3:") + child3Strike + "Strikes");
если (child3Strike> = 3)
{Serial.println («Ребенок 3 заземлен!»); тон (зуммер, 5000, 500); } задержка (3000); }}
если (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // Кнопка нажата {child4Strike ++; Serial.println (String («У ребенка 4:») + child4Strike + «Strikes»);
если (child4Strike> = 3)
{Serial.println («Ребенок 4 заземлен!»); тон (зуммер, 5000, 500); } задержка (3000); }}}
Шаг 5: Добавьте ЖК-экран
Теперь позволяет ЖК-экран для четкого и легкого чтения.
- Во-первых, добавьте на макетную плату потенциометр для управления ЖК-экраном. Будьте осторожны с тем, куда вы его положили, так как у вас, вероятно, уже не хватает места.
- Используйте переднюю левую часть, чтобы подключить потенциометр к шине питания.
- Используйте правую переднюю часть для заземления потенциометра.
- Сзади будет подключен к жк экрану.
- Добавьте ЖК-экран к своей макетной плате
- Заземлите первый вывод экрана на шину заземления.
- Подключите второй штифт к шине питания.
- Третий вывод ЖК-дисплея идет на вывод 8 на Arduino.
- Четвертый вывод ЖК-дисплея идет на вывод 7 на Arduino.
- Пятый идет к контакту 6 на Arduino
- Шестой вывод идет на вывод 5 на Arduino
- Контакты с 7 по 10 на ЖК-экране пусты.
- Контакт 11 идет к контакту 5 на Arduino
- Вывод 12 идет на заземленную рейку.
- Контакт 13 идет к контакту 4 на Arduino
- Контакт 14 идет к задней части потенциометра.
- Контакт 15 идет на шину питания
- Контакт 16 идет к заземлению.
Теперь вам нужно будет обновить свой код, чтобы использовать ЖК-экран. Для этого вы воспользуетесь библиотекой Liquid Crystal. Будьте осторожны с заявлениями о печати на ЖК-дисплее. Не забудьте очистить экран, когда вам нужно новое сообщение. Также не забудьте установить курсор, если вы хотите использовать две строки.
#включают
ЖК-дисплей LiquidCrystal (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, ВХОД); pinMode (child2ButtonPin, ВХОД); pinMode (child3ButtonPin, ВХОД); pinMode (child4ButtonPin, ВХОД); 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 ("У ребенка 1:") + 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); }} если (child2ButtonState! = child2PreviousState) {lcd.clear (); if (child2ButtonState == HIGH) // Кнопка нажата {child2Strike ++; Serial.println (String ("У ребенка 2:") + child2Strike + "Strikes"); lcd.print («У ребенка 2 есть:»); lcd.setCursor (0, 1); lcd.print (child2Strike); lcd.print («Удары!»); if (child2Strike> = 3) {Serial.println («Ребенок 2 заземлен!»); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Дочерний 2 есть"); lcd.setCursor (0, 1); lcd.print («Заземлили!»); тон (зуммер, 5000, 500); } задержка (3000); }}
если (child3ButtonState! = child3PreviousState)
{lcd.clear (); if (child3ButtonState == HIGH) // Кнопка нажата {child3Strike ++; Serial.println (String («У ребенка 3:») + 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); }}
если (child4ButtonState! = child4PreviousState)
{lcd.clear (); if (child4ButtonState == HIGH) // Кнопка нажата {child4Strike ++; Serial.println (String («У ребенка 4:») + 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); }}} Вот и все, что вам нужно для создания собственного модификатора поведения ребенка.
Рекомендуемые:
No Pee Now, устройство для регулирования поведения домашних животных, которое не дает кошкам пописать в вашем доме: 4 шага
No Pee Now, устройство для регулирования поведения домашних животных, которое не дает кошкам пописать в вашем доме: меня так беспокоила моя кошечка, что она любит писать на мою кровать, я проверил все, что ей нужно, и я также отвел ее к ветеринару. После того, как я исправил все, что мог думать, и прислушался к словам доктора, я понял, что она просто плохо себя ведет. Итак
Альтернативно окклюзионный дихоптический модификатор стереоскопической передачи 32 [STM32F103C8T6 + STMAV340 VGA Superimposer]: 6 шагов
Альтернативно закрывающий дихоптический модификатор стереоскопической передачи 32 [STM32F103C8T6 + STMAV340 VGA Superimposer]: В течение некоторого времени я работал над преемником оригинального AODMoST. Новое устройство использует более быстрый и лучший 32-битный микроконтроллер и более быстрый аналоговый коммутатор видео. Это позволяет AODMoST 32 работать с более высокими разрешениями и реализовывать новый функционал
Спасите моего ребенка: умное сиденье, которое отправляет текстовые сообщения, если вы забыли ребенка в машине: 8 шагов
Спасите моего ребенка: умное сиденье, которое отправляет текстовые сообщения, если вы забыли ребенка в машине: оно установлено в автомобилях и благодаря детектору, установленному на детском сиденье, предупреждает нас - с помощью SMS или телефонного звонка - если мы получаем прочь, не взяв с собой ребенка
Индикатор ребенка на Хэллоуин: 4 шага (с изображениями)
Индикатор ребенка на Хэллоуин: Мы с женой пытались понять, что она могла надеть на Хэллоуин. Эта сессия мозгового штурма длилась пару ночей, прежде чем ей это понадобилось, разумеется, я немного торопился. Ей пришла в голову идея показать, как далеко она продвинулась
Как сделать так, чтобы феи появились на дне рождения вашего ребенка!: 4 шага
Как сделать так, чтобы феи появлялись на дне рождения вашего ребенка! Моя дочь, которой скоро исполнится 8 лет, хотела, чтобы день рождения был посвящен феям, поэтому я решила сделать его особенным. Я создал очень простой эффект, который заставил всех тусовщиков подумать, что настоящие феи появились только для них