Paso 6: Trabajo algo!
Fueron necesarios algunos ajustes:
- Ahora que el sensor flex es aprovechado para la bisagra, es siempre un poco flexionado para que la impedancia es más baja. He cambiado la resistencia de 10 k.
- La asignación del sensor de ángulo del servo de entrada necesaria para ajustar un poco.
- También la vuelta alrededor de la animación de pacman en el proceso y hace más grande para las fotos.
Después de estos ajustes todo funciona bastante bien. Es un poco nervioso, pero que puede ser fijo... (pero no voy a).
Video:
Esto demuestra la parte de atrás un poco
Código con todas las piezas trabajan muy bien:
Nota: usando la 10K resistencia de pullup
Código de Arduino / / /
Se trata de un ejemplo incluido con la descarga del IDE de Arduino.
Control de una posición de servo con un potenciometro (resistencia variable)
por Michal Rinott
MPC - añadido salida serial ' n stuff
/*
Aquí está el cableado:
Cableado-
|---Arduino Gnd
Codificador |---analógico 0
|---5V de Arduino
| Amarillo---Digi 9 (PWM)
Servo superior | Rojo---5V
| Marrón---Gnd
| Amarillo---Digi 10 (PWM)
Servo de fondo | Rojo---5V
| Brown---
*/
#include; uso de la librería servo
Servo myservo; crear objeto servo para controlar un servo
Servo otherServo;
int potpin = 0; pin analógico utilizado para conectar el potenciómetro
int val = 0; variable para leer el valor del pin analógico
int valComp;
int valOld = 100;
void setup()
{
myservo.Attach(9); se fija el servo en el pin 9 al objeto servo
otherServo.attach(10);
Serial.Begin(9600);
}
void loop()
{
Val = analogRead(potpin); Lee el valor del potenciómetro (valor entre 0 y 1023)
Serial.Print(Val);
Serial.Print("---");
Val = mapa (val, 0,1023, 0,255);
if(Val > 175) {//wide abierto
Val = 185;
}
if(Val <80) {//closed
Val = 80;
}
if((ABS(Val-valOld)) > 7) {//filter a la inquietud
valComp = val;
Serial.println (val); //DEBUG
Serial.Print (val, BYTE); //USE
Delay(10);
Val = mapa (val, 255, 90, 80, 179); la escala a utilizar con el servo (valor entre 0 y 180)
valComp = mapa (valComp, 255, 0, 80, 90);
myservo.Write(Val); ajusta la posición del servo según el valor de escala
Delay(10);
otherServo.write(valComp);
Delay(10); espera a que el servo llegar
valOld = val;
}
}
/*
CÓDIGO DE PROCESAMIENTO
moouth de Pacman se abre/cierra con X de entrada de salida de arduino (flex sensor)
Import processing.serial.*;
Puerto serial;
Float x = 0;
flotador val = 0;
marco int = 1000;
flexibilización de flotador = 0,5;
flotador xOld;
void setup() {}
Size(Frame,frame);
Background(100);
Smooth();
println(serial.List());
String arduinoPort = Serial.list() [1];
puerto = serie nueva (este, 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); traducir la entrada de valores a values/println(x) útil;
println(x);
}
Background(100); borrar la última imagen
Rotate(PI);
translate(-Frame,-frame);
Float targetX = x;
x+=(targetX-x) * flexibilización;
Arc(Frame/2,Frame/2,Frame/2,Frame/2,(x)*PI,PI+(1-x)*PI); dibujar packman, usando radianes... p21
x = xOld;
}
*/