Étape 4: Télécharger le Code Source de Cigar Cutter
Maintenant que nous sommes sûrs que nous avons notre maquette câblé correctement et que tous nos servos fonctionnent et qu’il ne nous téléchargerons les projets de code source. Ci-dessous, j’ai le code Source, illustré et commenté expliquant ses fonctions.
/*******************************************************
BUT : Faire de lumière-A-Bull cours projet
Créée par Karl Lewis
DATE : 11/2014
*******************************************************/
/****************************************************************************************************************************
Ici, j’utiliserai la fonction #define pour assigner une variable reconnaissable aux broches de l’Arduino. Cette fonctionnalité définir fera une reconnaissance plus facile de ce que fait chaque fonction. Sans cette toutes les fonctions seraient lu hors de par NIP qui est moins reconnaissable et exiger se référant à ce qui est connecté à la broche.
****************************************************************************************************************************/
#include //Includes la bibliothèque de servo incluse avec l’IDE Arduino
Ce sont mes Servos
Servo gauche, droite, transport ; à gauche sur le côté gauche de la fraise, situé sur la droite et le transport se déplace le cigare
#define switchPin 13 //this définir la fonction me permettra de placer des « switchPin » dans le code au lieu de 13
#define debounceTime 200
beaucoup de temps ;
commandes d’achat local int = 0 ; définition des entiers pour être utilisé avec les servos
rpos int = 55 ;
int DPVP = 0 ;
void setup() {}
Left.Attach(5) ; le servo de gauche sera commandé par une broche 5
Right.Attach(6) ; le servo de droit sera contrôlé par la broche 6
transport.Attach(3) ; le servo se déplaçant le cigare sera contrôlé par la broche 3
pinMode (switchPin, entrée) ; Ceci établira la switchPin comme une entrée
}
void loop() {}
Left.Write(LPOS) ; Cela rendra angle du servo gauche égale les commandes d’achat local entier
Right.Write(rpoS) ; de même cela équivaudra à entier Apr
transport.Write(CPOS) ; et ce sera le nombre entier cpos
Si (readSwitch(debounceTime) == true) {//If boucle démarre les fonctions périphériques lorsque l’entrée lit bas
Delay(1000) ;
Tout d’abord nous allons ouvrir les coupe-cigares en utilisant une fonction
J’ai été incapable d’aboutir à une méthode astucieuse pour déplacer les deux servos simultanément, donc j’ai déplacer à mi-chemin
avec chacun, puis l’autre moitié.
pour (CAL = 0; CAL < = 30 ; Cal += 1) {//half du mouvement de la gauche
Left.Write(LPOS) ;
Delay(15) ;
}
pour (RPO = 55 ; Apr > = 25 ; RPO-= 1) {//half du mouvement de la gauche
Right.Write(rpoS) ;
Delay(15) ;
}
Seconde moitié du mouvement
pour (CAL = 30 ; Cal < = 65 ; Cal += 1) {//secong moitié du mouvement de la gauche
Left.Write(LPOS) ;
Delay(15) ;
}
pour (RPO = 25 ; Apr > = 0; RPO-= 1) {//second moitié du mouvement de la droite
Right.Write(rpoS) ;
Delay(15) ;
}
Delay(2000) ;
Maintenant nous tansport le cigare en position pour couper
pour (cpos = 0; cpos < = 90; cpos += 1) {}
transport.Write(CPOS) ;
Delay(15) ;
}
Cela sera maintenant couper le cigare en utilisant les servos de gauche et de droite
pour (CAL = 65 ; CAL > = 30 ; Cal-= 1) {//First moitié de gauche
Left.Write(LPOS) ;
Delay(15) ;
}
pour (RPO = 0; rpos < = 25 ; rpos += 1) {//First la moitié de droite
Right.Write(rpoS) ;
Delay(15) ;
}
Seconde moitié du mouvement
pour (CAL = 30 ; CAL > = 0; CAL-= 1) {//Second moitié de gauche
Left.Write(LPOS) ;
Delay(15) ;
}
pour (RPO = 25 ; rpos < = 55 ; rpos += 1) {//Second la moitié de droite
Right.Write(rpoS) ;
Delay(15) ;
}
Delay(2000) ;
Maintenant le cigare reviendra à sa position d’origine
pour (cpos = 90; cpos > = 0; cpos-=1) {}
transport.Write(CPOS) ;
Delay(15) ;
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nouvel onglet fonctions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/****************************************************************************************************************************
Cette partie est utilisée pour lire mon sélecteur d’entrée (capacative touch) pour activer le circuit. J’ai trouvé que le touchpad fonctionne exactement comme un interrupteur mécanique d’entrée donc j’ai laissé ce processus debounce sur cette entrée.
****************************************************************************************************************************/
readSwitch octet (long debounce) {//The debounce variable est défini sur la page d’accueil
public static long lastTime ; Nouvelle variable appelée lastTime, il représente la dernière fois que l’aiguillage a été active
previousState octet statique ; Nouvelle variable appelée previousState représente l’état précédent de l’entrée
currentState octets = digitalRead(switchPin) ; Lire de nouveau currentState variable qui utilisera un appareil photo numérique d’entrée
Si (currentState == LOW & & previousState == HIGH & & millis ()-lastTime > debounce) {//If mon entrée pin juste passé de haute à basse et sa été plus long que le temps de rebondir ensuite
lastTime=millis() ; Cela définit lastTime pour la dernière fois et réinitialise le debounce minuterie previousState = faible ; PreviousState réglée à doux
Return(true) ; Retourne true ou 1 signifie une entrée s’est produit en fait. Cela retourne la valeur « true » permet d’activer la fi énoncé à la page précédente
}
Else {//If l’instruction « if » n’était pas satisfait il doit exécuter les tâches dans l’instruction « else »
NOTE: ' {elseif()} créera un cas secondaire déclaration de préforme, avec 'else', elle sera exécutée / / si le 'if' n’est pas.
previousState = élevé ; Affectez le previousState haute
Return(false) ; Retour « faux » qui indiquera que l’interrupteur n’était pas enfoncé
}
}