Husk hvordan det var
robotenstøvsuger "Cybernetics" i boka til N.N. Nosova "Dunno i solbyen"? Måtte han bli påminnet om at det var på tide å komme på jobb? Nå som slike enheter har blitt en realitet, viste det seg at det er nødvendig. Ta fjernkontrollen og trykk på knappen på den. Helten fra Pachkuls verk Pestrenky, etter å ha sett dette, ville sikkert ha lagt merke til: "Hva slags automatisering er dette, hvis du trenger å trykke på en knapp, hvis han bare hadde det uten knapper." Forfatteren av Instructables under kallenavnet ShaperG mente også det. Og gjorde det
gjør det selv enhet for å starte en robotstøvsuger på en plan.
hjemmelaget produkt består av en mekanisk tidtaker for å slå på forskjellige elektriske apparater på en plan (Ikea eller noe annet), en strømforsyning,
Arduino, brødbretttype og dupont-hoppere (valgfritt, du kan koble til alt ved lodding), to lysdioder - synlig glød og infrarød, to 330 Ohm-motstander, Sparkfun-hus eller annet.
Etter å ha plukket opp alle nødvendige komponenter, lager veiviseren et diagram. Og igjen i det Fritzing-aktige programmet, i dette tilfellet, i Mekanizmalar online-applikasjonen. Ikke alle liker denne måten å tegne diagrammer på, men hvordan man kobler sammen alt er forståelig.
Etter å ha bestemt seg for ordningen begynner guiden å programmere:
Tar et bibliotek
herog skissen er
her. Forenkler skissen slik at når strømmen er på, sender den kontinuerlig en "ren" kommando hvert femte sekund. Skissen må avsluttes hvis
modellen støvsugeren skiller seg fra iRobot Roomba 530. Vel, master viser seg dette:
#include
/ *
Super Simple Arduino Powerd Roomba Scheduler
2013-08-03 Utgivelse av Instruktører
Kode tilpasset fra: https://gist.github.com/probonopd/5181021
Send infrarøde kommandoer fra Arduino til iRobot Roomba
av probono
2013-03-17 Innledende utgivelse
Copyright (c) 2013 av probono
Alle rettigheter forbeholdt.
Omfordeling og bruk i kilde og binære former, med eller uten
endring, er tillatt forutsatt at følgende vilkår er oppfylt:
1. Omfordelinger av kildekoden må beholde ovennevnte copyright-varsel, dette
liste over forhold og følgende ansvarsfraskrivelse.
2. Omfordelinger i binær form må reprodusere ovennevnte copyright-varsel,
denne listen over betingelser og følgende ansvarsfraskrivelse i dokumentasjonen
og / eller andre materialer som leveres med distribusjonen.
DENNE PROGRAMVAREN LEVERES AV COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
NOE UTTRYKK ELLER IMPLISJONTE GARANTIER, INKLUDERENDE, MEN IKKE BEGRENSET TIL, DE IMPLISTE
GARANTIER FOR SALGBARHET OG EGNETHET FOR ET SÆRLIGT FORMÅL ER
GARANTIEN. IKKE ANSVARLIG SKAL KOPIERETS EIER ELLER BIDRAGERE BLI ANSVARLIG FOR
NOE DIREKTE, indirekte, tilfeldige, spesifikke, unødvendige eller konsekvente skader
(INKLUDERENDE, MEN IKKE BEGRENSET TIL, OPPKJØP AV UNDERVARINGSVARER ELLER TJENESTER
Tap av bruk, data eller fortjeneste; ELLER FORRETNING AV FORRETNINGSLINJER) MEN FORSIKTIG OG
PÅ NOEN TEORI OM ANSVAR, OM KONTRAKT, STRENGT ANSVAR ELLER TORT
(INKLUDERT NADLIGHET ELLER ANNEN) Oppstå på noen måte ut av bruken av dette
PROGRAMVARE, SELV HVIS RÅDGJØRES OM MULIGHETEN TIL SOM SKADER.
* /
IRsend irsend; // hardwired til pin 3; bruk en transistor for å drive IR-LED for maksimal rekkevidde
int LED = 10;
ugyldig oppsett ()
{
Serial.begin (9600);
pinMode (LED, UTGANG);
digitalWrite (LED, HØY); // slå på LED-en (HIGH er spenningsnivået)
}
void loop ()
{
roomba_send (136); // Send "Rengjør"
forsinkelse (5000); // Vent 5 sekunder
}
void roomba_send (int-kode)
{
Serial.print ("Sende Roomba-kode");
Serial.print (kode);
int lengde = 8;
usignert int raw [lengde * 2];
usignert int one_pulse = 3000;
usignert int one_break = 1000;
usignert int zero_pulse = one_break;
usignert int zero_break = one_pulse;
int arrayposis = 0;
// Serial.println ("");
for (int teller = lengde-1; teller> = 0; - teller) {
if (kode & (1 << teller)) {
// Serial.print ("1");
raw [arrayposition] = one_pulse;
rå [arrayposition + 1] = one_break;
}
ellers {
// Serial.print ("0");
raw [arrayposition] = zero_pulse;
rå [arrayposition + 1] = zero_break;
}
arrayposis = arrayposition + 2;
}
for (int i = 0; i <3; i ++) {
irsend.sendRaw (rå, 15, 38);
forsinkelse (50);
}
Serial.println ("");
Serial.print ("Raw timings:");
for (int z = 0; z
Opprinnelig sjekker veiviseren driften av skissen for å sende ut serieporten til skjermen. Da setter den alt i saken og forsyner Arduino ikke fra en datamaskin, men fra en strømforsyning tilkoblet via en mekanisk timer.
Nå som du har plassert enheten i nærheten av ladestasjonen, som robotstøvsugeren alltid kommer tilbake til, kan du stille inn brettplanen for den mekaniske timeren for å starte den. Det beste av alt - en gang om dagen. Bare ikke om natten, som i arbeidet til N.N. Nosov.