- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: töne hören

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76

    töne hören

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallo, bin gerade bei einem projekt um mit dem asuro "töne zu hören" und auszuwerten. und zwar soll eine zusatzplatine den ton aufnehmen und über 6 bandpassfilter verwerten. Über LEDs soll angezeigt werden welcher bandpassfilter aktiv ist. Dann soll über eine IR Diode ein befehl gesendet werden. und zwar fall 1, fall 2, fall 3, fall 4.
    fall 1 soll sein wenn bandpass 2 aktiv ist...und fall 4 soll sein wenn bandpass 5 aktiv ist. leider habe ich hier sehr viele errors und weiß nicht warum. vielleicht kann mir jemand helfen.komm nämlich gar nicht weiter.

    Code:
    #include "myasuro.h"
    #include "asuro.h"
    #include "inttypes.h"
    
    /* Teil 1. Bandpassfilter*/
    
    void bpfilter(int_8 *input,int8_t *output, uint16_t *length, int32_t koeff)
    
    int32_t a2;                                       /* a2 als Integervariable festlegen*/
    int32_t a3;                                       /* a3 als Integervariable festlegen*/
    int32_t GAIN_FRAC;                                /* GAIN_FRAC als Integervariable festlegen*/
    int32_t x0,x1,x2;                                 /* x0,x1,x2 als Integervariable festlegen*/
    int32_t y0,y1,y2;                                 /* y0,y1,y2 Integervariable festlegen*/
    uint16_t n;                                       /* n Integervariable festlegen*/
    uint16_t i;                                       /* i als Integervariable festlegen*/
    
    x1=0;                                             /* Wert für x1 festlegen*/
    x2=0;                                             /* Wert für x2 festlegen*/
    y0=0;                                             /* Wert für y0 festlegen*/
    y1=0;                                             /* Wert für y1 festlegen*/
    y2=0;                                             /* Wert für y2 festlegen*/
    x0=1;                                             /* Wert für x0 festlegen*/
    length=100;                                /* Wert für length festlegen*/
    
      for i=1;i<7;i++;                          /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
      {
        if i=1;                                     /* Schleife 1 mit den Werten für Bandpass 1*/
          {
           a2=2
           a3=3
           GAIN_FRAC=4
          }
       if i=2;                             /* Schleife 2 mit den Werten fü Bandpass 2*/
          {
            a2=1
           a3=2
           GAIN_FRAC=3
          }
       if i=3;                                     /* Schleife 3 mit den Werten für Bandpass 3*/
          {
            a2=3
           a3=2
           GAIN_FRAC=1
          }
        if i=4;                                     /* Schleife 4 mit den Werten für Bandpass 4*/
          {
            a2=4
           a3=2
           GAIN_FRAC=3
          }
        if i=5;                                     /* Schleife 5 mit den Werten für Bandpass 5*/
          {
            a2=1
           a3=1
           GAIN_FRAC=1
          }
        if i=6;                                     /* Schleife 6 mit den Werten für Bandpass 6*/
          {
            a2=2
           a3=4
           GAIN_FRAC=3
          }
    
            for n=0;n<length;n++;                 /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
             {
             x0=input;                             /* x0 als Eingang festlegen*/
             y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/
             x2=x1;
             x1=x0;
             y2=y1;
             y1=y0;
    
             output[n]=((y0*GAIN_FRAC)>>16);       /* Gleichung um Ausgang zu berechnen*/
             }
    
        printf(output[n]);                           /* Ergebnis soll am Bildschirm angeszeigt werden*/
      }
    
    
    /* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/
    
    /* Teil 3. Versenden des Befehls über IR-DIODE*/
    habe aber ganze 17 errors drinne:

    ../ZUSATZ155.c:3:1: warning: "/*" within comment
    ../ZUSATZ155.c:4:1: warning: "/*" within comment
    ../ZUSATZ155.c:5:1: warning: "/*" within comment
    ../ZUSATZ155.c:6:1: warning: "/*" within comment
    ../ZUSATZ155.c:14: error: expected ')' before '*' token
    ../ZUSATZ155.c:20: warning: built-in function 'y0' declared as non-function
    ../ZUSATZ155.c:20: warning: built-in function 'y1' declared as non-function
    ../ZUSATZ155.c:24: warning: data definition has no type or storage class
    ../ZUSATZ155.c:24: warning: type defaults to 'int' in declaration of 'x1'
    ../ZUSATZ155.c:24: error: conflicting types for 'x1'
    ../ZUSATZ155.c:19: error: previous declaration of 'x1' was here
    ../ZUSATZ155.c:25: warning: data definition has no type or storage class
    ../ZUSATZ155.c:25: warning: type defaults to 'int' in declaration of 'x2'
    ../ZUSATZ155.c:25: error: conflicting types for 'x2'
    ../ZUSATZ155.c:19: error: previous declaration of 'x2' was here
    ../ZUSATZ155.c:26: warning: data definition has no type or storage class
    ../ZUSATZ155.c:26: warning: type defaults to 'int' in declaration of 'y0'
    ../ZUSATZ155.c:26: error: conflicting types for 'y0'
    ../ZUSATZ155.c:20: error: previous declaration of 'y0' was here
    ../ZUSATZ155.c:27: warning: data definition has no type or storage class
    ../ZUSATZ155.c:27: warning: type defaults to 'int' in declaration of 'y1'
    ../ZUSATZ155.c:27: error: conflicting types for 'y1'
    ../ZUSATZ155.c:20: error: previous declaration of 'y1' was here
    ../ZUSATZ155.c:28: warning: data definition has no type or storage class
    ../ZUSATZ155.c:28: warning: type defaults to 'int' in declaration of 'y2'
    ../ZUSATZ155.c:28: error: conflicting types for 'y2'
    ../ZUSATZ155.c:20: error: previous declaration of 'y2' was here
    ../ZUSATZ155.c:29: warning: data definition has no type or storage class
    ../ZUSATZ155.c:29: warning: type defaults to 'int' in declaration of 'x0'
    ../ZUSATZ155.c:29: error: conflicting types for 'x0'
    ../ZUSATZ155.c:19: error: previous declaration of 'x0' was here
    ../ZUSATZ155.c:30: warning: data definition has no type or storage class
    ../ZUSATZ155.c:30: warning: type defaults to 'int' in declaration of 'length'
    ../ZUSATZ155.c:32: error: expected identifier or '(' before 'for'
    ../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
    ../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '++' token
    ../ZUSATZ155.c:33: error: expected identifier or '(' before '{' token



    das 2. programm soll dann das auf dem asuro sein. um jedem fall seine aufgabe zuzuteilen.könnte das so klappen??

    Code:
    #include <inttypes.h>
    #include "asuro.h"
    
    #define aus MotorDir(BREAK,BREAK)
    uint8_t chgetchar()
    
    void main()
    {
    
       while(1)
       {
    
          command = chgetchar();
    
          switch(command)
          {
               fall '1':
               {
                MotorDir(FWD,FWD);
    	    MotorSpeed(50,50);
                Msleep(70);
                
             }
             break;
               fall '2':
               {
                MotorDir(RWD,RWD);
                MotorSpeed(50,50);
                Msleep(70);
                
             }
             break;
               fall '3':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(50,0);
                Msleep(70);
                
             }
             break;
               fall '4':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(0,50);
                Msleep(70);
                
             }
             break;
             default:
             {
             }break;
          }
       }     
    
    }


    und um überhaupt meine zusatzplatine zu prüfen möchte ich ein programm schreiben, dass die 8 LEDS leuchten wenn irgendein signal kommt. aber hier weiß ich nicht ganz wie ich es machen soll... auch mit einem bandpass??

    [/code]

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Erstmal solltest du noch Klammern um den Rumpf der Funktion setzen, das halbiert schon mal die Anzahl der Fehler...

    Dann solltest du dich noch mal über die korrekte Syntax von for-Schleifen und if-Abfragen und den Unterschied zwischen = und == schlaumachen.

    Die ersten vier Warnungen scheinen aus einer der Header-Dateien zu stammen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    so habe jetzt mal was geändert.
    Code:
    #include "myasuro.h"
    #include "asuro.h"
    #include "inttypes.h"
    
    /* Teil 1. Bandpassfilter*/
    
    
    {
    void bpfilter(int_8 *input,int8_t *output, uint16_t *length, int32_t koeff)
    
    int32_t a2;                                       /* a2 als Integervariable festlegen*/
    int32_t a3;                                       /* a3 als Integervariable festlegen*/
    int32_t GAIN_FRAC;                                /* GAIN_FRAC als Integervariable festlegen*/
    int32_t x0,x1,x2;                                 /* x0,x1,x2 als Integervariable festlegen*/
    int32_t y0,y1,y2;                                 /* y0,y1,y2 Integervariable festlegen*/
    uint16_t n;                                       /* n Integervariable festlegen*/
    uint16_t i;                                       /* i als Integervariable festlegen*/
    uint16_t length;                                  /* length als Integervariable festlegen*/
    
    x1=0;                                             /* Wert für x1 festlegen*/
    x2=0;                                             /* Wert für x2 festlegen*/
    y0=0;                                             /* Wert für y0 festlegen*/
    y1=0;                                             /* Wert für y1 festlegen*/
    y2=0;                                             /* Wert für y2 festlegen*/
    x0=1;                                             /* Wert für x0 festlegen*/
    length=100;										  /* Wert für length festlegen*/
    
      for (i=1;i<7;i++)								  /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
      {
        if (i=1)                                     /* Schleife 1 mit den Werten für Bandpass 1*/
    	   {
    	    a2=2;
    	    a3=3;
    	    GAIN_FRAC=4;
    	   }
    	if (i=2)									  /* Schleife 2 mit den Werten fü Bandpass 2*/
    	   {
            a2=1;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
    	if (i=3)                                     /* Schleife 3 mit den Werten für Bandpass 3*/
    	   {
            a2=3;
    	    a3=2;
    	    GAIN_FRAC=1;
    	   }
        if (i=4)                                     /* Schleife 4 mit den Werten für Bandpass 4*/
    	   {
            a2=4;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
        if (i=5)                                     /* Schleife 5 mit den Werten für Bandpass 5*/
    	   {
            a2=1;
    	    a3=1;
    	    GAIN_FRAC=1;
    	   }
        if (i=6)                                     /* Schleife 6 mit den Werten für Bandpass 6*/
    	   {
            a2=2;
    	    a3=4´;
    	    GAIN_FRAC=3;
    	   }
    
    	     for (n=0;n<length;n++)                 /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
    		   {
    		   x0=input;                             /* x0 als Eingang festlegen*/
    		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/
    		   x2=x1;
    		   x1=x0;
    		   y2=y1;
    		   y1=y0;
    
    		   output[n]=((y0*GAIN_FRAC)>>16);       /* Gleichung um Ausgang zu berechnen*/
    		   }
    
        printf(output[n]);                           /* Ergebnis soll am Bildschirm angeszeigt werden*/
      }
    
    
    /* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/
    
    /* Teil 3. Versenden des Befehls über IR-DIODE*/
    }
    habe leider noch 2 errors:


    ../ZUSATZ155.c:3:1: warning: "/*" within comment
    ../ZUSATZ155.c:4:1: warning: "/*" within comment
    ../ZUSATZ155.c:5:1: warning: "/*" within comment
    ../ZUSATZ155.c:6:1: warning: "/*" within comment
    ../ZUSATZ155.c:15: error: expected identifier or '(' before '{' token
    ../ZUSATZ155.c:70: error: stray '\264' in program
    C:\..\asuro_libv271\lib\inc/asuro.h:449: warning: inline function 'MotorSpeed' declared but never defined
    C:\asuro_libv271\lib\inc/asuro.h:441: warning: inline function 'MotorDir' declared but never defined
    C:\asuro_libv271\lib\inc/asuro.h:424: warning: inline function 'FrontLED' declared but never defined
    C:\asuro_libv271\lib\inc/asuro.h:418: warning: inline function 'StatusLED' declared but never defined
    make: *** [ZUSATZ155.o] Error 1
    Build failed with 2 errors and 8 warnings...


    was sagst du zu den 2 anderen programmen? und hast du ein typ für teil 2 und 3 vom ersten programm??[/code]

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Die geschweifte Klammer gehört HINTER dem Kopf der Funktion.

    Statt #include "inttypes.h" muss es #include <inttypes.h> heißen, weil diese Datei im include-Verzeichnis des Compilers und nicht im lokalen Verzeichnis liegt.

    Dann gibt es neue Fehler:

    t.c:20: error: 'length' redeclared as different kind of symbol
    t.c:10: error: previous definition of 'length' was here
    >> Es gibt diese Variable zweimal: einmal als Pointer-Parameter, und einmal lokal.

    t.c:65: error: stray '\264' in program
    >>Schau genau hin, dann findest du das störende Zeichen.

    t.c:71: warning: assignment makes integer from pointer without a cast
    t.c:81: warning: incompatible implicit declaration of built-in function 'printf'
    t.c:81: warning: passing argument 1 of 'printf' makes pointer from integer without a cast
    >>Kommt von der doppelten Deklaration von lenght


    Und den Unterschied zwischen = und == kennst du immer noch nicht!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    so also

    Code:
    #include <inttypes.h>
    
    /* Teil 1. Bandpassfilter*/
    
    
    
    void bpfilter(int_8 *input,int8_t *output, uint16_t *length, int32_t koeff)
    {
    
    int32_t a2;                                       /* a2 als Integervariable festlegen*/
    int32_t a3;                                       /* a3 als Integervariable festlegen*/
    int32_t GAIN_FRAC;                                /* GAIN_FRAC als Integervariable festlegen*/
    int32_t x0,x1,x2;                                 /* x0,x1,x2 als Integervariable festlegen*/
    int32_t y0,y1,y2;                                 /* y0,y1,y2 Integervariable festlegen*/
    uint16_t n;                                       /* n Integervariable festlegen*/
    uint16_t i;                                       /* i als Integervariable festlegen*/
    
    
    x1=0;                                             /* Wert für x1 festlegen*/
    x2=0;                                             /* Wert für x2 festlegen*/
    y0=0;                                             /* Wert für y0 festlegen*/
    y1=0;                                             /* Wert für y1 festlegen*/
    y2=0;                                             /* Wert für y2 festlegen*/
    x0=1;                                             /* Wert für x0 festlegen*/
    length=100;										  /* Wert für length festlegen*/
    
      for (i==1;i<7;i++)						      /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
      {
        if (i==1)                                     /* Schleife 1 mit den Werten für Bandpass 1*/
    	   {
    	    a2=2;
    	    a3=3;
    	    GAIN_FRAC=4;
    	   }
    	if (i==2)									  /* Schleife 2 mit den Werten fü Bandpass 2*/
    	   {
            a2=1;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
    	if (i==3)                                     /* Schleife 3 mit den Werten für Bandpass 3*/
    	   {
            a2=3;
    	    a3=2;
    	    GAIN_FRAC=1;
    	   }
        if (i==4)                                     /* Schleife 4 mit den Werten für Bandpass 4*/
    	   {
            a2=4;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
        if (i==5)                                     /* Schleife 5 mit den Werten für Bandpass 5*/
    	   {
            a2=1;
    	    a3=1;
    	    GAIN_FRAC=1;
    	   }
        if (i==6)                                     /* Schleife 6 mit den Werten für Bandpass 6*/
    	   {
            a2=2;
    	    a3=4;
    	    GAIN_FRAC=3;
    	   }
    
    	     for (n==0;n<length;n++)                 /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
    		   {
    		   x0=input;                             /* x0 als Eingang festlegen*/
    		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/		   
    		   x2=x1;
    		   x1=x0;
    		   y2=y1;
    		   y1=y0;
    
    		   output[n]=((y0*GAIN_FRAC)>>16);       /* Gleichung um Ausgang zu berechnen*/
    		   }
    
        printf(output[n]);                           /* Ergebnis soll am Bildschirm angeszeigt werden*/
      }
    
    
    /* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/
    
    /* Teil 3. Versenden des Befehls über IR-DIODE*/
    }
    hab jetzt keine warnings und "nur"noch 1 error drin.

    ../ZUSATZ155.c:16: error: expected ')' before '*' token
    make: *** [ZUSATZ155.o] Error 1
    Build failed with 1 errors and 0 warnings...

    aber den verstehe ich nicht???

    ich hab kurz eine verständnis frage. durch die gleichung wird ja der ausgangswert berechnet. und das mit allen verschiedenen koeffizienten. aber muss denn nicht y0 wieder auf 0 gesetzt werden nach der berechnung mit i=1? das man mit i=2 wieder von vorne anfangen kann?
    und dann zu teil 2. es sollen ja LEDs angesteuert werden. LED1 soll leuchten wenn Bandpass 1 (also i=1) aktiv ist, also wenn die eingehende frequenz dem des bandpasses gleich ist. wie würdest du denn dann das im 2. teil machen? irgendwie so vielleicht:
    if x0=y0 von i=1 dann LED 1 leuchtet
    if x0=y0 von i=2 dann LED 2 leuchtet
    ??

    beim 3. teil. ich möchte dass bandpass 2 aktiv fall 1 ist, bandpass 3 aktiv fall 2, bandpass 4 aktiv fall 3, bandpass 5 aktiv fall 4.
    über die IR Diode soll dann z.b. "fall 1" gesendet werden. wie kann man das machen?

    im programm des ASUROs wird das dann erkannt und einer bewegung zugeordnet:

    Code:
    #include <inttypes.h>
    #include "asuro.h"
    
    #define aus MotorDir(BREAK,BREAK)
    uint8_t chgetchar()
    
    void main()
    {
    
       while(1)
       {
    
          command = chgetchar();
    
          switch(command)
          {
               fall '1':
               {
                MotorDir(FWD,FWD);
           MotorSpeed(50,50);
                Msleep(70);
               
             }
             break;
               fall '2':
               {
                MotorDir(RWD,RWD);
                MotorSpeed(50,50);
                Msleep(70);
               
             }
             break;
               fall '3':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(50,0);
                Msleep(70);
               
             }
             break;
               fall '4':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(0,50);
                Msleep(70);
               
             }
             break;
             default:
             {
             }break;
          }
       }     
    
    }

    ich hoffe habe das mit == und = jetzt richtig gemacht, habs nämlich nachgeschlagen...

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Ersetz mal den int_8 durch int8_t. Dann bist du alle Syntaxfehler los. Die logischen Fehler schlagen sich nun in den Warnungen nieder. Alle siehst du nur, wenn du mit -Wall kompilierst.

    t.c:26: warning: assignment makes pointer from integer without a cast
    >>lenght ist nen pointer und kein int!
    t.c:28: warning: statement with no effect
    t.c:67: warning: statement with no effect
    >>Hier war das = schon richtig! Du solltest dein Nachschlagewerk wechseln. Eigentlich ist das ganz einfach: = ist für ne Wertzuweisung, == für einen Vergleich.
    t.c:67: warning: comparison between pointer and integer
    >>lenght ist nen pointer und kein int!
    t.c:69: warning: assignment makes integer from pointer without a cast
    >>lenght ist nen pointer und kein int!
    t.c:79: warning: implicit declaration of function 'printf'
    t.c:79: warning: incompatible implicit declaration of built-in function 'printf'
    t.c:79: warning: passing argument 1 of 'printf' makes pointer from integer without a cast
    >>printf wird anders aufgerufen!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    Code:
    #include <inttypes.h>
    
    /* Teil 1. Bandpassfilter*/
    
    
    
    void bpfilter(int8_t *input,int8_t *output, uint16_t *length, int32_t koeff)
    {
    
    int32_t a2;                                       	/* a2 als Integervariable festlegen*/
    int32_t a3;                                       	/* a3 als Integervariable festlegen*/
    int32_t GAIN_FRAC;                                	/* GAIN_FRAC als Integervariable festlegen*/
    int32_t x0,x1,x2;                                 	/* x0,x1,x2 als Integervariable festlegen*/
    int32_t y0,y1,y2;                                 	/* y0,y1,y2 Integervariable festlegen*/
    uint16_t n;                                       	/* n Integervariable festlegen*/
    uint16_t i;                                       	/* i als Integervariable festlegen*/
    
    
    x1=0;                                             	/* Wert für x1 festlegen*/
    x2=0;                                             	/* Wert für x2 festlegen*/
    y0=0;                                             	/* Wert für y0 festlegen*/
    y1=0;                                             	/* Wert für y1 festlegen*/
    y2=0;                                             	/* Wert für y2 festlegen*/
    x0=1;                                             	/* Wert für x0 festlegen*/
    length=100;		                          	/* Wert für length festlegen*/
    
      for (i=1;i<7;i++)				        /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
      {
        if (i==1)                                           /* Schleife 1 mit den Werten für Bandpass 1*/
    	   {
    	    a2=2;
    	    a3=3;
    	    GAIN_FRAC=4;
    	   }
    	if (i==2)	                                /* Schleife 2 mit den Werten für Bandpass 2*/
    	   {
            a2=1;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
    	if (i==3)                                       /* Schleife 3 mit den Werten für Bandpass 3*/
    	   {
            a2=3;
    	    a3=2;
    	    GAIN_FRAC=1;
    	   }
        if (i==4)                                          /* Schleife 4 mit den Werten für Bandpass 4*/
    	   {
            a2=4;
    	    a3=2;
    	    GAIN_FRAC=3;
    	   }
        if (i==5)                                          /* Schleife 5 mit den Werten für Bandpass 5*/
    	   {
            a2=1;
    	    a3=1;
    	    GAIN_FRAC=1;
    	   }
        if (i==6)                                         /* Schleife 6 mit den Werten für Bandpass 6*/
    	   {
            a2=2;
    	    a3=4;
    	    GAIN_FRAC=3;
    	   }
    
    	     for (n=0;n<length;n++)                  /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
    		   {
    		   x0=input;                                /* x0 als Eingang festlegen*/
    		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);    /* Gleichung um y0 zu berechnen*/		   
    		   x2=x1;
    		   x1=x0;
    		   y2=y1;
    		   y1=y0;
    
    		   output[n]=((y0*GAIN_FRAC)>>16);          /* Gleichung um Ausgang zu berechnen*/
    		   }
    
        
      }
    
    
    /* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/
    
    /* Teil 3. Versenden des Befehls über IR-DIODE*/
    }
    ok habe jetzt nur noch die fehler und errors:

    ../ZUSATZ155.c: In function 'bpfilter':
    ../ZUSATZ155.c:34: warning: assignment makes pointer from integer without a cast
    ../ZUSATZ155.c:75: warning: comparison between pointer and integer
    ../ZUSATZ155.c:77: warning: assignment makes integer from pointer without a cast
    ../ZUSATZ155.c:21: warning: 'GAIN_FRAC' may be used uninitialized in this function
    ../ZUSATZ155.c:20: warning: 'a3' may be used uninitialized in this function
    ../ZUSATZ155.c:19: warning: 'a2' may be used uninitialized in this function
    c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o.init9+0x0): undefined reference to `main'
    make: *** [ZUSATZ155.elf] Error 1
    Build failed with 1 errors and 6 warnings...


    das mit dem error und das mit length kapier ich nicht ganz??

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    Code:
    #include <inttypes.h>
    #include "asuro.h"
    
    #define aus MotorDir(BREAK,BREAK)
    uint8_t chgetchar()
    
    void main()
    {
    
       while(1)
       {
    
          command = chgetchar();
    
          switch(command)
          {
               fall '1':
               {
                MotorDir(FWD,FWD);
           MotorSpeed(50,50);
                Msleep(70);
               
             }
             break;
               fall '2':
               {
                MotorDir(RWD,RWD);
                MotorSpeed(50,50);
                Msleep(70);
               
             }
             break;
               fall '3':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(50,0);
                Msleep(70);
               
             }
             break;
               fall '4':
               {
                MotorDir(FWD,FWD);
                MotorSpeed(0,50);
                Msleep(70);
               
             }
             break;
             default:
             {
             }break;
          }
       }     
    
    }
    habe gerade noch am 2. programm mich versucht, aber bekomme auch hier warnings und errors.

    ../ASUROPlatine.c: In function 'chgetchar':
    ../ASUROPlatine.c:8: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
    ../ASUROPlatine.c:55: error: expected '{' at end of input
    ../ASUROPlatine.c:55: warning: no return statement in function returning non-void
    Build failed with 2 errors and 5 warnings...

    kannst du mir auch hier vielleicht helfen?? (ich bin leider noch anfänger beim programmieren)

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    nochmal zum 1. programm. kannst du mir da kurz einen tipp für den 2. teil geben, wie ich das machen könnte? und beim 3. teil stehe ich auch voll auf dem schlauch weil ich was mit ir diode noch nie programmier habe und somit auch keinen befehl dafür kenne

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Du übergibst der Funktion den Pointer "length", der auf einen uint16_t zeigt. In der Funktion greifst du aber so auf length zu, als wäre es ein uint16_t und kein Zeiger darauf.
    Wenn du die Variable ansprechen willst, auf die der Zeiger p zeigt, musst du *p schreiben.
    Also bei dir z.B. *length=100; um den Wert der Variable, auf die lenght zeigt, auf 100 zu setzen. Ist dir wirklich klar, was ein Zeiger ist?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress