Étape 8: Le code
Pour écrire du code pour arduino, vous devez l’arduino IDE (Téléchargez-le ici)J’utilise la version 1.0.5, assurez-vous de sélectionner le port COM approprié (windows) et bord de type à partir de l’IDE, puis utilisez le dessous code et télécharger de hit.
NOTE : Les valeurs que j’ai utilisé dans le code pour régler le débattement maximum des servos sont faits exactement pour cette boîte prenant en compte les servos, positionnement, axes et angles. J’ai eu ce par le biais de procès. Si vous devez concevoir vos propres valeurs selon votre boîte et placement de servo.
Pour référence, ci-dessous sont les valeurs min/max, que j’ai utilisé pour chaque servo comme vous les verrez se produisant dans le code :
La porte :
80, masquage, 155 complètement ouverte
La main :
0 masquage, 129 pousser sur l’interrupteur
Voici le code (mieux pour télécharger le fichier joint à cette étape au lieu de copier/coller par le dessous) :
#include < Servo.h > int switch_pin = 2 ; Mettez l’interrupteur sur la broche 2 moteurs variables int pos = 0 ; void setup() void loop() } Bibliothèque de mouvements mouvement de base
Servo doorServo ;
Servo handServo ;
int motorThrottle = 11 ;
int motorDirection = 13 ;
frein moteur int = 8 ;
int selectedMove = 0 ; déplacer le sélecteur
int Testmove = 0 ; mode test : ensemble pour déplacer nombre pour ne tester qu’un seul déplacement sélectionné
(la valeur zéro à fonctionner normalement c’est à dire : roundrobbin sur l’amm se déplace)
{
Serial.Begin(9600) ;
pinMode (switch_pin, entrée) ;
doorServo.attach(9) ; Set servo porte sur 9 broches pwm
handServo.attach(10) ; Set servo main sur 10 broches pwm
doorServo.write(80) ; ensemble porte pour cacher la position
handServo.write(0) ; Set main pour cacher la position
Configurer le canal B, (étant donné que canal A est réservé par les servos de porte et de la main et ne peut pas ber utilisé en même temps)
pinMode (motorDirection, sortie) ; Goupille d’initiés moteur canal B
pinMode (frein moteur, sortie) ; Goupille d’initiés frein canal B
}
{
Si (Testmove! = 0) {}
selectedMove = Testmove ;
}
Si l’interrupteur est allumé, puis déplacez la porte et la main pour l’éteindre...
if(digitalRead(switch_pin) == HIGH)
{
Si (selectedMove > 10) {selectedMove = 0;} //when tous les coups sont joués, répéter les mouvements de début
Voici tous les « coups » que j’ai conçu jusqu'à présent, chacun est une fonction qui est écrit ci-dessous dans le code, execuse les noms, abit étrange ? Oui, car certains sont écrits en arabe
Si (selectedMove == 0) {switchoff();}
ElseIf (selectedMove == 1) {switchoff();}
ElseIf (selectedMove == 2) {switchoffbitaraddod();}
ElseIf (selectedMove == 3) {crazydoor();}
ElseIf (selectedMove == 4) {crazyslow();}
ElseIf (selectedMove == 5) {m7anika7anika();}
ElseIf (selectedMove == 6) {m3alla2();}
ElseIf (selectedMove == 7) {switchoff();}
ElseIf (selectedMove == 8) {matrix();}
ElseIf (selectedMove == 9) {sneak();}
ElseIf (selectedMove == 10) {zee7();}
Si (Testmove == 0) {}
selectedMove ++ ; swith au coup suivant, sinon en mode test
}
}
Sub switchoff()
{
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Passer la main
pour (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
déplacer 3: ouvrir et attendre, puis passer la main et attendre, puis changez d’et cacher
Sub switchoffbitaraddod()
{
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(800) ;
Passer la main
pour (pos = 0; pos < 100; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(1000) ;
pour (pos = 100; pos < 129; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 5)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
déplacer les 4: ouvrir la porte puis fermez ça plusieurs fois, attendre, puis rapidement reoprn une nd éteindre et cacher.
Sub crazydoor()
{
Porte en mouvement
pour (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos) ;
Delay(15) ;
}
Porte en mouvement
pour (pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 110; pos > = 80; pos-= 15)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(700) ;
Porte en mouvement
pour (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(700) ;
porte de masquage
pour (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos) ;
Delay(15) ;
}
---de commutateur de---/ /
Porte en mouvement
pour (pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos) ;
Delay(15) ;
}
Passer la main
pour (pos = 0; pos < 129; pos = 3)
{
handServo.write(pos) ;
Delay(15) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 3)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 15)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
déplacer 5: porte ouverte, puis déplacez main très lentement vers l’avant et arrière à cacher très lentement, puis refermez vite la porte
Sub crazyslow()
{
Porte en mouvement
pour (pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos) ;
Delay(30) ;
}
Passer la main
pour (pos = 0; pos < 129; pos = 1)
{
handServo.write(pos) ;
Delay(30) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 1)
{
handServo.write(pos) ;
Delay(30) ;
}
porte de masquage
pour (pos = 155; pos > = 125; pos-= 1)
{
doorServo.write(pos) ;
Delay(30) ;
}
Delay(100) ;
pour (pos = 125; pos > = 80; pos-= 4)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
déplacer 6 :
void m7anika7anika() {}
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Passer la main
pour (pos = 0; pos < 70; pos = 1)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(800) ;
porte de masquage
pour (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
handServo.write(40) ;
Delay(1000) ;
Passer la main
pour (pos = 40; pos < 129; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
pour (pos = 120; pos > = 80; pos-= 1)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
void m3alla2() {}
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Passer la main
pour (pos = 0; pos < 127; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(2000) ;
pour (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
pour (pos = 155; pos > = 140; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
pour (pos = 140; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(500) ;
cacher la main
pour (pos = 127; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
matrix() Sub
{
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Passer la main
pour (pos = 0; pos < 80; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
pour (pos = 80; pos < 129; pos = 1)
{
handServo.write(pos) ;
Delay(30) ;
}
Delay(300) ;
pour (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(10) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
Sub sneak()
{
Porte en mouvement
pour (pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos) ;
Delay(30) ;
}
Delay(2000) ;
Passer la main
pour (pos = 0; pos < 40; pos = 1)
{
handServo.write(pos) ;
Delay(30) ;
}
Delay(500) ;
pour (pos = 130; pos < 155; pos = 4)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(100) ;
pour (pos = 40; pos < 90; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(500) ;
cacher la main
pour (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(100) ;
pour (pos = 70; pos < 90; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(100) ;
pour (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
Delay(100) ;
pour (pos = 70; pos < 129; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
pour (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}
Sub zee7()
{
Porte en mouvement
pour (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
Delay(2000) ;
avant @ demi-vitesse vers la gauche
digitalWrite (motorDirection, basse) ; Établit la bonne direction du canal B
digitalWrite (frein moteur, faible) ; Débloquer le frein pour le canal B
analogWrite (motorThrottle, 100) ; Fait tourner le moteur à pleine vitesse sur canal B
Delay(300) ;
digitalWrite (frein moteur, HIGH) ; Eengage le frein pour le canal B
Delay(2000) ;
en arrière @ moitié de vitesse vers la droite
digitalWrite (motorDirection, HIGH) ; Établit à gauche en direction du canal B
digitalWrite (frein moteur, faible) ; Débloquer le frein pour le canal B
analogWrite (motorThrottle, 100) ; Fait tourner le moteur sur le canal B à mi-vitesse
Delay(300) ;
digitalWrite (frein moteur, HIGH) ; Eengage le frein pour le canal B
Delay(1000) ;
Passer la main
pour (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos) ;
Delay(15) ;
}
cacher la main
pour (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos) ;
Delay(15) ;
}
porte de masquage
pour (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos) ;
Delay(15) ;
}
}