Comment construire une autre machine inutile : difficile à utiliser et facile à faire ! (8 / 9 étapes)

É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 >
Servo doorServo ;
Servo handServo ;

int switch_pin = 2 ;               Mettez l’interrupteur sur la broche 2

moteurs variables
int motorThrottle = 11 ;
int motorDirection = 13 ;
frein moteur int = 8 ;

int pos = 0 ;
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)

void setup()
{
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

}

void loop()
{
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
}

}
}

Bibliothèque de mouvements

mouvement de base
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) ;
}
}

Articles Liés

Une autre Machine inutile - aka iUseless

Une autre Machine inutile - aka iUseless

J'ai eu la boîte d'un iPhone d'Apple disponible et fait une version de la machine inutile avec elle. J'ai l'intention de la donner à mon fils qui travaille chez Apple.Fondamentalement, j'ai suivi la méthode illustrée dans ce Instructable:.J'ai suivi
Comment construire une boîte inutile

Comment construire une boîte inutile

Ce guide vous montrera comment créer une simple boîte inutile. J'estime que cela pourrait être construit parfaitement en environ 6 heures. Elle nécessite des connaissances de base des circuits, l'IDE Arduino, et l'impression 3D est sympa, mais pas né
Comment construire une douche Walk-in (partie 2: montage mural Wedi)

Comment construire une douche Walk-in (partie 2: montage mural Wedi)

Il s'agit d'un tutoriel épique...Je vous promets que vous allez apprendre comment construire une douche à l'italienne en 1 heure ou moins.C'est une garantie de sérieuse, mais je me tiens derrière elle.Pourquoi ?Nous l'avons fait exprès étape par étap
Comment construire une mitrailleuse de niveau 3

Comment construire une mitrailleuse de niveau 3

Eh bien maintenant, j'ai cherché sur le site et découvert qu'il y a très peu, voire aucune, comment-à s sur Team Fortress 2, un des meilleurs a récemment publié des jeux faite par Valve.J'ai donc décidé de vous instruire sur la façon de faire quelque
Comment construire une fusée à eau simple

Comment construire une fusée à eau simple

Bienvenue à cette instructable !Que ce soit pour un projet d'école ou juste pour le fun, construire et lancer votre propre fusée à eau sont un difficile mais expérience impressionnante. Dans ce tutoriel nous allons vous montrer comment débuter et com
Comment construire une éolienne.

Comment construire une éolienne.

Aujourd'hui je vais vous montrer comment construire une éolienne en fonctionnement. Pour notre second projet de l'année, on nous a donné la tâche de produire une éolienne qui pourrait alimenter un petit moteur. Quel que soit l'équipe a produit le plu
Comment construire une cuisine extérieure

Comment construire une cuisine extérieure

Une cuisine extérieure est un excellent moyen de divertir votre famille et vos invités, mais aussi de jeter des parties incroyables sous ciel ouvert. La cuisine de plein air auront généralement tous le « fun » gadgets dont la plupart des gens n'ont p
Lessons Learned While Building une boîte inutile en utilisant un Arduino et un Instructable

Lessons Learned While Building une boîte inutile en utilisant un Arduino et un Instructable

Donc, j'ai trouvé une Instructable sur le site qui semblait assez bons. Tu vois, je voulais exploiter la puissance d'un Arduino pour exécuter une boîte inutile. J'allais construire et programmer à l'aide de l'Instructable j'ai trouvé sur le site. Non
Comment construire une maison de carte

Comment construire une maison de carte

dans ce instructable, je vais vous montrer comment construire une maison simple carte. Je vais aussi vous montrer quelques-unes de mes maisons de carte. S'il vous plaît ne pas critiquer cette instructable, certaines personnes là-bas ne sais vraiment
Comment construire une horloge qui projette l’heure sur le mur

Comment construire une horloge qui projette l’heure sur le mur

ce Instructable vous montre comment construire une horloge projecteur. Ce dispositif permet au temps de projet sur le mur. Basé sur un petit écran LCD réveil (pas trop petite, au lieu de cela, vous ne serez en mesure de projeter et de travailler dess
Comment construire une Jeep RC bricolage avec télécommande mini-missile launcher et intégré HD appareil photo

Comment construire une Jeep RC bricolage avec télécommande mini-missile launcher et intégré HD appareil photo

suivre ma chaîne youtube : http://www.youtube.com/user/educatetowin?feature=mheeSite Web : http://www.educatetube.comHôte : SipskiComment construire une télécommande RC Jeep avec mini-lance-missiles. Toujours porter des lunettes de sécurité et faire
Comment construire une zone de pique-nique chinois 3 niveaux

Comment construire une zone de pique-nique chinois 3 niveaux

Comment construire une zone de pique-nique chinois 3 niveauxEn même temps un cadeau pour un couple nouvellement marié, la boîte de pique-nique hiérarchisé est un élément plutôt inhabituel et pas un projet pour lequel vous trouverez facilement instruc
Comment construire une remorque vélo

Comment construire une remorque vélo

Dans ce Instructable je vais vous montrer comment construire une remorque de vélo pour se déplacer quoi que ce soit. J'utilise le mien pour prendre des trucs pour ma part. J'ai également fait un crochet pour attacher la remorque pour mon vélo électri
Comment construire une étagère sur mesure : recyclage en même temps

Comment construire une étagère sur mesure : recyclage en même temps

Bonjour et Bienvenue !Ce Instructable se composent d'un comment construire une étagère sur mesure ; et recyclage en même temps. C'est une idée de spin-off d'insperational de Innerbubba Instructable 60-Minute-bibliothèque. Donc, comme toujours, je doi