Оглавление:
Видео: Happy Hack Light Switch: 3 шага
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Последние 2 недели мы работали над школьным проектом под названием «Happy hacking». В этом проекте мы постарались сделать «Happy hack» для публичного пространства. Ну что такое «Хэппи хак»? В нашем случае нам нужно было сделать что-то позитивное на основе разочарования. Для этого проекта требовалось использование Arduino. «Счастливый хакер», который мы решили сделать, был установкой для удаленного включения выключателя света.
Шаг 1: Материалы:
1x Arduino Uno
1x макетная плата
2x сервопривод
1x инфракрасный датчик
11x провод
1x инфракрасный передатчик (удаление телевизора)
Лента
Шаг 2: Как подключиться:
Вставьте инфракрасный приемник Arduino в макетную плату; предполагая, что передняя сторона приемника - это сторона со сферой на ней:
- Подключите один провод от самой левой «ножки» к порту Arduino uno «6».
- Подключите один провод от средней «ножки» к «-» ряду на макете.
- Подключите один провод от самой правой «ножки» к «+» ряду на макетной плате.
Убедитесь, что провод находится между строкой «-» на макетной плате и портом «земля» на Arduino uno, и убедитесь, что провод находится между строкой «+» на макетной плате и портом «5V» на Arduino uno.
Теперь подключите 2 сервопривода,
- Оба с проводом от самого темного провода сервопривода к строке «-» на макете.
- Оба с проводом от среднего провода сервопривода до ряда «+» на макетной плате.
Теперь для одного из сервоприводов подключите оставшийся провод сервопривода к порту uno Arduino «9», а другой сервопривод - к порту uno «10» Arduino.
Шаг 3: Код:
#включают //
#включают //
#включают //
IRrecv irrecv (6);
decode_results результаты;
Серво theServo1;
Серво theServo2;
bool lightOn = false;
bool disco = false;
void setup () {
theServo1.attach (10);
theServo2.attach (9);
pinMode (6, ВХОД);
Serial.begin (9600);
irrecv.enableIRIn (); // Запускаем приемник
irrecv.blink13 (правда);
}
void loop () {
if (irrecv.decode (& результаты)) {
Serial.println (результат.значение); // У вас разные результаты для каждой кнопки. Так что проверьте серийный монитор, каково значение ваших кнопок.
if (results.value == 3772793023) {// Это результат нашей кнопки питания (3772793023). Возможно, с вашим пультом все иначе.
lightOn =! lightOn;
if (lightOn) {
theServo1.write (65);
theServo2.write (15);
}
if (! lightOn) {
theServo1.write (95);
theServo2.write (95);
}
задержка (1000);
}
if (results.value == 3772839943) {// Это результат нашей информационной кнопки (37728).
дискотека =! дискотека;
задержка (1000);
}
Serial.println (результат.значение);
irrecv.resume (); // Получаем следующее значение
}
if (disco) {
lightOn =! lightOn;
if (lightOn) {
theServo1.write (65);
theServo2.write (15);
}
if (! lightOn) {
theServo1.write (95);
theServo2.write (90);
}
задержка (2000);
}
}