Ik heb de potmeters op een stroken prin gesoldeertde middelste baan door gekrabt
Ook de massa is van de arduino en de potmeters door verbonden
Heb je de massa van de servo en die van de arduino met elkaar verbonden?
#include <Servo.h>Servo myservo3;Servo myservo5;Servo myservo6;const int potpin1 = A1; // analoge invoerpinnen voor potmetersconst int potpin2 = A2;const int potpin3 = A3;const int servopin3 = 9; // digitale uitvoerpinnen voor servo'sconst int servopin5 = 10;const int servopin6 = 11;int val;// ---------------------------------void setup() { pinMode(potpin1,INPUT); // maak invoer voor potmeters pinMode(potpin2,INPUT); pinMode(potpin3,INPUT); pinMode(servopin3,OUTPUT); // maak uitvoer voor servo's pinMode(servopin5,OUTPUT); pinMode(servopin6,OUTPUT); myservo3.attach(servopin3); myservo5.attach(servopin5); myservo6.attach(servopin6);}// ---------------------------------void loop() { val = analogRead(potpin1); // val = 0..1023 val = map(val, 0, 1023, 0 , 180); // val = 0..180 myservo3.write(val); // draai servo naar hoek 'val' delay(25); val = analogRead(potpin2); val = map(val, 0, 1023, 0, 180); myservo5.write(val); delay(25); val = analogRead(potpin3); val = map(val, 0, 1023, 0, 180); myservo6.write(val); delay(25);// of in één regel per servo myservo3.write(map(analogRead(potpin1), 0,1023,0,180)); myservo5.write(map(analogRead(potpin2), 0,1023,0,180)); myservo6.write(map(analogRead(potpin3), 0,1023,0,180));// delay is niet nodig}
Dit is een belangrijke, want de massa van de servo moet de massa van de Arduino niet 'zien': dit betekent simpelweg dat je niet de massa van je Arduino-print moet gebruiken, maar deze buiten de controller om moet leiden. Op deze manier voorkom je dat stoorpulsen je controller in de war sturen. En die kans is met servo's erg groot.
delay?? Een delay in de loop? Dat kan gewoon never nooit niet....
ik probeer enkel de servo met de pot meter van 0 naar 90 graden te draaien
val = map( val, 0, 1023, 0, 90) ;
Gebruik const voor 'potpin', niet int.
Waarom 3 variabelen voor 'val'? 1 kan ook, het kan zelfs zonder, in 1 myservo.write(....) regel.Waarom die 'delay(25)'?Een deur draait maar 90°, waarom moet een servo dan 180° draaien?
#include "servoSweep.h"#include "Debounce.h"// alle code wat je tussen REPEAT_MS() en END_REPEAT zet wordt om de x ms uitgevoerd zonder programma te blokkeren.#define REPEAT_MS(x) { static uint32_t previousTime ; uint32_t currentTime = millis() ; \ if( currentTime - previousTime >= x ) \ { \ previousTime = currentTime ; #define END_REPEAT } \ }const int swPin1 = 3 ;const int servoPin1 = 5 ;const int servoPin2 = 6 ;Debounce sw1( swPin1 ) ;// servoPin,min,max,off,speed (grotere speed = langzamere beweging)ServoSweep myServo1( servoPin1, 0 , 90, 1, 30 ) ;ServoSweep myServo2( servoPin2, 0 , 90, 1, 30 ) ;void setup(){ myServo.begin() ;}void loop(){ REPEAT_MS( 20 ) ; sw1.debounceInputs() ; // doe dit elke 20ms, ont'dentert de schakelaar. END_REPEAT byte buttonState = sw1.readInput() ; // doe dit continu, lees knopje in if( buttonState == RISING ) { myServo1.setState( 1 ) ; // stuur naar 90 graden myServo2.setState( 1 ) ; } if( buttonState == FALLING ) { myServo1.setState( 0 ) ; // stuur naar 0 graden myServo2.setState( 0 ) ; } //N.B. je zou de deuren ook kunnen laten toggelen met een drukknopje myServo1.sweep() ; // stuurt de servo's aan met opgegeven snelheid en.. myServo2.sweep() ; // .. schakelt ze af als ze hun eindposities bereikt hebben.}
... de manier waarop je je vragen stelt, suggereert eigenlijk maar een ding en dat is: 'je doet het niet goed, punt'.
... ik merk net dat het voor een analogRead niet uitmaakt of je pin 0 of pin A0 invult.