Super enkla Arduino Powered Roomba Scheduler (3 / 5 steg)
Steg 3: Arduino Script
Du behöver en dator med Arduino IDE installerat (jag har använt Arduino 1,05)
Nästa, installera IR biblioteket från (instruktioner på webbplatsen) detta behövs för att köra skriptet.
https://github.com/shirriff/Arduino-IRremote
Jag ändrade (dvs klädde det tillbaka) skriptet utvecklats av probono tillgänglig från https://gist.github.com/probonopd/5181021. Det är mycket mer detaljerad än skriptet jag har använt. Med det, kan du skicka varje Roomba kommando via arduino. Definitivt värt att kolla in!
I princip är alla skriptet jag har klistrat in nedan gör:
-När strömmen slås
-Arduino är påbörjas, vänder på röda lysdioden att du vet det är på.
-Börjar överföra kommandot "Clean" (136) upprepade gånger med en 5 sekunders fördröjning mellan varje överföring.
-Inte sluta tills strömmen bryts!
Nedan är skriptet... Ladda upp den till styrelsen som vanligt.
Om du är intresserad, kan du öppna den seriella monitorn (9600) och se den Arduino utgång, bara sända kommandot "Ren" på upprepa.
#include < IRremote.h >
/*
Super enkel Arduino Powerd Roomba Scheduler
av gowell2010
2013-08-03 Instructables släppa
Koden bygger på: https://gist.github.com/probonopd/5181021
Skicka IR-kommandon från Arduino till iRobot Roomba
av probono
2013-03-17 första utgåva
Copyright (c) 2013 av probono
Alla rättigheter reserverade.
Vidaredistribution och användning i källformat och binärt format, med eller utan
ändring, är tillåtna under förutsättning att följande villkor uppfylls:
1. vid vidaredistribution av källkod måste behålla ovanstående copyrightinformation, denna
lista med villkor och följande friskrivningsklausul.
2. Återdistribution i binär form måste återge ovanstående copyrightmeddelande,
denna lista med villkor och följande friskrivningsklausul i dokumentationen
och/eller annat material som medföljer distributionen.
DENNA PROGRAMVARA TILLHANDAHÅLLS AV UPPHOVSRÄTTSINNEHAVARNA OCH MEDARBETARE "SOM ÄR" OCH
ALLA UTTRYCKLIGA ELLER UNDERFÖRSTÅDDA GARANTIER, INKLUSIVE, MEN INTE BEGRÄNSAT TILL, UNDERFÖRSTÅDDA
GARANTIER FÖR SÄLJBARHET OCH LÄMPLIGHET FÖR ETT SÄRSKILT ÄNDAMÅL ÄR
DISCLAIMED. UNDER INGA OMSTÄNDIGHETER SKALL UPPHOVSRÄTTEN ÄGARE ELLER BIDRAGSGIVARE ÄR ANSVARIGT FÖR
DIREKTA, INDIREKTA, OAVSIKTLIGA, SÄRSKILDA, FÖREDÖMLIGA ELLER FÖLJDRIKTIGA SKADOR
(INKLUSIVE MEN INTE BEGRÄNSAT TILL ANSKAFFNING AV ERSÄTTNINGSVAROR ELLER TJÄNSTER;
FÖRLUST AV ANVÄNDNING, DATA ELLER VINST; ELLER AVBROTT I VERKSAMHETEN) ORSAKADE EMELLERTID OCH
PÅ NÅGOT TEORETISKT, VARE SIG I KONTRAKT, STRIKT ANSVAR ELLER ÅTALBAR HANDLING
(INKLUSIVE FÖRSUMLIGHET ELLER ANNAT) SOM UPPSTÅR PÅ NÅGOT SÄTT AV ANVÄNDNING AV DETTA
PROGRAMVARA, ÄVEN OM MÖJLIGHETEN AV SÅDANA SKADOR.
*/
IRsend irsend; hårdkodade till stift 3. Använd en transistor för att köra IR-LED för maximal utbud
int LED = 10;
void setup()
{
Serial.BEGIN(9600);
pinMode (LED, OUTPUT);
digitalWrite (LED, hög); Aktivera LED (HIGH är spänningsnivån)
}
void loop()
{
roomba_send(136); Skicka "Ren"
Delay(5000); Vänta 5 sekunder
}
void roomba_send(int code)
{
Serial.Print ("Skicka Roomba kod").
Serial.Print(Code);
int längd = 8.
unsigned int rå [längd * 2];
unsigned int one_pulse = 3000;
unsigned int one_break = 1000;
unsigned int zero_pulse = one_break;
unsigned int zero_break = one_pulse;
int arrayposition = 0;
Serial.println("");
för (int counter = längd-1; counter > = 0;--counter) {
om (kod & (1 << counter)) {
Serial.Print("1");
rå [arrayposition] = one_pulse;
rå [arrayposition + 1] = one_break;
}
annat {
Serial.Print("0");
rå [arrayposition] = zero_pulse;
rå [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2.
}
för (int jag = 0; jag < 3; i ++) {
irsend.sendRaw (rå, 15, 38);
Delay(50);
}
Serial.println("");
Serial.Print ("Raw timings:");
för (int z = 0; z < längd * 2; z ++) {
Serial.Print("");
Serial.Print(RAW[z]);
}
Serial.Print("\n\n");
}