PUPPET CONTROLLER (6 / 7 steg)
Steg 6: Arbetande sak!
Några tweaks behövdes:
- Nu när flex sensorn tappas att gångjärnet, är det alltid lite böjd så impedansen är lägre. Jag ändrade motståndet till 10K.
- Kartläggningen från ingången till servo vinkel-sensor behövs justeras lite.
- Jag bläddrade runt pacman animeringen i bearbetning och gjorde det större för bilder.
Efter dessa justeringar fungerar hela ganska bra. Det är lite skakis, men som kan vara fast... (men jag tänker inte).
Video:
Detta visar baksidan lite
Kod med alla bitar arbetar fint:
Obs: med 10K pullup motstånd
Arduino kod / / /
Detta är från ett exempel inluded Arduino IDE att ladda ner.
Kontrollera en servo position med en potentiometer (variabelt motstånd)
av Michal Rinott
MPC - lagt till serial output 'n stuff
/*
Här är ledningarna:
Kablage-
|---Arduino Gnd
Encoder |---Analog 0
|---Arduino 5V
| Gul---Digi 9 (PWM)
Översta servo | Röd---5V
| Brun---Gnd
| Gul---Digi 10 (PWM)
Botten servo | Röd---5V
| Brown---
*/
#include; använda servo bibliotek
Servo myservo; skapa objekt för att styra en servo servo
Servo otherServo;
int potpin = 0; analoga pin används för att ansluta potentiometern
int val = 0; variabel att läsa värdet från det analoga stiftet
int valComp;
int valOld = 100;
void setup()
{
myservo.attach(9); tillmäter objektet servo servo på pin 9
otherServo.attach(10);
Serial.BEGIN(9600);
}
void loop()
{
Val = analogRead(potpin); läser värdet i potentiometern (värde mellan 0 och 1023)
Serial.Print(val);
Serial.Print("---");
Val = karta (val, 0,1023, 0,255);
IF(Val > 175) {//wide öppen
Val = 185;
}
IF(val <80) {//closed
Val = 80.
}
IF((ABS(val-valOld)) > 7) {//filter ut jitter
valComp = val;
Serial.println (val); //DEBUG
Serial.Print (val, BYTE); //USE
Delay(10);
Val = karta (val, 80, 90, 255, 179); skala den att använda den med servo (värde mellan 0 och 180)
valComp = karta (valComp, 255, 0, 80, 90);
myservo.write(val); anger servo skalad värde
Delay(10);
otherServo.write(valComp);
Delay(10); väntar på servo att komma dit
valOld = val;
}
}
/*
BEARBETNING KOD
Pacman moouth öppnar/stänger med X ingång från arduino utdata (flex sensor)
import processing.serial.*;
Seriell port;
float x = 0;
flyta val = 0;
int ram = 1000;
float lätta = 0,5;
float xOld;
void setup() {
size(Frame,Frame);
Background(100);
Smooth();
println(Serial.list());
String arduinoPort = Serial.list() [1].
Port = ny följetong (denna, arduinoPort, 9600);
}
void draw() {
om (port.available() > 0) {
Val = port.read();
Print(val);
Val = mouseX;
Print("---");
x = map(val,80,255,0.01,0.6); översätta värdena ingång till användbara values/println(x);
println(x);
}
Background(100); klart sista bilden
rotate(PI);
translate(-Frame,-Frame);
flyta targetX = x;
x+=(targetX-x) * lätta;
Arc(Frame/2,Frame/2,Frame/2,Frame/2,(x)*pi,Pi+(1-x)*PI); Rita packman, använder radianer... p21
x = xOld;
}
*/