- Labornetzteil AliExpress         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 34 von 34

Thema: Mein erstes Prog mit ASURO

  1. #31
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    32
    Beiträge
    239
    Anzeige

    Praxistest und DIY Projekte
    Der Code von radbruch war als Funktion gedacht und wird so verwendet:

    Code:
    #include "asuro.h"
    
    void PrintChar(unsigned char x)                        //Funktion wird vor main(void) definier 
                                                                          //und kann später an jeder Stelle des Programms
                                                                         //aufgerufen werden, wobei der entsprchende char-Wert
                                                                         //in die Klammern eingetragen wird
       {
          unsigned char einer, zehner, huni;
          char s[3]="hze";
          einer=x%10;
          zehner=(x-einer)/10;
          huni=(x-(zehner*10+einer))/100;
          s[0]=huni+'0';
           s[1]=zehner+'0';
          s[2]=einer+'0';
          SerWrite(s,3);
         return 0;
       }
    
    int main (void)
    {
    char odo[2];
    Init();
    FrontLED(ON); 
    while(1)
    {
    OdometrieData(odo);          //einlesen der odo-Werte
    PrintChar(odo[0]);             //Ausgeben über die Funktion
    PrintChar(odo[1]);
    }
    return 0;
    }
    ich hoffe es funktionier, da ich es selber noch nicht probiert habe

    über Funktionen müsste aber auch etwas in der Anleitung stehen

  2. #32
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Der Fehler ist, dass es eine Funktion zur Ausgabe von Zahlenwerten ist und noch ein richtiges Programm dazu fehlt dass diese Funktion nutzt. (Und die Funktion blöderweise auch nicht richtig funktioniert :(

    Hier ein funktionierendes Beispiel zu Anwendung (mit der entsprechenden PrintChar-Funktionsvariante von izaseba):

    Code:
    #include "asuro.h"
    
    unsigned int daten[2], i;
    
    // PrintChar-Funktion nach izaseba (mit int-Parameter)
    void PrintChar(unsigned int x)
       {
          char ergebnis[]  = {'0','0','0'};
         while (x >=100){
          ergebnis[0]++;
          x -=100;
          }
          while (x >= 10) {
          ergebnis[1]++;
          x -=10;
          }
          ergebnis[2] +=x;
          SerWrite(ergebnis,3);
       }
    int main(void)
    {
      Init();
      	SerWrite("\r\nOdometrietest\r\n",17);    // Begrüßung
      while (1)
      {
      	OdometrieData(daten); // Daten einlesen
      	PrintChar(daten[0]);  // Wert links senden
      	SerWrite("-",1);       // Trennzeichen
      	PrintChar(daten[1]);  // Wert rechts senden
      	SerWrite("\r\n",2);    // zwei Steuerzeichen senden
      	for(i=0; i<50; i++) Sleep(255);
      }
      return(0);
    }
    Nach dem Start langsam direkt am Codescheibenritzel drehen...

    Gruß

    mic

    [Edit]
    @hai1991:
    ne, funzt auch nicht, weil 1.: void kein return braucht und 2:.odo[] ein int sein muss. Und weil eben meine PrintChar()-Funktion überhaupt nicht funktioniert, keine Ahnung warum.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #33
    Benutzer Stammmitglied
    Registriert seit
    16.03.2008
    Beiträge
    44
    es geht, aber ich blick nicht, wiso da 3Stellige Zahlen ausgegeben werden...

    meiner meinung nach sind die auch völlig ungeordnet, selbst wenn das rad still steht kommen verschiedene zahlen...^^

  4. #34
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    ... weil der String so definiert ist: char ergebnis[] = {'0','0','0'};

    Wenn der Wert nicht dreistellig ist werden trotzdem die führenden Nullen ausgegeben. Wenn du das ändern willst - nur zu :)

    Die Werte schwanken vermutlich weil es ein asuro ist. Minimale Hardware erfordert eben pfiffige Software. Wenn du die Funktion testen willst:

    unsigned int x;
    for(x=0;x<1000;x++) PrintChar(x);
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress