Étape 3: Arduino Script
Vous aurez besoin d’un ordinateur avec l’Arduino IDE installé (j’ai utilisé Arduino 1,05)
Ensuite, installez la bibliothèque IR (instructions sur le site), cela est nécessaire pour exécuter le script.
https://github.com/Shirriff/Arduino-IRremote
J’ai modifié (c'est-à-dire dépouillé retour) le script développé par probono disponible à https://gist.github.com/probonopd/5181021. Il est beaucoup plus détaillé que le script que j’ai utilisé. Avec elle, vous pouvez envoyer toutes les commandes par l’intermédiaire de l’arduino Roomba. Vaut vraiment le détour !
Fondamentalement, tout le script que j’ai collé ci-dessous fait est :
-Lorsque l’alimentation est allumée
-Arduino est initialisé, allume une LED rouge pour vous faire savoir que c’est sur.
-Commence la transmission de la commande "Clean" (136) à plusieurs reprises avec un délai de 5 secondes entre chaque transmission.
-Ne s’arrête pas jusqu'à ce que le courant est coupé !
Voici le script... Transférez-le au Conseil d’administration comme d’habitude.
Si vous êtes intéressé, vous pouvez ouvrir le moniteur série (9600) et voir la sortie de l’Arduino, juste en émettant la commande « Clean » sur répéter.
#include < IRremote.h >
/*
Super Simple Arduino Powerd Roomba Scheduler
par gowell2010
Instructables 2013-08-03 sortie
Code adapté de : https://gist.github.com/probonopd/5181021
Envoyer des commandes infrarouges de l’Arduino pour iRobot Roomba
par probono
Version initiale 2013-03-17
Copyright (c) 2013 par probono
Tous droits réservés.
Redistribution et l’utilisation sous les formes source et binaire, avec ou sans
modification, sont autorisées sous réserve que les conditions suivantes sont remplies :
1. les redistributions du code source doivent conserver la notice de copyright ci-dessus, cette
Liste des conditions et la clause de non-responsabilité suivante.
2. les redistributions sous forme binaire doivent reproduire l’avis de copyright ci-dessus,
Cette liste de conditions et l’exclusion de responsabilité suivante dans la documentation
et/ou autres documents fournis avec la distribution.
CE LOGICIEL EST FOURNI PAR LES DETENTEURS DU COPYRIGHT ET LES CONTRIBUTEURS "TEL QUEL" ET
TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS LIMITATION, L’IMPLICITE
LES GARANTIES DE QUALITÉ MARCHANDE ET D’ADEQUATION A UN USAGE PARTICULIER SONT
PAS ACCORDÉ. EN AUCUN CAS LE PROPRIÉTAIRE DU DROIT D’AUTEUR OU LES CONTRIBUTEURS SERA RESPONSABLES
DES DOMMAGES DIRECTS, INDIRECTS, ACCESSOIRES, SPÉCIAUX, EXEMPLAIRES OU INDIRECTS
(Y COMPRIS, MAIS NON LIMITÉ À, DES ACHATS DE REMPLACEMENT DE MARCHANDISES OU SERVICES ;
PERTE D’UTILISATION, DE DONNÉES OU DE PROFITS ; OU INTERRUPTION D’ACTIVITÉ) CAUSÉ ET
SUR TOUTE THÉORIE DE RESPONSABILITÉ, QUE CE SOIT DANS LE CONTRAT, RESPONSABILITÉ STRICTE OU DÉLICTUELLE
(Y COMPRIS LA NÉGLIGENCE OU AUTREMENT) RÉSULTANT DE L’UTILISATION DE CETTE
LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.
*/
IRsend irsend ; connecté à la broche 3 ; utiliser un transistor pour alimenter la LED IR pour portée maximal
int LED = 10 ;
void setup()
{
Serial.Begin(9600) ;
pinMode (LED, sortie) ;
digitalWrite (LED, haute) ; allumer la LED (HIGH est le niveau de tension)
}
void loop()
{
roomba_send(136) ; Envoyer « Propre »
Delay(5000) ; Attendez 5 secondes
}
Sub roomba_send(int code)
{
Serial.Print (« Roomba envoi code ») ;
Serial.Print(code) ;
int longueur = 8 ;
raw unsigned int [longueur * 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("") ;
pour (int compteur = longueur-1; compteur > = 0;--contrer) {}
Si (code & (1 << compteur)) {}
Serial.Print("1") ;
brute [arrayposition] = one_pulse ;
brut [arrayposition + 1] = one_break ;
}
else {}
Serial.Print("0") ;
brute [arrayposition] = zero_pulse ;
brut [arrayposition + 1] = zero_break ;
}
arrayPosition = arrayposition + 2 ;
}
pour (int i = 0; i < 3; i ++) {}
irsend.sendRaw (brut, 15, 38) ;
Delay(50) ;
}
Serial.println("") ;
Serial.Print ("Raw timings:") ;
pour (int z = 0; z < longueur * 2; z ++) {}
Serial.Print("") ;
Serial.Print(RAW[z]) ;
}
Serial.Print("\n\n") ;
}