Ricorda com'era
il robotaspirapolvere "Cibernetica" nel libro di N.N. Nosova "Non so nella città solare"? Gli è stato ricordato che era ora di mettersi al lavoro? Ora, quando tali dispositivi sono diventati una realtà, si è scoperto che è necessario. Prendi il telecomando e premi il pulsante su di esso. L'eroe del lavoro di Pachkul, Pestrenky, dopo aver visto questo, avrebbe sicuramente notato: "Che tipo di automatismi è questo, se dovessi premere un pulsante, se solo fosse senza pulsanti." Anche l'autore di Instructables con il soprannome di ShaperG lo pensava. E fatto
fallo da solo dispositivo per l'avvio di un aspirapolvere robot su un programma.
prodotto fatto in casa consiste in un timer meccanico per accendere vari apparecchi elettrici su un programma (Ikea o qualsiasi altro), un alimentatore,
Arduino, breadboard tipo breadboard e ponticelli dupont (opzionale, è possibile collegare tutto mediante saldatura), due LED - bagliore visibile e infrarossi, due resistori da 330 Ohm, alloggiamento Sparkfun o altro.
Dopo aver raccolto tutti i componenti necessari, la procedura guidata elabora un diagramma. E ancora nel programma simile a Fritzing, in questo caso, nell'applicazione online Mekanizmalar. Non a tutti piace questo modo di elaborare diagrammi, ma come collegare tutto è comprensibile.
Dopo aver deciso lo schema, la procedura guidata inizia a programmare:
Prende una biblioteca
quie lo schizzo è
qui. Semplifica lo schizzo in modo che quando è acceso, invia continuamente un comando "pulito" ogni cinque secondi. Lo schizzo dovrà essere finalizzato se
il modello l'aspirapolvere differisce da iRobot Roomba 530. Bene, il maestro scopre questo:
#include
/ *
Super semplice Arduino Powerd Roomba Scheduler
03-08-2013 Rilascio di Instructables
Codice adattato da: https://gist.github.com/probonopd/5181021
Invia comandi a infrarossi da Arduino a iRobot Roomba
di probono
17-03-2013 Versione iniziale
Copyright (c) 2013 di probono
Tutti i diritti riservati.
Ridistribuzione e utilizzo in formato sorgente e binario, con o senza
sono consentite modifiche purché siano soddisfatte le seguenti condizioni:
1. Le ridistribuzioni del codice sorgente devono conservare la suddetta nota sul copyright
elenco delle condizioni e il seguente disclaimer.
2. Le ridistribuzioni in forma binaria devono riprodurre la suddetta nota sul copyright,
questo elenco di condizioni e il seguente disclaimer nella documentazione
e / o altri materiali forniti con la distribuzione.
QUESTO SOFTWARE È FORNITO DAI TITOLARI E CONTRIBUTORI DEL COPYRIGHT "COSÌ COM'È" E
QUALSIASI GARANZIA ESPLICITA O IMPLICITA, COMPRESA, MA NON LIMITATA A, L'IMPLICITA
GARANZIE DI COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE
ESCLUSE. IN NESSUN CASO IL PROPRIETARIO OI CONTRIBUTORI DEL COPYRIGHT SARANNO RESPONSABILI
DANNI DIRETTI, INDIRETTI, INCIDENTALI, SPECIALI, ESEMPLARI O CONSEGUENTI
(COMPRESO, MA NON LIMITATO A, APPROVVIGIONAMENTO DI MERCI O SERVIZI SOSTITUTIVI;
PERDITA DI UTILIZZO, DATI O PROFITTI; O INTERRUZIONE DI AFFARI) TUTTAVIA CAUSA E
SU QUALSIASI TEORIA DI RESPONSABILITÀ, IN CONTRATTO, RESPONSABILITÀ RIGIDA, O TORT
(COMPRESO NEGLIGENZA O ALTRO) SORGENTE IN QUALSIASI MODO DI USO DI QUESTO
SOFTWARE, ANCHE SE CONSIGLIATO DELLA POSSIBILITÀ DI TALI DANNI.
* /
IRsend irsend; // cablato al pin 3; utilizzare un transistor per pilotare il LED IR per la portata massima
int LED = 10;
void setup ()
{
Serial.begin (9600);
pinMode (LED, OUTPUT);
digitalWrite (LED, ALTO); // accende il LED (ALTO è il livello di tensione)
}
void loop ()
{
roomba_send (136); // Invia "Clean"
ritardo (5000); // Attendi 5 secondi
}
void roomba_send (codice int)
{
Serial.print ("Invio del codice Roomba");
Serial.print (codice);
int length = 8;
unsigned int raw [lunghezza * 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 ("");
per (int counter = length-1; counter> = 0; --counter) {
if (codice & (1 << contatore)) {
// Serial.print ("1");
raw [arrayposition] = one_pulse;
raw [arrayposition + 1] = one_break;
}
altro {
// Serial.print ("0");
raw [arrayposition] = zero_pulse;
raw [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2;
}
per (int i = 0; i <3; i ++) {
irsend.sendRaw (grezzo, 15, 38);
ritardo (50);
}
Serial.println ("");
Serial.print ("Tempi non elaborati:");
per (int z = 0; z
Inizialmente, la procedura guidata verifica il funzionamento dello schizzo per l'output della porta seriale sul monitor. Quindi inserisce tutto nella custodia e alimenta l'Arduino non dal computer, ma dall'alimentazione accesa tramite un timer meccanico.
Ora, avendo posizionato il dispositivo vicino alla stazione di ricarica, su cui ritorna sempre l'aspirapolvere robot, è possibile impostare il programma di piegatura per il timer meccanico per avviarlo. Meglio di tutto, una volta al giorno. Solo di notte, come nel lavoro di N.N. Nosov.