Hallo liebes Arduino-Forum,
ich würde gern mit einem Poti, angeschlossen an Pin 6 des CD4051B und an den analogen Eingang A0 des Arduinos und an die digitalen Pins 2-4 zum Auswählen des durchzuschaltenden Eingangs, einen Servo, angeschlossen an das Servo-Board Anschluss 0, ansteuern. Den Potiwert kann ich mir über den Multiplexer anzeigen lassen. Der Servo angeschlossen an das Board funktioniert auch. Er soll sich im Bereich von 40° bis 60° drehen. Allerdings bewegt sich der Servo eher selten und zufällig. Vielleicht findet jemand den Fehler im Code. Ich habe ihn von folgender Seite adaptiert: Arduino code and Video for PCA9685 16 channel 12 bits servo controller V1 - Robojax
Hier mein Code:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 125 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX 575 // this is the 'maximum' pulse length count (out of 4096)
int potiWert = 0;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
Serial.println("Potiwert wird ausgegeben!");
pwm.begin();
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
}
void loop ()
{
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
potiWert = analogRead(A0);
Serial.println(potiWert);
pwm.setPWM(0, 0, map(potiWert, 40, 60, SERVOMIN,SERVOMAX));
}
Vielen Dank für Eure Hilfe!