probier mal
if((s1 & s2) == 0)...
Druckbare Version
probier mal
if((s1 & s2) == 0)...
Hi,
die Antwort zu deinem Problem hat Radbruch schon gegeben.
s= 0 und s2= 0 sind Zuweisungen. Ein Wert (0) wird einer Variablen zugewiesen, und deshalb immer wahr. Der if Zweig wird immer durchlaufen.Code:if((s1=0)&&(s2=0))
So ist es richtig. Hier wird ein Vergleich gemacht, keine Zuweisung. Die If Schleife wird nur durchlaufen, wenn beide Bedingungen erfüllt sind.
Code:if ((s1==0) && (s2==0))
gleiche reaktion, fährt von beginn weg rückwärts und reagiert auch nicht auf betätigung der tasten
Hi,
Bei den neueren Bausätzen sind die Motoranschlüsse vertauscht. Damit dreht er in die falsche Richtung. Laß ihn doch einfach mal nur vorwärts fahren, ohne Tasterabfrage. Klappt es dann? Wenn er dann auch rückwärts fährt, müssen die Motoranschlüsse (rot/schwarz) umgelötet werden.
hi, die vorherige antwort war auf damaltor bezogen, du warst nur etwas schneller mit schreiben ;-) allerdings stimmt das mit dem rückwärtsfahren auch bei deiner version...
und die motoren drehen richtig rum, alles andere klappt eigentlich auch...
ev könnte es sein, dass einer der pollswitches defekt ist und dauernd schaltet??
Das Problem mit den Tastern wird durch die Motoren verstärkt.
Es sollte helfen je 2 10µF Kondensatoren anzuschließen wie folgt:
ersten mit + beim Motor mit Motorgehäuse
zweiten mit - beim Motor mit Gehäuse
Anschließend Gehäuse erden ( zB - bei Batterie )
Das sollte die Schwankungen beim Pollswitch verringern.
Oder du machst mehr Pollswitch abfragen rein. Es reicht eine Variable vollkommen aus:
Code:s = PollSwitch();
s = s & PollSwitch();
s = s & PollSwitch();
s = s & PollSwitch();
if (s==0) {
...
hi, danke für den tipp
hat aber leider immer noch nicht geklappt :-(
Was hat nicht funktioniert?
Das mit den Kondensator oder Code?
Es könnte dir auch helfen, die Taster manuell neu zu kalibrieren.
Dieses Topic könnte hilfreich sein:
KLICK
Andere Alternative wäre es die Motoren von dem Stromkreis zu entkoppeln. Also Motoren an einen Schalter anschließen, den die CPU steuert, aber den Strom direkt von den Batterien beziehen. Dadurch gibts keine Stromschwankungen innerhalb des Systems, wodurch messungenauigkeiten bei den Tastern minimiert werden.
Da du im Verlauf dieses Threads schon bewiesen hast, dass du Schwierigkeiten mit dem Kopieren der Codeschnippsel hast, solltest du IMMER deinen aktuellen Code mit in deine Postings setzen.Zitat:
hat aber leider immer noch nicht geklappt
Gruß
mic
also, von den hardwarelösungen habe ich bisher noch keine ausprobiert, da ich lieber erst alle softwarelösungen versuchen möchte.... ausserdem hab ich grad keine dieser kondensatoren da :-)
aber vielen dank für die tipps, wenns weiterhin nicht klappt, werde ich halt dann in trotzdem in betracht ziehen müssen, am asuro rumzulöten
ok, mit dem folgenden code fährt der asuro von beginn weg rückwärts.
ist irgendwo im code ein grundlegender fehler??
Code:#include "asuro.h"
int main()
{
unsigned char s;
int i;
Init();
while(1)
{
s = PollSwitch();
s = s & PollSwitch();
s = s & PollSwitch();
s = s & PollSwitch();
if (s==0)
{
FrontLED(ON);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
else
{
MotorDir(RWD, RWD);
MotorSpeed(100,150);
StatusLED(RED);
FrontLED(OFF);
BackLED(ON,ON);
for (i=0; i < 250; i++) { Sleep(255); }
}
}
return 0;
}