2 Timer, für jeden Motor einer, müsste klappen.
Was ich nicht ganz erkennen kann ist, ob du die Potis an einen ADC angeschlossen hast oder nicht. Wenn Ja, dann kannst du ja den ADC-Wert für die Timer gleich mehr oder weniger übernehmen. 255 = Max, 0 = min oder so... Wie die Werte dann umgesetzt werden ist dann dein Ding.
Logik für deine Ansteuerung dann:
Code:
if (X_Value > 128) { //rechts lenken
power_Motor_links = (....)*(Y_Value);
power_Motor_rechts = (....)*(Y_Value-faktor);
}
if (X_Value <= 128) { //links lenken
power_Motor_links = (....)*(Y_Value-faktor);
power_Motor_rechts = (....)*(Y_Value);
}
Mal ein Ansatz... Denk dran, dass der Faktor nicht zu groß werden darf... am besten so wählne, dass bei Volllenkung genau in die Räder sich gleich schnell aber in unterschiedliche Richtungen drehn. (Faktor auch von X abhängig, nicht nur Y!!)
Du brauchst außerdem eine Motorroutine, die abhängig von den errechneten Werte die Motoren vorwärts oder rückwärts lenkt.
Code:
Motor_A(int power) { //power 0-255
if (power>128) { //vorwärts
dir = 1;
TimerA_value = (...)*((power-128)*k+d);
}
if (power<128) { //rückwärts
dir = 0;
TimerA_value = (...)*(-power*k+d);
}
//Hier die Timer Füttern!!
}
Ich weis, es ist C-Style und nicht basic, aber du müstest es lesen können
Lesezeichen