PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Hyperterminal



tortelini66
19.11.2010, 18:01
Hey Leute,
Ich habe ein Programm geschrieben womit man den Asuro über Hyperterminal steuern kann.
Es ist recht einfach gestaltet und von einem Anfänger geschrieben.
Ich poste es hier, weil ich gerne wissen würde was ihr davon haltet.

#include "asuro.h"

// Hauptprogramm
int main(void)
{
int a;

Init();


while(1)
{
char message[] = "1";
SerRead(message,1,0);



if(message[0] == 'd')
{
SerWrite("d",1);
MotorDir(FWD,RWD);
MotorSpeed(200,200);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);

MotorSpeed(0,0);
}

if(message[0] == 'a')
{
SerWrite("a",1);
MotorDir(RWD,FWD);
MotorSpeed(200,200);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);

MotorSpeed(0,0);
}

if(message[0] == 'w')
{
SerWrite("w",1);
MotorDir(FWD,FWD);
MotorSpeed(200,200);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
MotorSpeed(0,0);
}

if(message[0] == 's')
{
SerWrite("s",1);
MotorDir(RWD,RWD);
MotorSpeed(200,200);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
Sleep(216);
MotorSpeed(0,0);
}




}
return 0;
}



MfG tortelini66




Edit: gesteuert wird über w,a,s,d!!!
Ich empfehle die taste nur kurz zu drücken und danach nochmal, also eben nict gedrückt halten.

ASUR0
20.11.2010, 12:43
ich würde Sleep in eine Schleife packen:



void Msleep (
int dauer)
{
int z;
for (z = 0; z < dauer; z++)
Sleep (36);
}


Das "Problem" mit dem kurz drücken lässt sich vermeiden, wenn du einen timeout, z.B. 50ms, einstellst.
Wenn Taste gedrückt, stelle Geschwindigkeit ein, sonst Stopp.
Dadurch gibt er nicht die ganze Zeit Gas und Brems wieder...

Problem
20.11.2010, 21:59
wow das ist cool
ich habe dein Programm erweitertmit automatischen kurven ...
voll geil

mfg