Paso 3: Script de Arduino
Usted necesitará un ordenador con el Arduino IDE instalado (yo he usado Arduino 1.05)
A continuación, instalar la biblioteca de IR de (instrucciones en el sitio) esto es necesario para ejecutar el script.
https://github.com/shirriff/Arduino-IRremote
He modificado (es decir, la desnudaron detrás) el script desarrollado por probono de https://gist.github.com/probonopd/5181021. Es mucho más detallada que la secuencia de comandos que he utilizado. Con él, puede enviar cada comando de Roomba a través de arduino. Definitivamente digno de la comprobación hacia fuera!
Básicamente, la secuencia de comandos que he pegado abajo hace es:
-Cuando se activa la alimentación
-Arduino está inicializado, se enciende LED rojo para hacerle saber que está en.
-Comienza a transmitir el comando "Clean" (136) varias veces con un retardo de 5 segundos entre cada transmisión.
-No se detiene hasta que se corta la corriente.
Abajo está el script... Subir a la Junta como normal.
Si usted está interesado, puede abrir el monitor serial (9600) y ver la salida de Arduino, solo transmitir el comando "Clean" en repetir.
#include < IRremote.h >
/*
Super sencillo Arduino Powerd Roomba Scheduler
por gowell2010
Lanzamiento de Instructables 2013-08-03
Código adaptado de: https://gist.github.com/probonopd/5181021
Enviar comandos infrarrojos de la Arduino a iRobot Roomba
por probono
Versión inicial de 2013-03-17
Copyright (c) 2013 por probono
Todos los derechos reservados.
Redistribución y uso en forma de fuente y binario, con o sin
modificación, siempre que se cumplan las siguientes condiciones:
1. las redistribuciones del código fuente deben conservar el aviso de copyright anterior, esta
pliego de condiciones y el siguiente descargo de responsabilidad.
2. las redistribuciones en formato binario deben reproducir el aviso de copyright,
Esta lista de condiciones y la renuncia siguiente en la documentación
u otros materiales proporcionados con la distribución.
ESTE SOFTWARE ES PROPORCIONADO POR LOS TITULARES DE DERECHOS DE AUTOR Y COLABORADORES "TAL CUAL" Y
EXPRESAS O IMPLÍCITAS GARANTÍAS, INCLUIDAS, SIN LIMITARSE A, LA IMPLÍCITA
LAS GARANTÍAS DE COMERCIABILIDAD E IDONEIDAD PARA UN PROPÓSITO PARTICULAR
EXCLUIDA. EN NINGÚN CASO EL PROPIETARIO DEL COPYRIGHT O COLABORADORES SERÁN RESPONSABLES
CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE
(INCLUYENDO, SIN LIMITARSE A, ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS;
PÉRDIDA DE USO, DATOS O BENEFICIOS; O LA INTERRUPCIÓN COMERCIAL) SIN EMBARGO CAUSADO Y
EN CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO
(INCLUYENDO LA NEGLIGENCIA O DE OTRA MANERA) DERIVADA DE LA UTILIZACIÓN DE ESTE
SOFTWARE, INCLUSO SI SE ADVIERTE DE LA POSIBILIDAD DE DICHOS DAÑOS.
*/
Irsend de IRsend; conectado al pin 3; usar un transistor para manejar el LED IR de maximo alcance
int LED = 10;
void setup()
{
Serial.Begin(9600);
pinMode (LED, salida);
digitalWrite (LED, alta); Encienda el LED (alto es el nivel de voltaje)
}
void loop()
{
roomba_send(136); Enviar "Limpio"
Delay(5000); Espere 5 segundos
}
void roomba_send(int code)
{
Serial.Print ("código de envío Roomba");
Serial.Print(Code);
int longitud = 8;
raw unsigned int [longitud * 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("");
para (int contador = 1 longitud; contador > = 0;--contador) {}
Si (código & (1 << contador)) {}
Serial.Print("1");
RAW [arrayposition] = one_pulse;
RAW [arrayposition + 1] = one_break;
}
Else {}
Serial.Print("0");
RAW [arrayposition] = zero_pulse;
RAW [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2;
}
para (int i = 0; i < 3; i ++) {}
irsend.sendRaw (crudo, 15, 38);
Delay(50);
}
Serial.println("");
Serial.Print ("tiempos de cruda:");
para (int z = 0; z < longitud * 2; z ++) {}
Serial.Print("");
Serial.Print(RAW[z]);
}
Serial.Print("\n\n");
}