Mehrere Versuche kein Servo bewegt sich Hilfe!
//Bibliotheken
#include < Wire . h > // https://www.arduino.cc/en/reference/wire
#include < Adafruit_PWMServoDriver . h > // https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library
//Konstanten
#define nbPCAServo 16
//Parameter
int MIN_IMP [ nbPCAServo ] = { 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 , 500 } ; int MAX_IMP [ nbPCAServo ] = { 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 , 2500 } ; int MIN_ANG [ nbPCAServo ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ; int MAX_ANG [ nbPCAServo ] = { 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 } ;
//Objekte
Adafruit_PWMServoDriver pca = Adafruit_PWMServoDriver ( 0x40 ) ;
void setup ( ) {
//Init Serial USB
Serial . begin ( 9600 ) ;
Seriell . println ( F ( „System initialisieren“ ) ) ;
pca . beginnen ( ) ;
pca . setPWMFreq ( 60 ) ; // Analoge Servos laufen mit ~60 Hz-Updates
}
void loop ( ) {
pcaScenario ( ) ;
}
void pcaScenario ( ) { /* function pcaScenario */
////Szenario zum Testen von Servomotoren, die vom PCA9685 I2C-Modul gesteuert werden
für ( int i = 0 ; i < nbPCAServo ; i ++ ) {
Serial . print ( "Servo" ) ;
Seriell . println ( i ) ;
//int middleVal=((MAX_IMP[i]+MIN_IMP[i])/2)/20000*4096; // Konvertierung von µs in pwmval
//pca.setPWM(i,0,middleVal);
for ( int pos = ( MAX_IMP [ i ] + MIN_IMP [ i ] ) / 2 ; pos < MAX_IMP [ i ] ; pos += 10 ) {
pca . writeMicroseconds ( i , pos ) ; Verzögerung ( 10 ) ;
}
for ( int pos = MAX_IMP [ i ] ; pos > MIN_IMP [ i ] ; pos -= 10 ) {
pca . writeMicroseconds ( i , pos ) ; Verzögerung ( 10 ) ;
}
for ( int pos = MIN_IMP [ i ] ; pos < ( MAX_IMP [ i ] + MIN_IMP [ i ] ) / 2 ; pos += 10 ) {
pca . writeMicroseconds ( i , pos ) ; Verzögerung ( 10 ) ;
}
pca . setPin ( i , 0 , true ) ; // Pin i deaktivieren
}
}
int jointToImp ( double x , int i ) { /* function jointToImp */
////Konvertieren Sie den Gelenkwinkel in einen pwm-Befehlswert
int imp = ( x - MIN_ANG [ i ] ) * ( MAX_IMP [ i ] - MIN_IMP [ i ] ) / ( MAX_ANG [ i ] - MIN_ANG [ i ] ) + MIN_IMP [ i ] ;
imp = max ( imp , MIN_IMP [ i ] ) ;
imp = min ( imp , MAX_IMP [ i ] ) ;
return imp ;
}`
Use code tags to format code for the forum`
strong text
*Use code tags to format code for the forum