Спомнете си какво беше
роботътпрахосмукачка „Кибернетика“ в книгата на Н.Н. Носова "Dunno in the Solar City"? Трябваше ли да му напомня, че е време да се захване на работа? Сега, когато подобни устройства станаха реалност, се оказа, че е необходимо. Вземете дистанционното управление и натиснете бутона върху него. Героят от работата на Pachkul Pestrenky, като видя това, със сигурност би забелязал: „Каква автоматизация е това, ако трябва да натиснете бутон, само ако той ще бъде без бутони.“ Авторът на Instructables под псевдонима ShaperG също мислеше така. И го направи
направете го сами устройство за стартиране на прахосмукачка с робот по график.
домашно приготвени продукти се състои от механичен таймер за включване на различни електрически уреди по график (Ikea или който и да е друг), захранване,
Arduino, джъмпери тип „дъска“ и джъмпери (по избор, можете да свържете всичко чрез запояване), два светодиода - видим светещ и инфрачервен, два резистора 330 Ohm, корпус Sparkfun или всякакъв друг.
След като вземе всички необходими компоненти, съветникът съставя диаграма. И отново в програмата, подобна на Fritzing, в този случай, в онлайн приложението Mekanizmalar. Не всеки харесва този начин на съставяне на диаграми, но как да свържем всичко е разбираемо.
След като реши схемата, съветникът започва да програмира:
Взема библиотека
туки скицата е
тук, Опростява скицата, така че когато захранването е включено, непрекъснато изпраща команда "чист" на всеки пет секунди. Скицата ще трябва да бъде финализирана, ако
модела прахосмукачката се различава от iRobot Roomba 530. Е, майсторът се оказва това:
#include
/ *
Супер прост Arduino Powerd Roomba Scheduler
2013-08-03 Издание за инструкции
Код, адаптиран от: https://gist.github.com/probonopd/5181021
Изпратете инфрачервени команди от Arduino до iRobot Roomba
от probono
17.03.2013 г. Първоначално издание
Авторско право (c) 2013 от probono
Всички права запазени.
Преразпределение и употреба в източници и двоични форми, със или без
изменения са разрешени, при условие че са изпълнени следните условия:
1. Преразпределението на изходния код трябва да запазва горното известие за авторски права, това
списък на условията и следното отказ от отговорност.
2. Преразпределението в двоична форма трябва да възпроизвежда горепосоченото известие за авторски права,
този списък с условия и следния отказ от отговорност в документацията
и / или други материали, предоставени с дистрибуцията.
НАСТОЯЩИЯ СОФТУЕР се предоставя от притежателите на авторски права и вносителите "КАКВО Е" И
ВСИЧКИ ИЗРОДНИ ИЛИ ПРИЛОЖЕНИ ГАРАНЦИИ, Включително, НО НЕ ОГРАНИЧЕНИ ДО, ИЗПЪЛНЕНИТЕ
ГАРАНЦИИ ЗА ПРОДАЖБА И ФИТНЕС ЗА ДЕЙСТВЕНА ЦЕЛ
Което не носи отговорност. В НИКАКВИ СЛУЧАЙ НЕ ТРЯБВА ДА ОТГОВАРЯТ СОБСТВЕНИЯТ ПРАВО ИЛИ ВНОСИТЕЛИТЕ
ВСИЧКИ Пряки, косвени, инцидентни, специални, примерни или последващи щети
(Включително, но НЕ ОГРАНИЧЕНИ ДО, ЗАКУПУВАНЕ НА СЪБСТИТУТНИ СТОКИ ИЛИ УСЛУГИ;
ЗАГУБА НА УПОТРЕБА, ДАННИ ИЛИ ПЕЧАЛБИ; ИЛИ БЕЗПЛАТНО ПРЕКРАТЯВАНЕ) КАКТО СЕ ПРИЧИНА И
ЗА ВСЯКАКА ТЕОРИЯ ЗА ОТГОВОРНОСТ, КАКВО СЕ ДОГОВОР, СТРИКТНА ОТГОВОРНОСТ ИЛИ ТОРТ
(ВКЛЮЧИТЕЛНО НЕГРАФИЧНО ИЛИ ДРУГО), СЪЩЕСТВУВАЩИ ВЪВ ВСИЧКИ НАЧИН НА ИЗПОЛЗВАНЕТО НА ТОВА
СОФТУЕР, НИКОГА АКО ИМА СЪОБРАЖЕНИЕ ЗА ВЪЗМОЖНОСТТА НА ТАКИВА ВРЕДА
* /
IRsend irsend; // хардуер за закрепване 3; използвайте транзистор за задвижване на IR светодиода за максимален обхват
int LED = 10;
настройка за невалидност ()
{
Serial.begin (9600);
pinMode (LED, изход);
digitalWrite (LED, HIGH); // включете светодиода (HIGH е нивото на напрежението)
}
void loop ()
{
roomba_send (136); // Изпратете „Чисто“
забавяне (5000); // Изчакайте 5 секунди
}
void roomba_send (int код)
{
Serial.print ("Изпращане на код на Roomba");
Serial.print (код);
int дължина = 8;
неподписан int raw [дължина * 2];
неподписан int one_pulse = 3000;
неподписан int one_break = 1000;
неподписан int zero_pulse = one_break;
неподписан int zero_break = one_pulse;
int масив = 0;
// Serial.println ("");
за (int counter = length-1; counter> = 0; --cunter) {
ако (код & (1 << брояч)) {
// Serial.print ("1");
суров [масив] = one_pulse;
суров [масив + 1] = one_break;
}
друго {
// Serial.print ("0");
raw [масив] = zero_pulse;
суров [масив + 1] = zero_break;
}
масив = масив + 2;
}
за (int i = 0; i <3; i ++) {
irsend.sendRaw (суров, 15, 38);
забавяне (50);
}
Serial.println ("");
Serial.print ("Сурови тайминги:");
за (int z = 0; z <дължина * 2; z ++) {
Serial.print ("");
Сериен печат (суров [z]);
}
Serial.print ("\ n \ n");
}
Първоначално съветникът проверява работата на скицата за извеждане на серийния порт към монитора. След това тя поставя всичко в случая и доставя Arduino не от компютър, а от захранване, свързано чрез механичен таймер.
Сега, поставяйки устройството близо до станцията за зареждане, към която прахосмукачката за роботи винаги се връща, можете да зададете графика на сгъване на механичния таймер, за да го стартирате. Най-доброто от всичко - веднъж на ден. Само че не през нощта, както в работата на Н.Н. Носов.