- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Ultraschallcode erweitert

  1. #21
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Anzeige

    Powerstation Test
    Leider wie bei mir, er dreht immer nach links weg

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    32
    Beiträge
    344
    oh ich seh grad beim asuro wird der timer 1 gar nicht benutzt
    versuchs mal mit meinem code und TCNT2

  3. #23
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Jetzt hat's geklappt, danke für deine Hilfe!

  4. #24
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Projekt fertig: \/

    US-Code für ASURO mit folgenden Extras:

    - Geradeausfahrt mit Odometriezähler (Ausgleich Links, Rechts)
    - Wegdrehen bei Tasterberührung von der Wand (T1,T2,T3 links - T4,T5,T6 rechts)
    - bei Abstand < 15 cm wegdrehen von der Wand mittels Zufallsgenerator (Links oder Rechts mittels Timer TCNT2)

    Code:
    #include "asuro.h" 
    #include "ultrasonic.h" 
    
    #define TRIGGERLEVEL 600
    #define HYSTERESIS 10
    #define LOW 0
    #define HIGH 1
      
    int main(void) 
    { 
    int abstand, sw, sw0, sw1, sw2; 
    unsigned char ocr = 0; 
    unsigned char ocr1 = 0; 
    unsigned int data[2];
    signed int status[2]={0,0};
    signed int difference=0;
    
    Init(); 
    
      while(1) 
     { 
    
    sw0=PollSwitch(); 
    sw1=PollSwitch(); 
    sw2=PollSwitch(); 
        
    if ((sw0==sw1) && (sw0==sw2)) sw=sw0; else sw=0; 
    
    	 {
    	 StatusLED(GREEN); 
         MotorDir(FWD, FWD); 
         MotorSpeed(150, 150);
    	 }
    
    abstand = Chirp(); 
    StatusLED(YELLOW); 
    
    	if (sw==32) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(FWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    	if (sw==16) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(FWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    	if (sw==8) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(FWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    	if (sw==1) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(RWD,FWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    	if (sw==2) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(RWD,FWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    	if (sw==4) 
    	   { 
    	   StatusLED(RED); 
        
    	   MotorDir(RWD,RWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    
    	   MotorDir(RWD,FWD); 
    	   MotorSpeed(150, 150); 
    	   Msleep(600); 
    	   } 
    
    	else if (abstand<15) 
       	  { 
          ocr = TCNT2; 
          ocr1 =ocr/2; 
          ocr1 *=2; 
          if (ocr == ocr1){ 
          StatusLED(RED); 
    
          MotorDir(RWD,RWD); 
          MotorSpeed(150, 150); 
          Msleep(600); 
    
          MotorDir(RWD,FWD); 
          MotorSpeed(150, 150); 
          Msleep(600); 
          } 
          else 
           { 
          StatusLED(RED); 
    
          MotorDir(RWD,RWD); 
          MotorSpeed(150, 150); 
          Msleep(600); 
    
          MotorDir(FWD,RWD); 
          MotorSpeed(150, 150); 
          Msleep(600); 
          } 
       } 
    
    else 
       { 
    
    	         OdometrieData(data);
            if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) {
                status[0]=HIGH;
                difference++;
            }
            if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) {
                status[0]=LOW;
                difference++;
            }
            if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) {
                status[1]=HIGH;
                difference--;
            }
            if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) {
                status[1]=LOW;
                difference--;
            }
    
            if (difference<-155) difference=-155;
            if (difference>155) difference=155;
            
    
            StatusLED(status[0]+status[1]*2);
            
            if (difference>0) MotorSpeed(155-difference,155);
            else MotorSpeed(155,155+difference);
    
    	  
        }
    	
    	
    	 
     } 
      return 0; 
    }
    Mein ASURO verhält sich jetzt viel natürlicher (wie ein Hamster)

    Kopieren erlaubt, Verbesserungsvorschläge willkommen!

    Danke an inka und MartinFunk für die Unterstützung!

  5. #25
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi pinsel,

    gleich einen vereinfachungsvorschlag für die tasterabfrage:
    abfrage für zusammengehörende taster zusammenfassen mit hilfe von:

    if ((sw==1) || (sw==2) || (sw==3))

    (k1, k2, k1+k2) - ich bin ziemlich sicher dass man die abfrage der innenliegenden taster nicht braucht...
    gruß inka

  6. #26
    Erfahrener Benutzer Begeisterter Techniker Avatar von JensK
    Registriert seit
    27.02.2007
    Ort
    Hamburg
    Alter
    32
    Beiträge
    254
    wenn ich pinsles programm compilieren möchte, kommt diese Fehlermeldung:

    J:\ASURO\Programme\asuro_libv271\examples\FirstTry/test.c:47: undefined reference to `Chirp'

    das heißt doch, dass er "Chirp" nicht kennt oder? oder will er in den klammern ein wert haben?

    mfg

  7. #27
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847

  8. #28
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    oder in die ultrasonic.c aus der lib 2.7.1...
    gruß inka

  9. #29
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Hi Inka,

    mit deiner Vereinfachung habe ich den Code von 42 auf 36 Pages reduziert.

    Noch was - hast du schon Erfahrungen mit der Triangulation gemacht?

  10. #30
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hi pinsel,
    meinst du die Sensoren aus dem asurobuch?
    gruß inka

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress