Werbung
so danke erstmal für die tolle hilfe![]()
habe nu ein programm wo die motoren rennen
ist auch alles wunderbar bis die endschalter kommen dann fährt er nur kurz rückwärts......#include "asuro.h"
int main(void)
{
Init ();
while (1)
{
if (PollSwitch()>0)
{
StatusLED (RED);
MotorDir(RWD,RWD);
MotorSpeed(80,160);
Sleep(3000);
FrontLED(OFF);
BackLED(ON,ON);
}
else
{
StatusLED (GREEN);
MotorDir(FWD,FWD);
MotorSpeed(100,100);
FrontLED(ON);
BackLED(OFF,OFF);
}
}
return(0);
}
gibt es einen befehl mit dem ich eine anweisung zeitlich begrenzen kann und dann wieder einen schritt zurückspringen kann? (dasmit dem sleep tut mal garnix, und ist das einzige was ich bei google gefunden habe)
also nachdem der endschalter betätigt wurde 3 sekunden rückwärts mit drehung und dann wieder vollgas?
und wieso blinken meine backleds? ist das nen wackelkontakt von meinen pollschaltern oder wo kommt dat wieder her?
Geändert von Nordwind (23.09.2011 um 00:51 Uhr)
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Hallo,
Um mit dem ASURO richtig umgehen zu können solltest du mal das C-Tutotial durcharbeiten, um zu wissen was man mit C und mit Mikrokontrollern überhaupt so machen kann.
http://www.mikrocontroller.net/artic...R-GCC-Tutorial
(nur meine Meinung)
gruß aus Hamburg
Sleep(3000);
Parameter für Sleep() ist 0 bis 255!
Sleep(255) wartet etwa 3,5 Millisekunden.
... abends früher ins Bettchen gehen.
![]()
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Also ich bin nu ein ganzes stück weitergekommen
dieses programm funktioniert so wie ich mir das vorgestellt habe.#include "asuro.h"
int main (void)
{
Init();
int z;
MotorSpeed(200,200);
while(1)
{
if (PollSwitch()< 1)
{MotorDir(FWD,FWD);
BackLED(ON,OFF);}
else
{MotorDir(FWD,RWD);
BackLED(OFF,ON);}
for(z=0 ; z < 230 ; z++){Sleep(216);}
MotorDir(FWD,FWD);
}
return(0);
}
die verzögerung habe ich hier irgendwo im forum gefunden und so wie ich das verstehe hängt das mit der z variablen zusammen das er jetzt eine bestimmte zeit rückwärts fährt aber warum er das jetzt genau macht habe ich noch nicht ganz nachvollziehen können.
so wie ich das verstehe setze ich mit dem z=0 z auf 0
dann schaue ich ist z kleiner als 230 und zähle dann mit z++ solange hoch bis er bei 230 angekommen ist?
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Lesezeichen