Étape 4: maintenant pour l’électronique !
- Télécharger un programme à l’Arduino pour conduire les steppers lorsque le capteur flex est activé. Mon code est ci-dessous !
- Relier les planches de driver de moteur pas à pas les moteurs pas à pas et Arduino. J’ai utilisé les broches 2, 3, 4 et 5 et broches 8, 9, 10 et 11 pour les deux planches de driver de moteur pas à pas, mais vous pouvez utiliser n’importe quel pins vous aimez et ajustez le code ci-dessous en conséquence.
- Le capteur coude a pattes très courtes, donc j’ai soudé des longs morceaux de fil de noyau solide sur les jambes de l’étendre plus loin le reste du projet. J’avais l’habitude d’enveloppe de rétrécissement (ruban électrique fonctionne aussi) pour protéger la connexion, comme le capteur coude va recevoir beaucoup d’utilisation, et je ne voulais pas les jambes de rompre.
- Créer un diviseur de tension avec le capteur de pliage et de la résistance : connecter le capteur coude à 5V sur un côté et la résistance de 17,3 kohm sur l’autre. Cette articulation doit avoir une troisième jambe qui va à la broche A0 sur l’arduino. Connectez ensuite la jambe restante de la résistance à la terre de l’Arduino.
- Enfin, tester tout ça ! Plier la sonde et voir si les moteurs tournent.
Voici le sketch Arduino, que j’ai utilisé pour contrôler les moteurs pas à pas avec le capteur flex, et c’est aussi une pièce jointe ci-dessus.
/**
* Code doit tourner un moteur pas à pas, quand il est activé par un capteur flex.
*
*
* Le flex est mesuré par un diviseur de tension avec une 17.3kohm résistance et un 2.2"
* capteur de flex. La résistance va à la masse de l’Arduino, le capteur flex va à 5V,
* et au milieu de la cloison va à A0.
*
* Un stepper est câblé par arduino broches 2, 3, 4 et 5 correspondant à
* le jury stepper goupilles 1N1, 1N2, 1N3 et 1N4. L’autre est à broches 8, 9, 10 et 11.
*/
#include
#define STEPS_PER_MOTOR_REVOLUTION 32
---(Marches à l’arbre de sortie de la réduction de la vitesse)---
#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64 //2048
Stepper stepper1 (STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11) ;
Stepper stepper2 (STEPS_PER_MOTOR_REVOLUTION, 2, 3, 4, 5) ;
int STEPS_PER_FLEX = 5 ; Les degrés de flex au cours de laquelle nous supposons que l’utilisateur demande un câlin.
int FLEX_THRESHOLD = 20 ;
int MAX_ROTATION = STEPS_PER_OUTPUT_REVOLUTION ;
int MIN_ROTATION = 0 ;
int currentRotation = 0 ;
La broche d’entrée.
input int = 0 ;
void setup() {}
stepper1.setSpeed(600) ;
stepper2.setSpeed(600) ;
}
void loop() {}
capteur int = analogRead(input) ;
Carte le montant de flex à un angle compris entre 0 et 90 degrés.
Le min et max ici proviennent de l’observation et doivent être mis à jour pour chaque hugbot.
flex int = carte (capteur, 470, 200, 0, 90) ;
int rotationAmt = 0 ;
Calculer si nous devrions tourner selon la quantité de flex.
Rotation seulement STEPS_PER_FLEX à la fois pour maintenir une apparence de réactif.
Si (flex > FLEX_THRESHOLD) {}
rotationAmt = min (MAX_ROTATION - currentRotation, STEPS_PER_FLEX) ;
} else {}
rotationAmt = -1 * min (currentRotation - MIN_ROTATION, STEPS_PER_FLEX) ;
}
Si (rotationAmt! = 0) {}
currentRotation += rotationAmt ; Bouger les bras dans des directions opposées.
stepper1.Step(rotationAmt) ;
stepper2.Step(-rotationAmt) ;
}
}