- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 90

Thema: ASURO DDS

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.03.2010
    Ort
    nahe München
    Beiträge
    45
    Hallo,

    Danke erstmal, dass ihr mein Programm ausprobiert habt.

    Zum Lied, es ist ein Kirchenlied und heißt "Vergiss es nie".

    Ich habe keine Datenkompression verwendet, aber das Lied wiederholt sich an einigen Stellen (es gibt drei Strophen..), so bestehen z.B. die Strophen aus zwei fast gleichen Teilen, die ich dann zusammengefasst habe.

    Zurzeit aber arbeite ich an der Odometrie...

    Gruß

    ASUR0

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    27.04.2011
    Beiträge
    10
    Hallo erstmal
    auch wenn der Thread nicht mehr aktuell ist hoff ich dass ich schnelle Antwort bekomme.
    Ich bin noch ziemlich neu beim Programmieren.
    Bis jetzt hab ich es geschafft eine Mono-Melodie zu erstellen, wobei ich jeden Ton aber einzeln geschrieben hab.
    Ich hab auch die Programme hier runtergeladen.
    Ich versteh aber nicht, wie das mit dem StereoSound funktioniert. Ich könnts zwar einfach abschreiben und bei den Notenwerten was änder für ein andere Melodie, aber ich mache zurzeit bei der SIA mit und muss dort ein Projekt vorstellen. Und ich würd gerne das mit dem Musik abspielen machen.
    Bitte kann mir mir jemand erklären was da genau programmiert wird?
    Es handelt sich um diese Stelle:
    #define FS 31250 // controlled by timer2 8Mhz/256

    void StereoSound(uint16_t *noten1, uint16_t *noten2)
    {
    uint16_t index1=0,index2=0;
    uint16_t timer1,timer2;
    uint16_t phase1,phase2,angle1,angle2;
    uint8_t dir1=FWD,dir2=FWD;
    uint8_t speed1,speed2;

    angle1=(uint32_t)noten1[index1++]*65536/FS;
    timer1=noten1[index1++]*(FS/1000);
    if(angle1==0)speed1=0;
    else speed1=255;

    angle2=(uint32_t)noten2[index2++]*65536/FS;
    timer2=noten2[index2++]*(FS/1000);
    if(angle2==0)speed2=0;
    else speed2=255;
    MotorSpeed(speed1,speed2);

    cli(); // stop all interrupts
    while(timer1!=0)
    {
    timer1--;
    timer2--;

    if(timer1==0)
    {
    angle1=(uint32_t)noten1[index1++]*65536/FS;
    timer1=noten1[index1++]*(FS/1000);
    if(angle1==0)speed1=0;
    else speed1=255;

    MotorSpeed(speed1,speed2);
    }

    if(timer2==0)
    {
    angle2=(uint32_t)noten2[index2++]*65536/FS;
    timer2=noten2[index2++]*(FS/1000);
    if(angle2==0)speed2=0;
    else speed2=255;

    MotorSpeed(speed1,speed2);
    }
    phase1+=angle1;

    if(phase1&0x8000) dir1=FWD;
    else dir1=RWD;

    phase2+=angle2;

    if(phase2&0x8000) dir2=FWD;
    else dir2=RWD;
    MotorDir(dir1,dir2);

    // sync with Timer2 ( 31250Hz )
    while(!(TIFR&(1<<TOV2)));
    TIFR|=TIFR&(1<<TOV2);
    }
    MotorSpeed(0,0);
    sei(); // enable all interrupts
    Ich hoffe man kann mir weiterhelfen
    Gruß Hiroaki

Berechtigungen

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

LiFePO4 Speicher Test