asuro_freak2
03.04.2007, 20:16
Hi ich habe ein Programm geschrieben, dass wenn der ASURO mit einem Gegenstand kolidiert den ASURO ablenkt, allerdings funktioniert es nicht, der ASURO bleibt an Wänden hängen oder lenkt ab obwohl keine Kolision stattgefunden hat. Ich vermute das die Versorgungsspannung abfällt wenn der Motor gestartet wird. Daher habe ich mit einem TI-Voyage und eine Messinterface von Vernier an dem betreffenden Pin eine Messung durchgeführt. Das Ergebniss war eine relativ hohe Wechselspannung, die tatsächlich abviel wenn der Motor gestartet wurde. Leider funktioniert das speicher nicht und ich hatte das link-kabel auch nicht dabei(wir haben eine Robotik AG)
Hier der Quellcode
/*
d
################################################## #################
#-----------------------------------------------------------------#
# Sinnlos durch die Gegend #
#-----------------------------------------------------------------#
################################################## #################
Funktion : lässt den ASURO durch die gegend fahren wenn die taster eine kollision melden lenkt er ab
*/
#include "asuro.h"
/*################################################# ####################################
Funktionen*/
void sleep_s(int sek)//Erweiterung die sleep mit sekundenangabe ermöglicht
{
int n;
int t;
t=sek*250;
n=0;
while(n<t)
{
Sleep(76);
n++;
}
}
void schalter_akt(void) //ließt die schalter aus um den kondensator zu entladen
{
int zaehler ;
while (zaehler<5)
{PollSwitch();zaehler++;}
}
//################################################## ####################################
int main(void)
{
char taste;
Init();
MotorDir(FWD,FWD);
MotorSpeed(200,200);
/* ASURO soll vorwäts fahren
################################################## ######################################*/
while(1)
{ schalter_akt();
taste=PollSwitch();
switch(taste)
{
case(2)
:StatusLED(RED);
MotorSpeed(200,125);
sleep_s(1);
/*Wenn der der Taster neben dem Stromschalter gedrückt wird ablenken */
MotorSpeed(200,200);
StatusLED(GREEN);
break;
/*################################################# ######################################*/
case (4||8||10)
:
MotorDir(RWD,RWD);
StatusLED(YELLOW);
sleep_s(1);
MotorDir(FWD,BREAK);
StatusLED(GREEN);
sleep_s(1);
MotorDir(FWD,FWD);
//wenn die taster in der mitte bedinnt werden zurück und drehen
break;
/*################################################# ######################################*/
case (16)
:
MotorSpeed(125,200);
StatusLED(RED);
sleep_s(1);
StatusLED(GREEN);
/*Wenn der der Taster neben dem Stromschalter gedrückt wird ablenken */
MotorSpeed(200,20 0);
break;
default
:
BackLED(ON,ON);
break;
//################################################## #############################################
//ende switch
}
//ende fkt.block endlos schleife
}
//ende main
}
Hier der Quellcode
/*
d
################################################## #################
#-----------------------------------------------------------------#
# Sinnlos durch die Gegend #
#-----------------------------------------------------------------#
################################################## #################
Funktion : lässt den ASURO durch die gegend fahren wenn die taster eine kollision melden lenkt er ab
*/
#include "asuro.h"
/*################################################# ####################################
Funktionen*/
void sleep_s(int sek)//Erweiterung die sleep mit sekundenangabe ermöglicht
{
int n;
int t;
t=sek*250;
n=0;
while(n<t)
{
Sleep(76);
n++;
}
}
void schalter_akt(void) //ließt die schalter aus um den kondensator zu entladen
{
int zaehler ;
while (zaehler<5)
{PollSwitch();zaehler++;}
}
//################################################## ####################################
int main(void)
{
char taste;
Init();
MotorDir(FWD,FWD);
MotorSpeed(200,200);
/* ASURO soll vorwäts fahren
################################################## ######################################*/
while(1)
{ schalter_akt();
taste=PollSwitch();
switch(taste)
{
case(2)
:StatusLED(RED);
MotorSpeed(200,125);
sleep_s(1);
/*Wenn der der Taster neben dem Stromschalter gedrückt wird ablenken */
MotorSpeed(200,200);
StatusLED(GREEN);
break;
/*################################################# ######################################*/
case (4||8||10)
:
MotorDir(RWD,RWD);
StatusLED(YELLOW);
sleep_s(1);
MotorDir(FWD,BREAK);
StatusLED(GREEN);
sleep_s(1);
MotorDir(FWD,FWD);
//wenn die taster in der mitte bedinnt werden zurück und drehen
break;
/*################################################# ######################################*/
case (16)
:
MotorSpeed(125,200);
StatusLED(RED);
sleep_s(1);
StatusLED(GREEN);
/*Wenn der der Taster neben dem Stromschalter gedrückt wird ablenken */
MotorSpeed(200,20 0);
break;
default
:
BackLED(ON,ON);
break;
//################################################## #############################################
//ende switch
}
//ende fkt.block endlos schleife
}
//ende main
}