Étape 6: Une travail chose !
Il fallait un peu de bricolage :
- Maintenant que le capteur flex est tapé à la charnière, c’est toujours un peu fléchie donc l’impédance est plus faible. J’ai changé la résistance de 10K.
- Le mappage de capteur d’entrée à l’angle de servo devait être ajusté un peu.
- J’ai également renversé autour de l’animation de pacman dans le traitement et rendu plus grand pour les photos.
Après ces ajustements, le tout fonctionne très bien. C’est un peu nerveux, mais qui peut être fixé... (mais je ne veux pas).
Vidéo :
Cela montre l’arrière un peu
Code avec toutes les pièces fonctionne bien :
Remarque : en utilisant la résistance de 10K pullup
Arduino Code / / /
Il s’agit d’un exemple inluded avec téléchargement IDE Arduino.
Contrôler la position du servo à l’aide d’un potentiomètre (résistance variable)
par Michal Rinott
MPC - ajouté sortie série ' n stuff
/*
Voici le câblage :
Câblage-
|---Arduino Gnd
Encodeur |---analogique 0
|---5V de l’Arduino
| Jaune---Digi 9 (PWM)
Servo haut de la page | Rouge---5V
| Brun---Gnd
| Jaune---Digi 10 (PWM)
Servo de fond | Rouge---5V
| Brown---
*/
#include ; utiliser la bibliothèque de servo
Servo myservo ; Créez l’objet servo pour contrôler un servo
Servo otherServo ;
int potpin = 0 ; broche analogique utilisé pour connecter le potentiomètre
int val = 0 ; variable pour lire la valeur de l’axe de l’analogique
valComp int ;
int valOld = 100 ;
void setup()
{
myservo.Attach(9) ; attache le servo sur la broche 9 à l’objet de servo
otherServo.attach(10) ;
Serial.Begin(9600) ;
}
void loop()
{
Val = analogRead(potpin) ; lit la valeur du potentiomètre (valeur comprise entre 0 et 1023)
Serial.Print(Val) ;
Serial.Print("---") ;
Val = carte (val, 0,1023, 0,255) ;
if(Val > 175) {//wide ouvert
Val = 185 ;
}
if(Val <80) {//closed
Val = 80 ;
}
if((ABS(Val-valOld)) > 7) {//filter sur la gigue
valComp = val ;
Serial.println (val); //DEBUG
Serial.Print (val, BYTE); //USE
Delay(10) ;
Val = carte (val, 80, 90, 255, 179) ; redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
valComp = carte (valComp, 255, 0, 80, 90) ;
myservo.Write(Val) ; définit la position du servo selon la valeur à l’échelle
Delay(10) ;
otherServo.write(valComp) ;
Delay(10) ; attend que le servo pour y arriver
valOld = val ;
}
}
/*
CODE DE TRAITEMENT
Pacman moouth ouverture/fermeture avec X d’entrée de sortie arduino (capteur flex)
Import processing.serial.* ;
Port série ;
float x = 0 ;
float val = 0 ;
cadre int = 1000 ;
flotteur d’accélération = 0,5 ;
flotteur xOld ;
void setup() {}
Size(Frame,Frame) ;
Background(100) ;
Smooth() ;
println(Serial.List()) ;
String arduinoPort = Serial.list() [1] ;
port = nouvelle série (ce, arduinoPort, 9600) ;
}
{} void draw()
Si (port.available() > 0) {}
Val = port.read() ;
Print(Val) ;
Val = mouseX ;
Print("---") ;
x = map(val,80,255,0.01,0.6) ; définition d’entrée de valeurs pour values/println(x) utile ;
println(x) ;
}
Background(100) ; dernière image claire
Rotate(pi) ;
translate(-Frame,-Frame) ;
flotteur targetX = x ;
x+=(targetX-x) * d’accélération ;
arc(frame/2,frame/2,frame/2,frame/2,(x)*pi,pi+(1-x)*pi) ; dessiner packman, à l’aide de radians... p21
x = xOld ;
}
*/