- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Problem Sinus durch eigene Funktion ersetzen

  1. #11
    HaWe
    Gast
    Anzeige

    LiFePo4 Akku selber bauen - Video
    wie Odometrie funktioniert, ist mir auch klar - und ich meinte auch keine allgemeinen Tabllen wie von Oberallgeier:

    ich meinte (auch) DEINEN Tabellen-array-Sinus128 in Gegenüberstellung zum echten sin(x)*128, selber von dir aufgerufen so wie du es dann auch in deiner Anwendung machen willst.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    So wie vorher, hatte nur die while Schleifen eingebaut.

    Code:
    #include <sincos.h>
    #include <avr/pgmspace.h> 
    
    //static const char sinusdaten[91] PROGMEM =
    static const char sinusdaten[92] PROGMEM = 
    {0,2,4,7,9,11,13,16,18,20,22,24,27,29,31
    ,33,35,37,40,42,44,46,48,50,52,54,56,58
    ,60,62,64,66,68,70,72,73,75,77,79,81,82
    ,84,86,87,89,91,92,94,95,97,98,99,101
    ,102,104,105,106,107,109,110,111,112,113
    ,114,115,116,117,118,119,119,120,121,122
    ,122,123,124,124,125,125,126,126,126,127
    ,127,127,128,128,128,128,128,128,128};
    
    short sinus(short winkel)
    {
    short result=0;
    while(winkel<0){winkel+=360;}
    while(winkel>=360){winkel-=360;}
    
    
    if (winkel<=90) result = (short)(pgm_read_word(&sinusdaten[winkel]));
    if ((winkel>90)&&(winkel<=180)) result = (short)(pgm_read_word(&sinusdaten[180-winkel]));
    if ((winkel>180)&&(winkel<=270)) result = -(short)(pgm_read_word(&sinusdaten[winkel-180]));
    if (winkel>270) result = -(short)(pgm_read_word(&sinusdaten[360-winkel]));
    
    return (result);
    }
    
    short cosinus(short winkel)
    {
    short result=0;
    while(winkel<0){winkel+=360;}
    while(winkel>=360){winkel-=360;}
    
    
    if (winkel<=90) result = (short)(pgm_read_word(&sinusdaten[90-winkel]));
    if ((winkel>90)&&(winkel<=180)) result = -(short)(pgm_read_word(&sinusdaten[winkel-90]));
    if ((winkel>180)&&(winkel<=270)) result = -(short)(pgm_read_word(&sinusdaten[270-winkel]));
    if (winkel>270) result = (short)(pgm_read_word(&sinusdaten[winkel-270]));
    
    return (result);
    }
    Da die odomentrie Ergebnisse um den Faktor 100 abweichen müssen hier Werte weit größer als 128 rausgehen, aber wie?
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  3. #13
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Code:
    static const char sinusdaten[92] PROGMEM = 
                 ^^^^
    
    ... pgm_read_word(&sinusdaten[winkel]));
                 ^^^^
    MfG
    Stefan

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521


    Danke!!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. 1600MHz RAM durch 1333MHz RAM ersetzen?
    Von Thor_ im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 0
    Letzter Beitrag: 10.08.2012, 19:45
  2. Sinus-Funktion Fehlerhaft?!
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 15.07.2009, 17:24
  3. Wait durch Timer ersetzen?
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 26
    Letzter Beitrag: 05.02.2009, 21:03
  4. Funreichweite AM durch FM ersetzen?
    Von Tido im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 27.12.2006, 08:45
  5. atmel 90s1200 durch attiny2313 ersetzen problem
    Von Morpheus85 im Forum Assembler-Programmierung
    Antworten: 7
    Letzter Beitrag: 06.10.2006, 09:55

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad