-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: ASURO Programmieren?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2008
    Beiträge
    27

    ASURO Programmieren?

    Anzeige

    Also ich bin neu hier und wollte mal fragen wie ich den asuro programmieren muss damit er bei einer kolision stehen bleibt.... (also wenn man auf einen taster drückt...)

    ich habe schon ein programm geschrieben aber das funktioniert nicht...
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    hallo Matze 3

    eigentlich genügt eine if-abfrage zur feststellung, ob ein taster gedrückt ist
    jedoch sollte man bei PollSwitch beachten, dass sie gerade bei laufendem motor manchmal einen falschen wert liefert

    hier ein vorschlag, wie es funktionieren müsste:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    Init();
    unsigned char sw;
    
    	while(1)
           {
      	    sw = PollSwitch(); 
                if(PollSwitch() == sw)   //Sicherheitsabfrage, um falsche Werte zu vermeiden
                MotorDir(BREAK,BREAK);
            }
    }

    noch ein kleiner tipp: mit dem code-button kannst du hier deine programme schön posten
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2008
    Beiträge
    27
    Das geht auch nicht....
    kast hier mal jemand ein funktionierendes programm posten??

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Beispiele für Kollisionsprogramme findet man z.B. wenn man in der Suchfunktion des Forums nach "motorspeed AND pollswitch" sucht. Allerdings sollte man sich dabei darüber im Klaren sein, dass der asuro dann immer ungebremst gegen das Hinderniss knallt!

    Dein Programm könnte man z.B. so ändern:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	unsigned char sw1, sw2, sw3;
    
    	while(1)
    	{
    		sw1 = PollSwitch();
    		sw2 = PollSwitch();
    		sw3 = PollSwitch();
    
    		if (sw1 == sw2 == sw3 == 0x01)
    			MotorSpeed(150, 0);
    		if (sw1 == sw2 == sw3 == 0x02)
    			MotorSpeed(200, 0);
    		if (sw1 == sw2 == sw3 == 0x04)
    			MotorSpeed(250, 0);
    		if (sw1 == sw2 == sw3 == 0x08)
    			MotorSpeed(0, 150);
    		if (sw1 == sw2 == sw3 == 0x10)
    			MotorSpeed(0, 200);
    		if (sw1 == sw2 == sw3 == 0x20)
    			MotorSpeed(0, 250);
    	}
    }
    ...dann hat die mehrfacheTastenabfrage auch einen Sinn. Ich habe das allerdings so nicht getestet. Vermutlich wird es auch nicht wie erwartet funktionieren weil die wenigsten asuros auf Anhieb die richtigen Werte liefern ("asuro AND tasten AND kalibrieren"). Zusätzliche Hinweise findet man auch im asurowiki. Der Artikel über die Tastenkalibrierung behandelt zwar die Anwendung bei der aktuellen Library, aber der Sachverhalt ist gleich. Die Formel dazu steht in asuro.c am Ende von PollSwitch().

    Gruß

    mic

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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2008
    Beiträge
    27
    kann mir vieleicht jemand hier ein programm posten mit dem ich asuro über infra rot fernsteuern kann??
    also das ich den mit den tasten w, a, s, d steuern kann???

    weil die tasten funktionieren jetzt...

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    hallo

    ich will nicht meckern, aber dieses forum ist eigentlich dazu da, um bei problemen zu helfen, nicht um sich fertige programme schreiben zu lassen.

    versuch es lieber zu erst selbst, poste dein programm fals es nicht klappt und dir wird sicher geholfen. zu dem lernt du selber viel mehr

    als alternative kannst du aber auch die formussuche benutzen. da gibts sicher schon einige beiträge mit fertigen programmen
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2008
    Beiträge
    27
    ja also ich hab schon mal so ein programm geschrieben....nur des ging nicht.... also der asuro hat garnichts gemacht...

    ich hab des nach der anleitung von der asuro cd geschrieben...

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    könntest du das vl posten?

    ansonsten hier eine idee wie es vl. funktionieren könnte:
    Code:
    int main()
    {
      while(1)
      {
       Zeichen lesen
       mit switch dem entsprechend handln (motordir und -speed)
       vl kurze pause
      }
      while(1);
    den code zu meinem (hoffentlich richtigen) muster kannst du dir erstmal selber überlegen. bei problemen kannst du natürlich fragen

    PS: ich weiß zwar nicht wie viel erfahrung du mit C und robotik hast, aber ich würde dir raten, erst mit linienfolgen, "figuren fahren" oder andere "leichte aufgaben" an zu fangen.
    außer du willst unbedingt über hyperterminal steuern

    wie schon erwähnt, wenn du fragen hast melde dich

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2008
    Beiträge
    27
    also ich hab eigentlich nicht sehr viel erfahrung mit c....
    des programm hab ich nicht mehr....

    aber des ging ungefäh so..:

    SerRead(ir,1,0);
    if (ir == w){
    MotorDir(FWD,FWD);
    MotorSpeed(100, 100);
    }
    if (ir == s){
    MotorDir(RWD,RWD);
    MotorSpeed(100,100)
    }
    ...
    ...
    ...

    ich glaube eigenlich dass die ir steuerung eifach ist...

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    so, der erste fehler den ich sehe:
    wenn nach einem einzellnen buchstaben abfragen willst, musst du ihn unter einfache anführungszeichen ' setzen. zb so:
    if (ir == 'w')

    kurz zur erklärung:
    buchsaben(-ketten) werden im ASCII-code gespeichert. dh anstatt des zeichens wird in der variable eine zahl von 0 - 255 abgespeichert, je nach buchstaben und wenn du nun einen buchstaben in ' schreibst wird nach der entsprechenden zahl abgefragt.


    weiters wäre noch interessant welchen typ dein ir hat.
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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