Guten Tag Zusammen,ich habe ein Problem mit 2 PWMshielden.Es sind die PCA 9685 Shielde die ich gerne für ein Projekt zusammenschalten möchte. Bisher habe ich nur als Gast mitgelesen und schon einiges davon umsetzen aber jetzt bin ich leider mit meinen Latein am Ende.Habe auch schon versucht es selber zu lösen aber irgendwie scheint es nicht zu klappen. Die Shielde sollen nämlich bis zu 22 Servos ansteuern die über eine Umschaltung in 2 x 11 Servos aufgeteilt werden.Davon werden aber nicht immer alle gebraucht.Ich weiß nicht wo und wie ich die Verdopplung der Shielde einbinden kann. Ich stelle hier mal den bisherigen Sketch rein mit dem ich probiert habe.Für Eure Hilfe wäre ich sehr dankbar.
Big greetings
Dampflutz
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);
int potpin = A0;
int val;
#define MIN_PULSE_WIDTH 650
#define MAX_PULSE_WIDTH 2250 //ueber diese Variable den Weg anpassen
#define DEFAULT_PULSE_WIDTH 1500
#define FREQUENCY 50
uint8_t servonum = 0;
void setup()
{
Serial.begin(9600);
Serial.println("16 channel Servo test!");
pwm.begin();
pwm.setPWMFreq(FREQUENCY);
}
int pulseWidth(int angle)
{
int pulse_wide, analog_value;
pulse_wide = map(val, 10, 130, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); // die 13 und die 130 sind fuer die Weganpassung
analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 3950); // ueber die 3.Variable den Weg anpassen
Serial.println(analog_value);
return analog_value;
}
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1030, 15, 130); // die 13 und die 130 sind fuer die Weganpassung
pwm.setPWM(0, 0, pulseWidth(val));
delay(50);
pwm.setPWM(1, 0, pulseWidth(val));
delay(50);
pwm.setPWM(2, 0, pulseWidth(val));
delay(50);
pwm.setPWM(3, 0, pulseWidth(val));
delay(50);
pwm.setPWM(4, 0, pulseWidth(val));
delay(50);
pwm.setPWM(5, 0, pulseWidth(val));
delay(50);
pwm.setPWM(6, 0, pulseWidth(val));
delay(50);
pwm.setPWM(7, 0, pulseWidth(val));
delay(50);
pwm.setPWM(8, 0, pulseWidth(val));
delay(50);
pwm.setPWM(9, 0, pulseWidth(val));
delay(50);
pwm.setPWM(10, 0, pulseWidth(val));
delay(50);
}
