Rappelez-vous ce que c'était
le robotaspirateur "Cybernetics" dans le livre de N.N. Nosova "Dunno dans la ville solaire"? Faut-il lui rappeler qu'il était temps de se mettre au travail? Maintenant, lorsque de tels appareils sont devenus une réalité, il s'est avéré que c'était nécessaire. Prenez la télécommande et appuyez sur le bouton. Le héros du travail de Pachkul, Pestrenky, l'ayant vu, aurait sûrement remarqué: "Quel genre d'automatisation est-ce, si vous devez appuyer sur un bouton, si seulement il le voulait sans aucun bouton." L'auteur d'Instructables sous le surnom de ShaperG le pensait également. Et a fait
fais-le toi-même dispositif pour démarrer un robot aspirateur selon un calendrier.
Fait maison se compose d'une minuterie mécanique pour allumer divers appareils électriques sur un calendrier (Ikea ou tout autre), une alimentation,
Arduino, planche à pain de type planche à pain et cavaliers dupont (en option, vous pouvez tout connecter par soudure), deux LED - lueur visible et infrarouge, deux résistances de 330 ohms, boîtier Sparkfun ou tout autre.
Après avoir récupéré tous les composants nécessaires, l'assistant établit un diagramme. Et encore une fois dans le programme de type Fritzing, dans ce cas, dans l'application en ligne Mekanizmalar. Tout le monde n'aime pas cette façon de dessiner des diagrammes, mais la façon de tout connecter est claire.
Après avoir décidé du schéma, l'assistant commence à programmer:
Prend une bibliothèque
iciet l'esquisse est
ici. Simplifie l'esquisse de sorte que lorsque l'appareil est sous tension, il envoie en continu une commande de «nettoyage» toutes les cinq secondes. Le croquis devra être finalisé si
le modèle l'aspirateur diffère de l'iRobot Roomba 530. Eh bien, le maître révèle ceci:
#include
/ *
Planificateur Roomba Arduino Powerd Super Simple
2013-08-03 Sortie Instructables
Code adapté de: https://gist.github.com/probonopd/5181021
Envoyez des commandes infrarouges de l'Arduino à l'iRobot Roomba
par probono
17/03/2013 Version initiale
Copyright (c) 2013 par probono
Tous droits réservés.
Redistribution et utilisation sous forme source et binaire, avec ou sans
modification, sont autorisées à condition que les conditions suivantes soient remplies:
1. Les redistributions du code source doivent conserver l'avis de copyright ci-dessus, ce
liste des conditions et l'avertissement suivant.
2. Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus,
cette liste de conditions et l'avertissement suivant dans la documentation
et / ou tout autre matériel fourni avec la distribution.
CE LOGICIEL EST FOURNI PAR LES DÉTENTEURS DE DROITS D'AUTEUR ET LES CONTRIBUTEURS "EN L'ÉTAT" ET
TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES
LES GARANTIES DE QUALITÉ MARCHANDE ET D'ADÉQUATION À UN USAGE PARTICULIER SONT
REJETÉ. EN AUCUN CAS, LE PROPRIÉTAIRE DU DROIT D'AUTEUR OU LES CONTRIBUTEURS NE SERONT RESPONSABLES DE
TOUS DOMMAGES DIRECTS, INDIRECTS, ACCESSOIRES, SPÉCIAUX, EXEMPLAIRES OU CONSÉCUTIFS
(Y COMPRIS, MAIS SANS S'Y LIMITER, L'APPROVISIONNEMENT DE BIENS OU DE SERVICES DE SUBSTITUTION;
PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS; OU INTERRUPTION D'ENTREPRISE) TOUTEFOIS CAUSÉE ET
SUR TOUTE THÉORIE DE LA RESPONSABILITÉ, QUE CE SOIT DANS LE CONTRAT, LA RESPONSABILITÉ STRICTE OU LE TORT
(Y COMPRIS LA NÉGLIGENCE OU AUTREMENT) DÉCOULANT DE QUELQUE MANIÈRE QUE CE SOIT
LOGICIEL, MÊME S'IL EST AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.
* /
IRsend irsend; // câblé à la broche 3; utiliser un transistor pour piloter la LED IR pour une portée maximale
LED int = 10;
void setup ()
{
Serial.begin (9600);
pinMode (LED, SORTIE);
digitalWrite (LED, HIGH); // allume la LED (HIGH est le niveau de tension)
}
boucle vide ()
{
roomba_send (136); // Envoyer "Clean"
retard (5000); // Attendez 5 secondes
}
void roomba_send (code int)
{
Serial.print ("Envoi du code Roomba");
Serial.print (code);
longueur int = 8;
unsigned int raw [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 ("");
for (int counter = length-1; counter> = 0; --counter) {
if (code & (1 << compteur)) {
// Serial.print ("1");
raw [arrayposition] = one_pulse;
raw [arrayposition + 1] = one_break;
}
sinon {
// Serial.print ("0");
raw [arrayposition] = zero_pulse;
raw [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2;
}
pour (int i = 0; i <3; i ++) {
irsend.sendRaw (brut, 15, 38);
retard (50);
}
Serial.println ("");
Serial.print ("Timings bruts:");
pour (int z = 0; z
Initialement, l'assistant vérifie le fonctionnement de l'esquisse pour sortir le port série vers le moniteur. Ensuite, il met tout dans le boîtier et alimente l'Arduino non pas à partir de l'ordinateur, mais à partir de l'alimentation allumée via une minuterie mécanique.
Maintenant, après avoir placé l'appareil près de la station de charge, à laquelle le robot aspirateur revient toujours, vous pouvez définir le programme de pliage pour que la minuterie mécanique le lance. Le meilleur de tous - une fois par jour. Seulement pas la nuit, comme dans N.N. Nosova.