#include <Servo.h>Servo myservo; // create servo object to control a servo// twelve servo objects can be created on most boardsint pos = 0; // variable to store the servo positionint led = 9; // the PWM pin the LED is attached tovoid setup() { myservo.attach(8); // attaches the servo on pin 8 to the servo object}void loop() { // fade in from min to max in increments of 5 points: for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5) { // sets the value (range from 0 to 255): analogWrite(led, fadeValue); // pause delay(0); } for (pos = 180; pos >= 160; pos -= 0.1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(500); // waits 15 ms for the servo to reach the position } // fade out from max to min in increments of 5 points: for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) { // sets the value (range from 0 to 255): analogWrite(led, fadeValue); // pause delay(0); } for (pos = 160; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(50); // waits 15 ms for the servo to reach the position }}
// pause delay(0);
for (pos = 180; pos >= 160; pos -= 0.1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(500); // waits 15 ms for the servo to reach the position }
int pos = 0; // variable to store the servo position
void Servo::write(int value)
In je fade-in en fade-out heb je een regel:Code: [Selecteer] // pause delay(0);Dat betekent: 0 miliseconden wachten.Verander dus de 0 naar iets positievers
Wat betreft de schokkerige stapjes van de servo......waarbij je bovenaan de variabele pos als integer, dus geheel getal, hebt gedefinieerd:Dat betekent dat 180 minus 0.1 nog steeds 180 blijft
#include <Servo.h>Servo servo ;int pos = 0 ;int dutyCycle = 0 ;const int servoPin = 8 ;const int ledPin = 9 ;const int fadeDelay = 10 ;const int servoDelay = 15 ;const int servoLowerDegree = 160 ;const int servoUpperDegree = 180 ;int servoLowerUs ;int servoUpperUs ;enum states{ fadeIn, moveServoIn, fadeOut, moveServoOut} ;uint8_t state = fadeIn ;void setup(){ servo.attach(servoPin); // attaches the servo on pin 8 to the servo object pinMode( ledPin, OUTPUT ) ; servoLowerUs = map( servoLowerDegree, 0, 180, 1000, 2000 ) ; // Dit schaalt de gewenste graden om naar de corresponderende tijd in uS servoUpperUs = map( servoUpperDegree, 0, 180, 1000, 2000 ) ;}void loop(){ int i ; switch( state ) { case fadeIn: for( i = 0 ; i < 255 ; i ++ ) // 1 stapje per keer is beter, kleinere stapgrootte { analogWrite(ledPin, i); delay(fadeDelay) ; // delayMicroseconds() ; // dit kan ook, dit is een delay in uS zoals de naam al zegt.. } state = moveServoIn ; break ; case moveServoIn: for( i = servoLowerUs ; i < servoUpperUs ; i ++ ) { servo.writeMicroseconds(i) ; delay(servoDelay) ; // delayMicroseconds(servoDelay) ; } state = fadeOut ; break ; case fadeOut: for( i = 255 ; i > 0 ; i -- ) { analogWrite(ledPin, i); delay(fadeDelay) ; } state = moveServoOut ; break ; case moveServoOut: for( i = servoUpperUs ; i > servoLowerUs ; i -- ) { servo.writeMicroseconds(i) ; delay(servoDelay) ; // delayMicroseconds(servoDelay) ; } state = fadeIn ; break ; }}
void functie(){ byte b = 1 ; // ik besta alleen tussen deze { } dit is mijn scope.}
if( 2 > 1 ) doeIets() ;
if( 2 > 1 ){ doeIets() ; doetIetsAnders() ;}
for( i = 0 ; i < 255 ; i ++ ) // 1 stapje per keer is beter, kleinere stapgrootte { analogWrite(ledPin, i); delay(fadeDelay) ; // delayMicroseconds() ; // dit kan ook, dit is een delay in uS zoals de naam al zegt.. }
On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins