-
-
Neuer Benutzer
Öfters hier
Ich bekomm es einfach nicht gebacken: PollSwitch funktion
Ich probiere jetzt hier schon seit knapp 1.5 stunden rum und bekomm es einfach nicht gebacken den asuro zu auch nur einer reaktion zu bewegen wenn ich einen taster an der front drücke...
Hier mein Code
#include <asuro.h>
int main(void) {
Init();
PollSwitch();
while(PollSwitch()>0)
{
MotorDir(FWD,FWD);
MotorSpeed(120,10);
}
while(1);
return 0;
}
Ps.:
Der Switch test funktioniert supper ....
-
Erfahrener Benutzer
Robotik Einstein
Hallo,
in deinem Programm wird der obere Teil solange ausgeführt, wie eine Taste gedrückt wird,
in dem Fall das keine mehr gedrückt wird, springt das Programm in die untere Endlosscheife, und kommt da auch nimer raus !
Also wenn beim einschalten des Asuro schon kein Taster betätigt wurde, macht der Asuro einfach garnix merkbares !
-
Neuer Benutzer
Öfters hier
Vielleicht kann jemand von euch mir ja nochmal weilterhelfen...
Ich versuche gerade ein Programm zu schreiben, welches Feststellen kann ob sich ein rad nicht mehr dreht (asuro hängt am teppich fest o.ä.)
Ich habe bis jetzt schon folgendes Fertig:
#include "asuro.h"
int main(void)
{
unsigned int Rmin = 1024, Rmax = 0, Lmin = 1024, Lmax = 0, Rmitte = 512, Lmitte = 512, data[2];
unsigned int wegr=0, wegl=0;
unsigned char flagl=FALSE, flagr=FALSE;
Init();
MotorDir(FWD,FWD);
MotorSpeed(100,125);
while(1) {
OdometrieData(data); // 0. links, 1. rechts
// max links
if (data[0] > Lmax)
Lmax += (data[0] - Lmax) / 2;
// min links
if (data[0] < Lmin)
Lmin -= (Lmin - data[0]) / 2;
// max rechts
if (data[1] > Rmax)
Rmax += (data[1] - Rmax) / 2;
// min rechts
if (data[1] < Rmin)
Rmin -= (Rmin - data[1]) / 2;
Rmitte=(Rmax+Rmin)/2;
Lmitte=(Lmin+Lmax)/2;
if ((data[0] < Lmitte) && (flagl == TRUE)) {
flagl = FALSE;
wegl++;
}
if ((data[0] > Lmitte) && (flagl == FALSE)) {
flagl = TRUE;
wegl++;
}
if ((data[1] < Rmitte) && (flagr == TRUE)) {
flagr = FALSE;
wegr++;
}
if ((data[1] > Rmitte) && (flagr == FALSE)) {
flagr = TRUE;
wegr++;
}
unsigned int test[2];
wegr = test[1];
if (wegr == wegaltr)
{
StatusLED(RED);
serwrite(wegr,20);
serwrite(wegaltr,20);
}
}
return 0;
}
Mein Problem ist jetzt, wie schaffe ich es den Alten wert zu speichern also was z.b das rechte rad von der z.b. 2. messung hatte.
Wäre nett wenn mir jemand helfen könnte
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen