Facile bricolage domotique (à l’aide de commutateurs de servo) (3 / 4 étapes)

Étape 3: programmation

Avec votre interrupteur Servo tous assemblés et fixés au mur, tout ce qui reste est de programmation. Let's get ce programme d’essais chargé (si vous avez commandé un arduino avec votre kit que ce programme viendra pré chargé)

Ce qu’il fait

  • Le programme va commencer vers le haut, allumez votre interrupteur d’éclairage. Puis attendez cinq secondes avant de l’éteindre à nouveau. Vous allez subir votre propre interrupteur rave.
  • Il y a aussi quelques modes démo dans le programme comme le montre cette vidéo.

Pour plus d’informations sur la façon de câbler chaque mode démo s’il vous plaît se référer au code. Voici un résumé des pièces utilisées.

  • Demo Mode 1 - bouton - Simple Micro interrupteur trouvé (ici)
  • Capteur de proximité de démo Mode 2 - capteur de proximité - IR trouvée (ici)
  • Demo Mode 3 - Photo résistance trouvée (ici)

Comment faire pour télécharger le code de votre Arduino

Option 1 - téléchargement et décompression

  • Télécharger le fichier zip joint (05_SESW_Test.zip)
  • Décompressez-le dans votre répertoire de sketch Arduino (par défaut /My Documents/Arduino /)
  • Lancer l’environnement Arduino et charge le croquis (_SESW_Test)
  • Télécharger et commencer à jouer

Option 2 - copie et collage

  • Copiez le code de l’Arduino par en dessous
  • Collez-le dans l’environnement de développement Arduino.
  • Télécharger et commencer à jouer

Comment faire pour utiliser Servo interrupteurs dans votre propre Code

  • Copiez et collez les sections du programme de test entre (/ / interrupteur de Servo - (SESW) préambule commencer) et (/ / interrupteur Servo - fin du préambule (SESW)) vers le haut de votre croquis
  • Copiez et collez les sections du programme de test entre (/ / interrupteur de Servo - START de Routines (SESW)) et (/ / interrupteur Servo - (SESW) Routines fin) au fond de votre croquis
  • appeler servoSwitchSetup() ; dans votre routine setup()
  • puis d’utiliser turnOn() et turnOff()
  • des ajustements sont possibles pour soutenir plus de commutateurs servo.

Annexe 1 - Arduino Code (_SESW_Test)

