2 servo motoren bewegen uit zichzelf
8 berichten
• Pagina 1 van 1
- stellaferox
- Berichten: 3
- Geregistreerd: 16 Feb 2013, 20:22
2 servo motoren bewegen uit zichzelf
Hallo,
Nieuw hier op het forum met een vraag. Ik heb volgende code op een Arduino Uno lopoen met een joystick en 2 servomotoren (pan & tilt). Het besturen gaat goed maar de servo's bewegen vaak na en gaan soms uit zichzelf naar een kant zonder dat ik stuur. De servo's zijn 3.2 kg/cm plastic en de joystick is een Keyes.
Iemand idee waarom dit is? het delay verlengen helpt niet.
Alvast dank,
Marc
#include <Servo.h>
const int servo1 = 4; // first servo
const int servo2 = 10; // second servo
const int joyH = 3; // L/R
const int joyV = 4; // U/D
int servoVal,servoValue1,servoValue2; // variable to read the value from the analog pin
Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
void setup() {
// Servo
myservo1.attach(servo1); // attaches the servo
myservo2.attach(servo2); // attaches the servo
// Inizialize Serial
Serial.begin(9600);
servoValue1 = 90;
servoValue2 = 90;
}
void loop(){
// Display Joystick values using the serial monitor
//outputJoystick();
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyV);
servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180)
if (servoVal > 90)
{
servoValue1 += 1;
}
else if (servoVal < 90)
{
servoValue1 -= 1;
}
myservo2.write(servoValue1); // sets the servo position according to the scaled value
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyH);
servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 70 and 180)
if (servoVal > 90)
{
servoValue2 += 1;
}
else if (servoVal < 90)
{
servoValue2 -= 1;
}
myservo1.write(servoValue2); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Nieuw hier op het forum met een vraag. Ik heb volgende code op een Arduino Uno lopoen met een joystick en 2 servomotoren (pan & tilt). Het besturen gaat goed maar de servo's bewegen vaak na en gaan soms uit zichzelf naar een kant zonder dat ik stuur. De servo's zijn 3.2 kg/cm plastic en de joystick is een Keyes.
Iemand idee waarom dit is? het delay verlengen helpt niet.
Alvast dank,
Marc
#include <Servo.h>
const int servo1 = 4; // first servo
const int servo2 = 10; // second servo
const int joyH = 3; // L/R
const int joyV = 4; // U/D
int servoVal,servoValue1,servoValue2; // variable to read the value from the analog pin
Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
void setup() {
// Servo
myservo1.attach(servo1); // attaches the servo
myservo2.attach(servo2); // attaches the servo
// Inizialize Serial
Serial.begin(9600);
servoValue1 = 90;
servoValue2 = 90;
}
void loop(){
// Display Joystick values using the serial monitor
//outputJoystick();
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyV);
servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180)
if (servoVal > 90)
{
servoValue1 += 1;
}
else if (servoVal < 90)
{
servoValue1 -= 1;
}
myservo2.write(servoValue1); // sets the servo position according to the scaled value
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyH);
servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 70 and 180)
if (servoVal > 90)
{
servoValue2 += 1;
}
else if (servoVal < 90)
{
servoValue2 -= 1;
}
myservo1.write(servoValue2); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Advertisement
Re: 2 servo motoren bewegen uit zichzelf
ik zou ook de variabele servoVal opdelen in servoVal1 en servoVal2. Echt compleet twee zaken van maken. Nu loopt het via deze variabele toch via één gelijk pad. Kan fout gaan...
Re: 2 servo motoren bewegen uit zichzelf
Wat doe je als de gelezen servoVal ==90? Dat wordt in de if/else niet afgevangen.
If you think education is expensive, try ignorance! (Derek Bok)
- stellaferox
- Berichten: 3
- Geregistreerd: 16 Feb 2013, 20:22
Re: 2 servo motoren bewegen uit zichzelf
Als servoVal == 90 dan verandert servoValue niet en da's ook de bedoeling. Het vervangen van servoVal dor servoVal1 en servoVal2 voor elk van de servo's heeft geen effect. Zou dit storing kunnen zijn door de PWM pinnen? En zo ja, hoe ondervang je dat? Of zou een goed gemikte vertraging softwarematig dan wel een weerstand ergens kunnen helpen. Heb werkelijk geen idee hierover!
Re: 2 servo motoren bewegen uit zichzelf
probeer dit:
te vervangen door:
en dan ook voor ...servo1 natuurlijk.
en waarschijnlijk de attach uit de setup halen.
Weet niet hoor. Misschien helpt het.
- Code: Alles selecteren
myservo2.write(servoValue1);
te vervangen door:
- Code: Alles selecteren
myservo2.attach(servo1);
myservo2.write(servoValue1);
myservo2.detach(servo1);
en dan ook voor ...servo1 natuurlijk.
en waarschijnlijk de attach uit de setup halen.
Weet niet hoor. Misschien helpt het.
- stellaferox
- Berichten: 3
- Geregistreerd: 16 Feb 2013, 20:22
Re: 2 servo motoren bewegen uit zichzelf
@pjh
Dan doet de servo helemaal niets meer. Het detach commando is myservo2.detach() overigens. Ik lees wel e.e.a. over storingen op de signaaldraad van de servo's maar heb geen idee hoe ik dit weg moet halen
Dan doet de servo helemaal niets meer. Het detach commando is myservo2.detach() overigens. Ik lees wel e.e.a. over storingen op de signaaldraad van de servo's maar heb geen idee hoe ik dit weg moet halen
Re: 2 servo motoren bewegen uit zichzelf
Je zou, naast het schrijven van commando's naar de servo's, ook een melding naar de IDE kunnen schrijven met serial.write. Dan kan je zien of het de software is die 'op hol slaat' (je IDE loopt ook vol met meldingen) of dat het de servo's zelf zijn die aan de haal gaan (servo's bewegen, maar geen meldingen in je IDE).
If you think education is expensive, try ignorance! (Derek Bok)
- astrofrostbyte
- Berichten: 229
- Geregistreerd: 20 Jan 2013, 12:01
Re: 2 servo motoren bewegen uit zichzelf
Je gaat ervanuit dat in rust de twee joystick assen '90' terug geven na schaling.
Als je servo's spontaan gaan lopen zou je denken dat deze ruststand niet meer aanwezig is.
Je hebt mischien wel wat storing op de analoge ingang van de joystickjes.
servoVal even renamen naar JoyStickPos ofzo.
servoValue2 , servoValue1 kunnen under-/overflowen ze worden ge-increment/decrement maar nergens gelimiet voordat ze de servo ingaan.
ik weet niet wat myservo1.write( ) mag/wil hebben als input.
Code ff posten met code /code tags leest wat makkelijker voor ons.
Zoals karel aangeeft, met serial meekijken of de waarden zich wel gedragen als je verwacht.
Als je servo's spontaan gaan lopen zou je denken dat deze ruststand niet meer aanwezig is.
Je hebt mischien wel wat storing op de analoge ingang van de joystickjes.
servoVal even renamen naar JoyStickPos ofzo.
servoValue2 , servoValue1 kunnen under-/overflowen ze worden ge-increment/decrement maar nergens gelimiet voordat ze de servo ingaan.
ik weet niet wat myservo1.write( ) mag/wil hebben als input.
Code ff posten met code /code tags leest wat makkelijker voor ons.
Zoals karel aangeeft, met serial meekijken of de waarden zich wel gedragen als je verwacht.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate
8 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 20 gasten