Kom ihåg hur det var
robotendammsugare "Cybernetics" i boken av N.N. Nosova "Dunno i solstaden"? Måste han påminnas om att det var dags att komma till jobbet? Nu när sådana enheter har blivit verklighet visade det sig att det är nödvändigt. Ta fjärrkontrollen och tryck på knappen på den. Hjälten från Pachkuls verk Pestrenky, efter att ha sett detta, skulle säkert ha märkt: "Vilken typ av automatik är det här, om du måste trycka på en knapp, om han bara skulle vara utan knappar." Författaren till Instructables under smeknamnet ShaperG tyckte det också. Och gjorde det
gör det själv enhet för att starta en robotdammsugare enligt ett schema.
hemgjorda produkt består av en mekanisk timer för att slå på olika elektriska apparater enligt ett schema (Ikea eller någon annan), en strömförsörjning,
Arduino, brödskivor av brödskivor och dupont (valfritt, du kan ansluta allt genom lödning), två lysdioder - synlig glöd och infraröd, två 330 Ohm-motstånd, Sparkfun-hölje eller något annat.
Efter att ha tagit upp alla nödvändiga komponenter tar guiden upp ett diagram. Och igen i det Fritzing-liknande programmet, i det här fallet, i Mekanizmalar-applikationen online. Inte alla gillar detta sätt att skapa diagram, men hur man ansluter allt är förståeligt.
Efter att ha beslutat om schemat börjar guiden programmera:
Tar ett bibliotek
häroch skissen är
här. Förenklar skissen så att när strömmen är på, den kontinuerligt skickar ett "rent" kommando var femte sekund. Skissen måste slutföras om
modellen dammsugaren skiljer sig från iRobot Roomba 530. Tja, mästaren visar sig detta:
#include
/ *
Super Simple Arduino Powerd Roomba Scheduler
2013-08-03 Instructables release
Kod anpassad från: https://gist.github.com/probonopd/5181021
Skicka infraröda kommandon från Arduino till iRobot Roomba
av probono
2013-03-17 Inledande utgåva
Upphovsrätt (c) 2013 av probono
Alla rättigheter reserverade.
Omfördelning och användning i käll- och binära former, med eller utan
modifiering, är tillåten under förutsättning att följande villkor är uppfyllda:
1. Omfördelningar av källkoden måste behålla ovanstående upphovsrättsmeddelande, detta
lista över villkor och följande ansvarsfriskrivning.
2. Omfördelningar i binär form måste återge ovanstående upphovsrättsmeddelande,
denna lista med villkor och följande ansvarsfriskrivning i dokumentationen
och / eller annat material som levereras med distributionen.
DENNA PROGRAMVARAN LEVERAS AV COPYRIGHTSHAVARNA OCH BIDRAGARNA "SOM ÄR" OCH
NÅGRA UTTRYCKLIGA ELLER IMPLICERADE GARANTIER, INklusive, men inte begränsade till, de implicerade
GARANTIER FÖR SÄLJBARHET OCH FITNESS FÖR EN SÄRSKILT SYFTE ÄR
Avstås. INGEN HÄNDELSER SKALL KOPIERÄTTET ÄGARE ELLER BIDRAGAR ANSVARAS FÖR
Några direkta, indirekta, tillfälliga, speciella, exemplariska eller följdskador
(INKLUDERA MEN INTE BEGRÄNSAD TILL, INKÖP AV SUBSTITUTVAROR ELLER TJÄNSTER;
Förlust av användning, data eller vinster; ELLER FÖRETAGSINSTRUKTION) OCH ORDANDE OCH
PÅ NÅGON TEORI OM ANSVAR, OCH I KONTRAKT, STÄRKT ANSVAR ELLER TORT
(INKLUDERANDE NEGLIGENS ELLER ANNAT) Uppstå på något sätt utanför detta
PROGRAMVARA, Även om de tillhandahålls om möjligheten till sådan skada.
* /
IRsend irsend; // hardwired till pin 3; använd en transistor för att driva IR-LED för maximal räckvidd
int LED = 10;
ogiltig installation ()
{
Serial.begin (9600);
pinMode (LED, OUTPUT);
digitalWrite (LED, HÖG); // slå på lysdioden (HIGH är spänningsnivån)
}
void loop ()
{
roomba_send (136); // Skicka "Ren"
fördröjning (5000); // Vänta 5 sekunder
}
void roomba_send (int-kod)
{
Serial.print ("Skicka Roomba-kod");
Serial.print (kod);
int längd = 8;
osignerad int rå [längd * 2];
osignerad int one_pulse = 3000;
osignerad int one_break = 1000;
osignerad int zero_pulse = one_break;
osignerad int zero_break = one_pulse;
int arrayposition = 0;
// Serial.println ("");
för (int räknare = längd-1; räknare> = 0; - räknare) {
if (kod & (1 << räknare)) {
// Serial.print ("1");
raw [arrayposition] = one_pulse;
raw [arrayposition + 1] = one_break;
}
annars {
// Serial.print ("0");
raw [arrayposition] = zero_pulse;
raw [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2;
}
för (int i = 0; i <3; i ++) {
irsend.sendRaw (rå, 15, 38);
fördröjning (50);
}
Serial.println ("");
Serial.print ("Raw timings:");
för (int z = 0; z
Ursprungligen kontrollerar guiden funktionen för skissen för att mata ut serieporten till monitorn. Sedan sätter det allt i fallet och levererar Arduino inte från en dator, utan från en strömförsörjning ansluten via en mekanisk timer.
Genom att placera enheten nära laddstationen, till vilken robotdammsugaren alltid återvänder, kan du ställa in vikningsplanen för den mekaniska timern för att starta den. Bäst av allt - en gång om dagen. Bara inte på natten, som i N.N.s arbete Nosov.