Stap 6: Een werkende ding!
Een paar aanpassingen nodig waren:
- Nu dat de sensor flex is onttrokken aan het scharnier, is het altijd een beetje gebogen zodat de impedantie is lager. Ik veranderde de weerstand in 10K.
- De toewijzing van de ingang tot de hoek van de servo-sensor nodig een beetje worden aangepast.
- Ik ook om de animatie van de pacman in verwerking gespiegeld en maakte het groter voor de foto's.
Na deze aanpassingen is het hele ding werkt vrij goed. Het is een beetje zenuwachtig, maar dat kan worden vastgesteld... (maar ik ga niet).
Video:
Dit toont aan de achterkant een beetje
Code met alle stukken netjes werken:
Opmerking: met behulp van 10K pullup weerstand
Arduino Code / / /
Dit is van een voorbeeld incl. met Arduino IDE downloaden.
Beheersen een servo-positie met behulp van een potentiometer (variabele weerstand)
door Michal Rinott
MPC - toegevoegd uitgang voor seriële 'n stuff
/*
Hier is de bedrading:
Bedrading-
|---Arduino Gnd
Encoder |---analoge 0
|---5V van de Arduino
| Geel---Digi 9 (PWM)
Top servo | Red---5V
| Bruin---Gnd
| Geel---Digi 10 (PWM)
Onderkant servo | Red---5V
| Brown---
*/
#include; servo-bibliotheek gebruiken
Servo myservo; maken van servo-object om te bepalen van een servo
Servo otherServo;
int potpin = 0; analoge pin gebruikt voor het aansluiten van de potentiometer
int val = 0; variabele te lezen van de waarde van de analoge pin
int valComp;
int valOld = 100;
VOID Setup
{
myservo.attach(9); de servo op pin 9 hecht aan de servo-object
otherServo.attach(10);
Serial.begin(9600);
}
void loop
{
Val = analogRead(potpin); leest de waarde van de potentiometer (waarde tussen 0 en 1023)
Serial.Print(val);
Serial.Print("---");
Val = kaart (val, 0,1023, 0,255);
if(Val > 175) {//wide open
Val = 185;
}
if(Val <80) {//closed
Val = 80;
}
if((ABS(Val-valOld)) > 7) {//filter uit de jitter
valComp = val;
Serial.println (val); //DEBUG
Serial.Print (val, BYTE); //USE
delay(10);
Val = kaart (val, 80, 90, 255 179); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
valComp = kaart (valComp, 255, 0, 80 en 90);
myservo.write(val); stelt u de positie van de servo volgens de geschaalde waarde
delay(10);
otherServo.write(valComp);
delay(10); wacht tot de servo om er te komen
valOld = val;
}
}
/*
VERWERKING CODE
Pacman moouth opent/sluit met X input van arduino uitvoer (flex-sensor)
importeren van processing.serial.*;
Seriële poort;
float x = 0;
zweven val = 0;
int frame = 1000;
float versoepeling = 0,5;
float xOld;
VOID Setup {}
size(frame,frame);
Background(100);
Smooth();
println(Serial.List());
ArduinoPort koord = Serial.list() [1];
poort = nieuwe Serial (, arduinoPort, 9600);
}
VOID draw() {}
Als (port.available() > 0) {}
Val = port.read();
Print(val);
Val = mouseX;
Print("---");
x = map(val,80,255,0.01,0.6); Translate waarden ingang te nuttig values/println(x);
println(x);
}
Background(100); laatste beeld wissen
Rotate(PI);
Translate(-frame,-frame);
zweven targetX = x;
x+=(targetX-x) * verlichten;
Arc(frame/2,frame/2,frame/2,frame/2,(x)*Pi,Pi+(1-x)*PI); tekenen van packman, met behulp van radialen... p21
x = xOld;
}
*/