-
        

+ Antworten
Ergebnis 1 bis 6 von 6

Thema: erstes programm funktioniert nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.05.2007
    Beiträge
    9

    erstes programm funktioniert nicht

    Anzeige

    Hi,
    heute hab ich zum ersten mal meinen asuro "programmiert". da meine programmierkenntnisse noch ziemlich beschränkt sind bin ich auch schnell an meine grenzen gestoßen .

    das programm sollte folgendes machen:
    asuro fährt geradeaus bis er irgendwo dagegenfährt,
    dann fährt er ein stück gerade zurück und dreht sich um, danach fährt er wieder normal weiter.

    aber bei mir fährt er immer geradeaus egal was passiert

    kann mir da bitte jemand helfen?

    Code:
    #include "asuro.h"
    #define TASTER PollSwitch()
    
    
    void taster (void)
    {
     TASTER;
     TASTER;
     TASTER;
     TASTER;
     TASTER;
     TASTER;
    
      if(TASTER>0&&TASTER<8)
       {
        MotorDir(RWD,RWD);
    	MotorSpeed(170,170);
    	Sleep(255);
    	MotorDir(RWD,BREAK);
    	MotorSpeed(140,0);
    	Sleep(255);
       }
      else if(TASTER>7)
       {
        MotorDir(RWD,RWD);
    	MotorSpeed(170,170);
    	Sleep(255);
    	MotorDir(BREAK,RWD);
    	MotorSpeed(0,140);
    	Sleep(255);
       }
    }
    int main(void)
    {
     Init();
     MotorDir(FWD,FWD);
     MotorSpeed(140,140);
    while(1);
    }

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    5.768
    Blog-Einträge
    8
    Hallo Dakrat

    Du must deine Funktion taster() im Hauptprogramm aufrufen:

    Code:
    int main(void) 
    { 
     Init(); 
     MotorDir(FWD,FWD); 
     MotorSpeed(140,140); 
     while(1) taster();
     return(0); 
    }
    In der while-Schleife damit die Funktion endlos aufgerufen wird. (return(0) darf er nie erreichen weil nicht definiert ist, wohin zurück er dann springen soll. Es gehört aber rein, weil main() eine Funktion mit Rückgabewert (int) ist und die Compliler das normalerweise erwarten.)

    Dies

    if(TASTER>0&&TASTER<8)

    würde ich mit Klammern schreiben:

    if((TASTER>0) && (TASTER<8))

    (... und die Mehrfachabfrage von PollSwitch() halte ich nur für bedingt sinnvoll)

    Sleep(255) dauert nur ein Zwinkern, besser mehrfach oder in einer Schleife aufrufen um merkbare Zeiten zu verzögern.

    Das ist natürlich eine Quälerei für's Getriebe und als Dauerlösung nicht zu empfehlen:

    MotorDir(RWD,RWD);
    MotorSpeed(170,170);

    Allerdings ist die ganze Kollisiongeschichte kritisch, weil der asuro jedesmal gegen das Hinderniss knallt, weil er nicht mehr rechtzeitig bremsen kann, wenn ein Taster gedrückt wird.

    (TASTER würde ich klein schreiben, weil schonender für die Augen.)

    Das war's mal was mir so auf Anhieb zu deinem ersten Programm einfällt. Sieht doch für den Anfang ganz gut aus, weiter so.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.05.2007
    Beiträge
    9
    danke für deine hilfe!
    also das ausweich programm geht jetzt, aber ich wollte .asuro so wie in diesem beitrag beschrieben umbauenhttp://www.roboternetz.de/phpBB2/zei...?p=99791#99791 und jetzt funktioniert das senden/empfangen von daten nicht mehr! ich hab extra darauf geachtet die teile nicht zu "überhitzen" und den IC2 hab ich auch schon ausgetauscht (mit dem vom transceiver)! die IR-led müsste eigentlich auch funktionieren weil ich eine andere (neue) verwendet habe.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    22
    Beiträge
    98
    Hast du irgendwie vieleicht die Drähte verwechselt?

    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.05.2007
    Beiträge
    9
    also die drähte sind das einzige wo ich mir zu 100% sicher bin dass sie stimmen

    edit:

    ich hab jetzt mal im inet geschaut wo es diese beiden bauteile zu kaufen gäbe (IR-empfänger und IR-led) aber ich hab keinen shop gefunden der BEIDE anbietet? ... und eigentlich hab ich keine lust für ca 1€ bestellwert 20€ versandkosten zu zahlen. gibt es bei www.conrad.at einen ir-empfänger der den gleichen zweck wie der vom asuro erfüllt und auch funktioniert??

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    30
    Beiträge
    3.889
    müsste eigentlich alles bei Reichelt zu finden sein --> www.reichelt.de

    wenn du den empfänger vom transceiver ausgelötet hast um ihn zu ersetzen, hast du ihn vermutlich dabei sschon gegrillt. das teil ist sehr empfindlich.
    kleinschreibung ist cool!

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •