Hallo,
Ich habe ein Fahrendes Projekt, es ist ca 400kg schwer und ich versuche es gerade zum laufen zu bringen. Für die Lenkung habe ich am Anfang einfaches rechts/links Lenken programmiert, jetzt wollte ich es auf einen Servo umprogrammieren.
void Motors (String rechtsVorne,String linksVorne,String hinten,String lenken,String fahren, String stopp){
lenkenServo = map(lenken.toInt(), 0,50,0,60);
servo1.write(lenkenServo);
Serial.println(lenkenServo);
if (fahren.toInt() > 28){
analogWrite(PWMFahren, map(fahren.toInt(), 28, 50,50,255));
digitalWrite(RFahren, LOW);
digitalWrite(VFahren, HIGH);
} else if(fahren.toInt() < 22){
analogWrite(PWMFahren, map(fahren.toInt(), 22, 0,50,255));
digitalWrite(RFahren, HIGH);
digitalWrite(VFahren, LOW);
} else {
analogWrite(PWMFahren, 0);
digitalWrite(RFahren, LOW);
digitalWrite(VFahren, LOW);
}
der Servo wird angesteuert, solange ich die analogWrite Funktion für den Antrieb nicht benutze, sobald ich diese Funktion wieder nutzen will kann ich zwar die Geschwindigkeit regulieren aber der Servo wird nicht mehr angesteuert. Laut Fehlermeldung und bisherigen Recherchen hängt es damit zusammen das beide Funktionen sich den gleichen internen Timer teilen. Ich habe auch versucht sie im Timer zu trennen, ein delay zwischen den beiden zu machen und sie in verschiedene Voids oder Funktionen zu geben mit dem gleichen Ergebnis.
Ich denke Timer trennen (Der ESP32-WROOM-DA hat ja mehrere) ist die sinnvollste Lösung, allerdings weiß ich nicht wie.
Falls mir jemand mit meinem 2. Problem auch helfen will (bei dem ich ehrlich gesagt noch nicht viel Energie reingesteckt habe): Der Tisch soll sich selbst in die Waage bringen, hierfür nutze ich ein MPU6050 Gyro und 3 starke Linearmotoren. Die vorderen beiden Liegen auf der Y Achse des Gyro, der Hintere eine mittig auf der X Achse. Hier war die Idee erst die Y Achse grob aufzurichten, dann das gleiche mit der X Achse machen und danach mit PWM eine langsame Feinjustierung in der gleichen Reihenfolge zu machen.