- 3D-Druck Einstieg und Tipps         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 60

Thema: Einzelnen Taster auslesen.

  1. #31
    Anzeige

    Praxistest und DIY Projekte
    Den Umfang habe ich ja berechnet:

    Umfang=2*pi*radius

  2. #32
    6 schwartze auf einem Reifen.

  3. #33
    Benutzer Stammmitglied
    Registriert seit
    04.07.2009
    Alter
    31
    Beiträge
    31
    Ich habe jetzt hier einmal eine kleine Funktion geschrieben, aber ich bin mir nicht sicher ob die auch funktioniert. (bis jetzt nur Theorie)

    gesch = Geschwindichkeit Werte von 0-255
    weit = Strecke in ! cm ! Werte zwischen -32768 .. +32767

    Code:
       unsigned int data[2];
       int weit;
       unsigned char gesch;
       unsigned int gef;
       unsigned int mmm;
       
       
       int drive(int weit, unsigned char gesch)
       {
         if(weit > 0){
           MotorDir(FWD,FWD);}
         else if(weit < 0){
           MotorDir(RWD,RWD);}
         else{  
           break;}
                
         MotorSpeed (gesch,gesch);
         OdometrieData(data);
         
         if(data[0] < 500){
           hellichkeit = 0;}
         else{
           hellichkeit = 1;}         
         OdometrieData(data);
           
         while (weit < gef){       
           if(hellichkeit == 0){
             if(data[0] > 500){
               mmm = mmm + 68;
               hellichkeit = 1;}}
           else{
             if(data[0] < 500){
               mmm = mmm + 68;
               hellichkeit = 0;}}
           gef = mmm/100;}
           
         MotorSpeed(BREAK,BREAK);}
    Das er garade fährt und andere Kontrollen während der Funktion muss man hald noch ein bauen

    gruß
    Johannes

  4. #34
    Muss man deine Funktion dann so anwenden?

    Code:
    #include "asuro.h" 
    #include "odo.c"
    int main(void) 
    { 	int weit;
    	unsigned char gesch;
    	weit==10;
    	gesch==120;
    	Init();
      
    	int drive(int weit, unsigned char gesch)
    }
    Ich habe deine Funktion als odo.c gespeichert.

  5. #35
    Benutzer Stammmitglied
    Registriert seit
    04.07.2009
    Alter
    31
    Beiträge
    31
    Nein
    Code:
    #include "asuro.h"
    #include "odo.c"
    int main(void)
    {    int weit;
       unsigned char gesch;
       weit=10;
       gesch=120;
       Init();
     
       drive(weit,gesch);
       return 0;
    }
    Ich bin mir nur an volgender Stelle nicht sicher in meiner Funktion:

    Code:
         MotorSpeed (gesch,gesch);
    ob dort die Daten richtig eingetragen werden.

    Kannst ja sagen, ob es funktioniert.
    Oder findet jemand einen Fehler?

  6. #36
    Code:
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    In file included from asuro.h:34,
                     from test.c:1:
    c:/winavr-20090313/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
    In file included from test.c:2:
    odo.c: In function 'drive':
    odo.c:15: error: break statement not within loop or switch
    odo.c:21: error: 'hellichkeit' undeclared (first use in this function)
    odo.c:21: error: (Each undeclared identifier is reported only once
    odo.c:21: error: for each function it appears in.)
    make: *** [test.o] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    Also die Fehler kriege ich jetzt immer zurück guck sie dir mal an und ich habe glaube ich einen Fehler am Ende deiner Funktion gefunden

    Da muss glaube ich noch ein

    Code:
    return 0;
    stehen.

  7. #37
    Ich galube es hängt mit der hellichkeit zusammen die hast die nicht deklariert.

  8. #38
    Benutzer Stammmitglied
    Registriert seit
    04.07.2009
    Alter
    31
    Beiträge
    31
    doch die habe ich mal auf 500 gestellt, die musst du aber noch für deinen Asuro anpassen.

  9. #39
    Code:
    #include "asuro.h" 
    
    int main(void) 
    { 
       Init(); 
       int zeit; 
       unsigned char taste; 
       MotorDir(FWD,FWD); 
       MotorSpeed(120,124); 
       StatusLED(GREEN); 
       FrontLED(ON); 
       while (1){ 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       if (taste==1) 
       { 
       MotorSpeed(0,0); 
       StatusLED(RED); 
       BackLED(ON,ON); 
       MotorDir(RWD,RWD); 
       MotorSpeed(150,151); 
       for(zeit=0;zeit<1000;zeit++){        
        Sleep(72);} 
       BackLED(OFF,OFF); 
       StatusLED(GREEN); 
       MotorDir(FWD,FWD); 
       MotorSpeed(0,180); 
       for (zeit=0; zeit<500; zeit++){ 
       Sleep(72);} 
       MotorSpeed(120,121); 
       for(zeit=0;zeit<500;zeit++){        
        Sleep(72);} 
       BackLED(OFF,OFF); 
       StatusLED(GREEN); 
       MotorDir(FWD,FWD); 
       MotorSpeed(180,0); 
       for (zeit=0; zeit<500; zeit++){ 
       Sleep(72);} 
       MotorSpeed(120,121); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
        
       } 
       else if (taste==32) 
       { 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       taste=PollSwitch(); 
       MotorSpeed(0,0); 
       StatusLED(RED); 
       BackLED(ON,ON); 
       MotorDir(RWD,RWD); 
       MotorSpeed(150,152); 
       for(zeit=0;zeit<1000;zeit++){        
        Sleep(72);} 
       BackLED(OFF,OFF); 
       StatusLED(GREEN); 
       MotorDir(FWD,FWD); 
       MotorSpeed(180,0); 
       for (zeit=0; zeit<500; zeit++){ 
       Sleep(72);} 
       MotorSpeed(120,122); 
       for(zeit=0;zeit<500;zeit++){        
        Sleep(72);} 
       BackLED(OFF,OFF); 
       StatusLED(GREEN); 
       MotorDir(FWD,FWD); 
       MotorSpeed(0,180); 
       for (zeit=0; zeit<500; zeit++){ 
       Sleep(72);} 
       MotorSpeed(120,122); 
       } 
       else if (taste==16 || taste==2)
       {
       MotorSpeed(0,0);
       StatusLED(RED);
       BackLED(ON,ON);
       MotorDir(150,152);
       for(zeit=0;zeit<1000;zeit++){        
        Sleep(72);} 
    	BackLED(OFF,OFF); 
    	StatusLED(GREEN); 
    	MotorDir(FWD,FWD); 
    	MotorSpeed(180,0); 
    	for (zeit=0; zeit<1200; zeit++){ 
    	Sleep(72);} 
    	MotorSpeed(120,122);
       } 
       return(0); 
    }
    }
    Was habe ich falsch gemacht: Er fährt nur stur gerade aus

  10. #40
    Benutzer Stammmitglied
    Registriert seit
    04.07.2009
    Alter
    31
    Beiträge
    31
    Ich hab das ganze jetzt einmal auf die 1 Taste gekürtzt, dass man sehen kann, ob das überhaupt funktioniert.

    Versuchs mal mit dem hier:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
       Init();
       int zeit;
       unsigned char taste,taste1,taste2;
       
       MotorDir(FWD,FWD);
       MotorSpeed(120,124);
       StatusLED(GREEN);
       FrontLED(ON);
       
       while (1){
         taste1 = PollSwitch();
         taste2 = PollSwitch();     
         if(taste1 == taste2);
           {taste = taste1;
    
       if (taste==1)
         {
         MotorSpeed(0,0);
         StatusLED(RED);
         BackLED(ON,ON);
         MotorDir(RWD,RWD);
         MotorSpeed(150,151);
       for(zeit=0;zeit<1000;zeit++)
           {       
         Sleep(72);
           }
         BackLED(OFF,OFF);
         StatusLED(GREEN);
         MotorDir(FWD,FWD);
         MotorSpeed(0,180);
       for (zeit=0; zeit<500; zeit++)
           {
         Sleep(72);
           }
         MotorSpeed(120,121);
       for(zeit=0;zeit<500;zeit++)
           {       
         Sleep(72);
           }
         BackLED(OFF,OFF);
         StatusLED(GREEN);
         MotorDir(FWD,FWD);
         MotorSpeed(180,0);
       for (zeit=0; zeit<500; zeit++)
           {
         Sleep(72);
           }
         MotorDir(FWD,RWD);       
         MotorSpeed(150,151);
       for(zeit=0;zeit<3000;zeit++)  
         }}
         
    
       return(0);
    }
    }

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test