DÉBUT du préambule NUNCHUCK - pour plus de renseignements détaillés, veuillez consulter la source originale de cette http://www.windmeadow.com/node/42 code / /---/ * * détails câblage * blanc - moulu * rouge - v - 5 volts + 3.3 semble fonctionner * vert - données - analogique 4 * jaune - horloge - analogique 5 * / #include #include #undef int #include uint8_t outbuf [6] ; Tableau pour stocker les arduino sortie cnt int = 0 ; compteur utilisé pour nunchuck comunication int ledPin = 13 ; int nunchuckValues [] = {0,0,0,0,0,0,0,0,0,0} ; Un tableau pour stocker les valeurs de nuncheck / * * l’index de chaque valeur dans le tableau [] nunchuckValues * ie. XSTICK valeur est stockée au nunchuckValues [XSTICK] (0) * / levier de commande #define XSTICK 0 //The valeurs #define YSTICK 1 #define XAXIS 2 //The trois accéléromètre #define YAXIS 3 #define ZAXIS 4 #define ZBUTTON 5 //Front bouton valeurs (0 pressée) #define CBUTTON 6 #define XAXISDELTA 7 //Change dans les données provenant de la dernière lecture ; #define YAXISDELTA 8 #define ZAXISDELTA 9 //Nunchuck G calcul des constantes / * * pour la mise à l’échelle les valeurs brutes du nunchuck en valeurs de G * on trouvera des détails sur l’étalonnage et les maths au * http://www.wiili.org/index.php/Motion_analysis x_0 Points zéro (copié de http://www.wiili.org/index.php/Motion_analysis) = (x_1 + x_2) / 2\, y_0 = (y_1 + y_3) / 2\, z_0 = (z_2 + z_3) / 2\ G un points x = \frac{x_{raw}-x_0} {x_3 - x_0} y = \frac{y_{raw}-y_0} {y_2 - y_0} z = \frac{z_{raw}-z_0} {z_1 - z_0} * / / * pas tous d'entre eux sont utilisés et pourraient être supprimés (gardé pour faire du interpretting mathématique * plus facile 0-zéro valeur G 1-valeur lors de la pose sur la table 2-valeur au repos sur le nez * 3-valeur au repos sur le côté (côté gauche vers le haut) * / #define X0 500 #define X1 500 # définir X2 500 #define X3 711 #define Y0 465 #define Y1 481 #define Y2 621 #define Y3 449 #define Z0 578 #define Z1 785 #define 575 Z2 #define //END Z3 582 du NUNCHUCK préambule - pour plus de renseignements détaillés, veuillez consulter la source originale de cette http://www.windmeadow.com/node/42 code / /---/ /---/ / START de ARDUINO contrôlée SERVO ROBOT (Serbes) préambule #include #define LEFTSERVOPIN 10 #define RIGHTSERVOPIN 9 #define MAXSPEED 10 //due à la façon de travaillent de servos de rotation en continu la vitesse maximale est atteint à une valeur bien inférieure à 90 (cette valeur changera selon vos servos) (pour les servos de parallaxe) Servo leftServo ; Servo rightServo ; int leftSpeed = 100 ; définit la vitesse du robot (servos gauche) //a pourcentage entre - MAXSPEED et MAXSPEED int rightSpeed = 100 ; définit la vitesse du robot (les deux servos) //a pourcentage entre - MAXSPEED et MAXSPEED int vitesse = 100 ; utilisé pour la commande simple (pourcentage de //a goForward, goBackward, goLeft et goRight entre 0 et MAXSPEED / / fin d’ARDUINO contrôlée SERVO ROBOT (Serbes) préambule / /---lastPrint long ; //a long variable pour stocker à la fois l’état de la wiimote est dernier imprimé #define PRINTINTERVAL 1000 //the nombre de millisecondes entre la sortie de l’état de nunchuck sur le pourcentage //A usb port #define 20 zone morte du centre qui est interprétée comme étant toujours nulle void setup() {Serial.begin(9600) ; //Starts le port série (utilisé pour le débogage Cependant les servos rend nerveux) nunchuck_init () ; Envoyer le nunchuck initialisation du handshake serbSetup() ; Ajoute les servos et prépare tous Serbes liés variables lastPrint = millis() ; } void loop() {readNunchuck() ; //Reads l’état actuel des boutons de la Wiimote et accéléromètres si ()
! getNunValue(ZBUTTON)) {moveWiiAcelerometer() ; //moves la deoending de la wii sur les valeurs d’accélération Wiimote} else {moveWiiJoystick();} if((millis() - lastPrint) > PRINTINTERVAL) {//If une seconde s’est écoulé depuis les dernières valeurs de nunchuck impression imprimer printData() ; valeurs nunchuck //print Serial.println() ; //add une entrée lastPrint = millis() ; //store l’heure actuelle comme lastPrint}} void moveWiiAcelerometer() {moveDifferential(getYGs() * (float)100,getXGs()*(float)100);} void moveWiiJoystick() {moveDifferential(map(getNunValue(YSTICK) , 30,220,-100,100),map(getNunValue(XSTICK),30,220,-100,100)) ; } //Takes dans une direction et une vitesse d’entrée (comme une manette de jeu) et il se traduit par vitesse commandes void moveDifferential (int speed1, int direction1) {speed1 = deadBandFilter(speed1) ; direction1 = deadBandFilter(direction1) ; setSpeedLeft (speed1 + direction1); setSpeedRight (speed1 - direction1);} int deadBandFilter (int value) {si (valeur > zone morte - & & valeur < zone morte) {valeur = 0;} d’autre {if(value > 0) {valeur = valeur - zone morte * 100 / (100-zone morte);} d’autre {valeur = valeur + zone morte * 100 / (100-zone morte);}} return value;} //START de ROUTINES NUNCHUCK / /---//Calculates et retourne l’accélération xAxis en Gs flotter getXGs() {retour ((float)getNunValue(XAXIS) - X0) / (X 3 - X 0);} //Calculates et retourne l’accélération yAxis dans Gs flotteur getYGs() {retour ((float)getNunValue(YAXIS)-Y0) / (Y2 - Y0);} //Calculates et retourne l’accélération zAxis dans Gs flotteur getZGs() {retour ((float)getNunValue(YAXIS)-Z0) / (Z1 - Z0);} //START de NUNCHUCK lecture CODE - pour davantage de renseignements détaillés, veuillez visiter le //of source original ce http://www.windmeadow.com/node/42 code / /---void readNunchuck() {Wire.requestFrom (0 x 52 , 6); demander des données à nunchuck tandis que (Wire.available ()) {outbuf [cnt] = nunchuk_decode_byte (Wire.receive ()); / / recevoir octet comme un entier digitalWrite (ledPin, HIGH); / / définit la LED sur le cnt ++;} / / si nous avons reçu les 6 octets, puis aller les imprimer si (cnt > = 5) {nunchuckValues [XSTICK] = outbuf [0]; nunchuckValues [YSTICK] = outbuf [1]; int tempNun_xAxis = outbuf [2] * 2 * 2; int tempNun_yAxis = outbuf [3] * 2 * 2; int tempNun_zAxis = outbuf [4] * 2 * 2; nunchuckValues [ZBUTTON] = 0; nunchuckValues [CBUTTON] = 0; / / outbuf byte [5] contient les bits pour les touches z et c / / il contient également les bits les moins significatifs pour les données de l’accéléromètre / / donc nous devons vérifier chaque bit de l’octet outbuf [5] si ((outbuf [5] >> 0) & 1) {nunchuckValues [ZBUTTON] = 1;} //checking si Z touche (0 = pressé 1 = non enfoncé) si ((outbuf [5] >> 1) & 1) {nunchuckValues [CBUTTON] = 1;} //checking C touche (0 = pressé 1 = non enfoncé) si ((outbuf [5] >> 2) & 1) {tempNun_xAxis += 2;} //adding deuxième bit le moins significatif à x_axis si ((outbuf [5] >> 3) & 1) {tempNun_xAxis += 1;} //adding moins significatif bit à x_axis si ((outbuf [5] >> 4) & 1) {tempNun_yAxis += 2;} //adding deuxième moins importante bit à y_axis si ((outbuf [5] >> 5) & 1) {tempNun_yAxis += 1;} //adding moins significatif bit à x_axis si ((outbuf [5] >> 6) & 1) {tempNun_zAxis += 2;} //adding deuxième moins importante peu à z_ axe si ((outbuf [5] >> 7) & 1) {tempNun_zAxis += 1;} ///adding moins significatif sur x_axis nunchuckValues [XAXISDELTA] = tempNun_xAxis - nunchuckValues [XAXIS] ; nunchuckValues [XAXIS] = tempNun_xAxis ; nunchuckValues [YAXISDELTA] = tempNun_yAxis - nunchuckValues [YAXIS] ; nunchuckValues [YAXIS] = tempNun_yAxis ; nunchuckValues [ZAXISDELTA] = tempNun_zAxis - nunchuckValues [ZAXIS] ; nunchuckValues [ZAXIS] = tempNun_zAxis ; } cnt = 0 ; send_zero () ; Envoyer la demande pour les octets suivants} int getNunValue(int valueIndex) {return nunchuckValues [valueIndex];} void nunchuck_init () {Wire.begin (); / / bus i2c jointure avec adresse 0 x 52 Wire.beginTransmission (0 x 52); / / transmettre à un périphérique 0 x 52 Wire.send (0 x 40); / / envoie l’adresse de mémoire Wire.send (0 x 00); / / envoie envoyé un zéro. Wire.endTransmission () ; arrêt transmettant} void send_zero () {Wire.beginTransmission (0 x 52); / / transmettre à un périphérique 0 x 52 Wire.send (0 x 00); / / envoie un octet Wire.endTransmission (); / / arrêter la transmission} / / Encode les données pour mettre en forme que la plupart des pilotes wiimote sauf / / nécessaire uniquement si vous utilisez un de la wiimote réguliers pilotes char nunchuk_decode_byte (char x) {x = (x ^ 0 x 17) + 0 x 17 ; return x;} //END du NUNCHUCK CODE - pour plus de renseignements détaillés, veuillez consulter la source de //original de cette http://www.windmeadow.com/node/42 code / /---/ /---//START ROUTINES d’ARDUINO contrôlée SERVO ROBOT (Serbes) / * * met en place votre arduino pour régler votre Serbes utilisant les routines inclus * / void serbSetup() {pinMode (LEFTSERVOPIN, OUTPUT); setSpeed(speed) ; //sets le servo de droite signal Broche //to sortie leftServo.attach(LEFTSERVOPIN) ; //sets la servocommande gauche signal Broche //to sortie pinMode (RIGHTSERVOPIN, sortie) //attaches laissé servo rightServo.attach(RIGHTSERVOPIN) ; //attaches bon servo goStop();} / * * définit la vitesse du robot entre 0-(stopped) et 100-(pleine vitesse) * NOTE : vitesse ne changera pas la vitesse actuelle, vous devez changer de vitesse * puis appeler une des méthodes aller avant que des changements se produisent. * / void setSpeed (int newSpeed) {si (newSpeed > = 100) {newSpeed = 100;} //if vitesse est supérieure à 100 //make il if 100 (newSpeed < = 0) {newSpeed = 0;} //if vitesse est inférieure que de faire de 0 //it 0 Vitesse = newSpeed * MAXSPEED / 100 ; //scales la vitesse //between 0 et MAXSPEED} / * * définit la vitesse de la rightServo de robots entre-100-(reversed) et 100-(forward) * NOTE : les appels à cette routine prendront effet immédiatement * / void setSpeedRight (int newSpeed) {si (newSpeed > = 100) {newSpeed = 100;} //if vitesse est supérieure à 100 //make il if 100 (newSpeed < = -100) {newSpeed = -100;} //if vitesse est inférieure à -100 font //it -100 rightSpeed = newSpeed * MAXSPEED / 100 ; //scales la vitesse d’être //between - MAXSPEED et MAXSPEED rightServo.write (90 - rightSpeed); //sends la nouvelle valeur à l’asservissement} / * * définit la vitesse de la leftServo de robots entre-100-(reversed) et 100-(forward) * NOTE : les appels à cette routine prendront effet immédiatement * / void setSpeedLeft (int newSpeed) {si (newSpeed > = 100) {newSpeed = 100;} //if vitesse est supérieure à 100 //make il if 100 (newSpeed < = -100) {newSpeed = -100;} //if vitesse est inférieure à -100 font //it -100 leftSpeed = newSpeed * MAXSPEED / 100 ; //scales la vitesse d’être //between - MAXSPEED et MAXSPEED leftServo.write (90 + leftSpeed); //sends la nouvelle valeur à l’asservissement} / * * envoie le robot envoie * / void goForward() {leftServo.write (90 + vitesse); rightServo.write (90 - vitesse);} / * * envoie le robot en arrière * / void goBackward() {leftServo.write (90 - vitesse); rightServo.write (90 + vitesse);} / * * envoie le robot à droite * / void goRight() {leftServo.write (90 + vitesse); rightServo.write (90 + vitesse);} / * * envoie le robot gauche * / void goLeft() {leftServo.write (90 - vitesse); rightServo.write (90 - vitesse);} / * * s’arrête le robot * / void goStop() {leftServo.write(90) ; rightServo.write(90);} //END ROUTINES d’ARDUINO contrôlée SERVO ROBOT (Serbes) / /---//START épuisé ROUTINES (peut supprimer si ne pas utilisez) / /---//Prints la Wiimote en dernière lecture données (doit appeler NUN_readNunchuck() ; avant d’appeler printData() Sub {Serial.print ("XJoy =") ; Serial.Print (getNunValue(XSTICK), DEC) ; Serial.Print ("\t") ; Serial.Print ("YJoy =") ; Serial.Print (getNunValue(YSTICK), DEC) ; Serial.Print ("\t") ; Serial.Print ("XGs =") ; Serial.Print (getXGs() * 1000, DEC) ; Serial.Print ("\t") ; Serial.Print ("YGs =") ; Serial.Print (getYGs() * 1000, DEC) ; Serial.Print ("\t") ; Serial.Print ("ZGs =") ; Serial.Print (getZGs() * 1000, DEC) ; Serial.Print ("\t") ; Serial.Print ("ZBut =") ; Serial.Print (getNunValue(ZBUTTON), DEC) ; Serial.Print ("\t") ; Serial.Print ("YBut =") ; Serial.Print (getNunValue(CBUTTON), DEC) ; Serial.Print ("\t") ; } //END OF PRINT ROUTINES //--------------------------------------------------------------------

Articles Liés

SMS basé système de domotique à l’aide de 1SHEELD

SMS basé système de domotique à l’aide de 1SHEELD

Hey amis, ce mon premier instructable et juste tourné 16 an vieux il y a deux mois.Dans ce instructable je montrerai comment faire 5 canal SMS basé système de domotique à l'aide de 1sheeld. Au lieu d'utiliser des relais électromagnétiques, j'ai const
Téléphone facile bricolage Stand

Téléphone facile bricolage Stand

Support téléphone facile bricolage
Facile bricolage Word Art Canvas à l’aide de Cricut

Facile bricolage Word Art Canvas à l’aide de Cricut

je ne sais pas pour vous mais j'aime toutes les toiles de « Word Art » nouveaux qui font leur apparition un peu partout.Ce que je n'aime pas est le prix, j'ai trouvé une avec un joli « maison de grand-mère », disant que j'ai aimé pour 35 $! AÏE ! Je
BRICOLAGE Cutter (à l’aide d’un taille-crayon) * facile *

BRICOLAGE Cutter (à l’aide d’un taille-crayon) * facile *

Aujourd'hui je vous montre Comment faire un Cutter / coupe en utilisant un taille-crayon.Tellement simple ! Tout ce que vous est un taille-crayon et un tournevis (ou quelque chose comme ça).Pretty cooool, hein??
BRICOLAGE domotique pour les débutants.  Absolument aucun codage ou soudure requise.  Android/Arduino pour allumage et extinction de choses

BRICOLAGE domotique pour les débutants. Absolument aucun codage ou soudure requise. Android/Arduino pour allumage et extinction de choses

Cette instructiable a pour but le débutant absolu. Si vous pouvez gérer un couteau bien aiguisé sans couper vos doigts vous peuvent faire et personnaliser ce contrôleur domotique.Ces instructions sont également en ligne à www.pfod.com.au sous Android
Facile Light Saber à l’aide de bulles jouet ancien

Facile Light Saber à l’aide de bulles jouet ancien

je pense qu'il y en a beaucoup qui aiment Star wars en raison le sabre. Au moins, je le fais.J'ai toujours voulu un, mais n'était pas disponible... maintenant il est facilement disponible, mais je voulais faire...Donc dans ce instructable, je vais pa
Domotique à l’aide d’Arduino Uno

Domotique à l’aide d’Arduino Uno

Vous avez toujours voulu faire de votre maison automatisée ? Envie de contrôler les lumières, les fan et les autres appareils de votre smartphone ? Ou voulait un didacticiel sur les périphériques connectés et mise en route avec lui ? Android la domot
Domotique à l’aide de la Part de l’Arduino-je

Domotique à l’aide de la Part de l’Arduino-je

Ce n'est pas comme n'importe quel autre domotique comme nous l'avons vu plus tôt. C'est dispositif de régulation à distance quelle est la différence. C'est parce qu'il peut contrôler le monde. Vous pouvez contrôler à l'aide de n'importe quel appareil
Système de domotique à l’aide du module Arduino et GSM SIM900

Système de domotique à l’aide du module Arduino et GSM SIM900

Salut! Comme j'ai presque fini mes études à la faculté de génie, j'ai dû faire un projet de remise des diplômes et ma pensée était de faire une chose à couper le souffle (je sais que c'est hilarant: D) pour montrer à tout le monde que je suis un fabr
Appareil domotique à l’aide de la télécommande IR

Appareil domotique à l’aide de la télécommande IR

Nous pouvons utiliser la technologie non conventionnelles de la télécommande pour contrôler les électroménagers facilement sans les conseils d'interrupteur mural fixe. Ici j'utilise télécommande technologie (IR distance) et Bluetooth technologie de c
Domotique à l’aide de Bluetooth

Domotique à l’aide de Bluetooth

si heureux que ce projet a obtenu enfin terminé. J'avais travaillé là-dessus pendant une longue période.Pensez comment refroidir ce serait si vous êtes en mesure de contrôler vos appareils AC juste avec une touche de votre smartphone Android. Vous su
Facile bricolage Bent Plywood Light fixtures (non fumante, laminage ou un trait de scie Coupes!)

Facile bricolage Bent Plywood Light fixtures (non fumante, laminage ou un trait de scie Coupes!)

Pourquoi les appareils d'éclairage si cher.. .pour la vie de moi je ne comprends pas le prix exorbitant de certaines teintes claires.Je n'ai jamais eu une raison d'acheter une ombre (cause j'ai vécu dans des endroits qui déjà avaient quelques-uns...
Comment 3 servomoteurs de contrôle à l’aide de commutateurs de bouton poussoir et un Arduino Uno

Comment 3 servomoteurs de contrôle à l’aide de commutateurs de bouton poussoir et un Arduino Uno

Dans ce projet, je me suis fixé la tâche de contrôler le mouvement des 3 servomoteurs en appuyant sur les commutateurs de bouton poussoir. Mon intention est d'utiliser ces boutons pour contrôler le mouvement d'un bras de robot 3-servo.Ce que je veux
Valentines facile bricolage Robot

Valentines facile bricolage Robot

Cette année faire quelque chose de différent pour votre valentine. Allumer le jour avec la carte d'un simple bricolage LED Robot Valentin.Étape 1: Recueillir vos matériauxVous aurez besoin :Valentine de Robot gratuit imprimableCarte de voeux papier o