- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 9 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 90

Thema: ASURO DDS

  1. #31
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Anzeige

    Powerstation Test
    Hallo zusammen,
    da ich auch ein Asuro-Musiker werden wollte, gibt es hier auch mal etwas von mir.
    Nachdem ich da so ein paar Noten eintippen wollte, meine Frau aber erst stundenlang nach der Schreibweise in den Notenblättern ausquetchen musste und mein Sohn dann die Geduld aufbrachte mir die ersten Noten zu übersetzen habe ich beschlossen nicht auf den 'guten Ton', sondern auf 'mehr Ton' umzusatteln.
    Eigendlich sollte "The entertainer" eure Ohren erreichen, nun sind es die ersten beiden Notenzeilen, und die noch falsch,
    ---> aber dafür verbrauche ich nun pro Note nur noch EIN BYTE, und nicht mehr VIER BYTE.

    Das zumindest wollte ich euch nicht vorenthalten.

    Kleiner Tipp, für die, die es nocht nicht wissen: Wenn man beim abspielen die Zahnräder mit den ODO-Scheiben leicht festhält, dann ist das Scheppern gerade im Bass-Bereich gut zu unterdrücken.

    P.S.: Beim Einschalten des Asuros unbedingt die Ohren zuhalten.
    P.P.S.: Weitere Erklärungen sind im Source enthalten. Is ja schon spät geworden
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

  2. #32
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    16
    Zitat Zitat von Sternthaler
    Oder sind da eher die bösen, böösen, bööööösen Spiele am PC, die zu ihm hin ziehen?
    So böse sind die auch nicht!
    Aber vor allem sind es andere foren die midh zu ihm ziehen

  3. #33
    Erfahrener Benutzer Begeisterter Techniker Avatar von M1.R
    Registriert seit
    02.06.2007
    Ort
    Freiburg
    Beiträge
    213
    Hallo Sternthaler,

    Zitat Zitat von Sternthaler
    aber dafür verbrauche ich nun pro Note nur noch EIN BYTE, und nicht mehr VIER BYTE.
    super!
    Zitat Zitat von Sternthaler
    Kleiner Tipp, für die, die es nocht nicht wissen: Wenn man beim abspielen die Zahnräder mit den ODO-Scheiben leicht festhält, dann ist das Scheppern gerade im Bass-Bereich gut zu unterdrücken.
    guter Tipp!

    // Werte von B7 und H7 getauscht, da falsch definiert.
    // Neue Toene von H2 bis AS4, und C8
    // C8 weil es am Klavier die letzte Taste ist.
    // Runter bis H2, da dann genau 62 Toene plus _OFF und STOP-Code vorhanden sind.
    // Die Formel: RUNDEN (25,957 * EXP (0,0577620678 * [Tonnummer]); 0) ergibt
    // fehlerfrei die passende Frequenz.
    // Die [Tonnummer] ergibt sich aus: [Tonindex] + 25
    // Der Tonindex beginnt bei 0, und somit die Tonnummer bei 25 mit dem Ton A2,
    // da dies laut http://www.sengpielaudio.com/Rechner-notennamen.htm nun mal
    // so ist.
    // Die Toene mit den Tonnummern 1 bis 25 sind auf der Bass-Seite vom Klavier
    // auch noch vorhanden, koennen aber hier nicht mehr dargestellt werden, da
    // sonst mehr als 64 Toene/_OFF/STOP und somit mehr als 6 Bits benoetigt
    // wuerden. Dies geht aber nicht, da die restlichen 2 Bits fuer die Tondauer
    // benutzt werden.
    Mit deiner Hilfe wird der ASURO ja noch zum Profi-Musiker!

    Nun mal eine dumme Anfänger-Frage:
    du definierst erst auf "herkömmliche" Art:
    uint16_t rechts []
    uint16_t links []
    später "sparsam":
    uint8_t rechts []
    uint8_t links []
    abgespielt wird das:
    StereoSound (rechts, links);
    mir ist nicht klar welche Variante der ASURO jetzt abspielt.

    Bei unseren Liedern gibt noch die Unterscheidung angestossene und gebundene Töne und ausserdem Triolen:

    Code:
    #define zweig 	1500  //g : gebunden
    #define vierg 	750
    #define achtg 	375
    #define triog 	250
    
    #define einsa 	2980  // a : angestossen
    #define zweia 	1480
    #define viera 	730
    #define achta 	355
    #define trioa 	230
    #define anst 	20   // anstoss
    
    #define _OFF 0
    #define STOP 0
    
    //-------------------------------------------------------------------------------------------------
    //amzaing grace 1.Stimme
    
    uint16_t amazing_grace_1[]={
    	C5,achtg,
    	F5,achtg,
    
    	_OFF,anst,
    	F5,zweia,
    
    	_OFF,anst,
    	A5,trioa,
    	G5,triog,
    	F5,triog,
    
    	_OFF,anst,
    	A5,zweia,
    
    	_OFF,anst,
    	A5,achta,
    	G5,achtg,
    	
    	_OFF,anst,
    	F5,zweia,
    
    	_OFF,anst,
    	D5,viera,
    
    	_OFF,anst,
    	C5,zweia,
    
    //-------------------------------------------------------------------------------------------------
    	
    	_OFF,anst,
    	C5,achta,
    	F5,achtg,
    
    	_OFF,anst,
    	F5,zweia,
    
    	_OFF,anst,
    	A5,trioa,
    	G5,triog,
    	F5,triog,
    
    	_OFF,anst,
    	A5,zweia,
    
    	_OFF,anst,
    	G5,achta,
    	A5,achtg,
    
    	_OFF,anst,
    	C6,zweia,
    	C6,zweig,
    	C6,vierg,
    
    //-------------------------------------------------------------------------------------------------
    
    	_OFF,anst,
    	A5,achta,
    	C6,achtg,
    
    	_OFF,anst,
    	C6,zweia,
    
    	_OFF,anst,
    	A5,trioa,
    	G5,triog,
    	F5,triog,
    
    	_OFF,anst,
    	A5,zweia,
    
    	_OFF,anst,
    	A5,achta,
    	G5,achtg,
    
    	_OFF,anst,
    	F5,zweia,
    
    	_OFF,anst,
    	D5,viera,
    
    	_OFF,anst,
    	C5,zweia,
    
    //-------------------------------------------------------------------------------------------------
    
    	_OFF,anst,
    	C5,achta,
    	F5,achtg,
    
    	_OFF,anst,
    	F5,zweia,
    
    	_OFF,anst,
    	A5,trioa,
    	G5,triog,
    	F5,triog,
    
    	_OFF,anst,
    	A5,zweia,
    
    	_OFF,anst,
    	G5,viera,
    
    	_OFF,anst,
    	F5,zweia,
    	F5,zweig,
    	F5,vierg,
    
    	STOP,STOP
    	
    
    };
    
    //-------------------------------------------------------------------------------------------------
    //amzaing grace 2.Stimme
    
    uint16_t amazing_grace_2[]={
    	C5,achtg,
    	A4,achtg,
    
    	_OFF,anst,
    	A4,zweia,
    
    	_OFF,anst,
    	C5,trioa,
    	H4,triog,
    	A4,triog,
    
    	_OFF,anst,
    	C5,zweia,
    
    	_OFF,anst,
    	C5,achta,
    	DES5,achtg,
    	
    	_OFF,anst,
    	D5,zweia,
    
    	_OFF,anst,
    	H4,viera,
    
    	_OFF,anst,
    	A4,zweia,
    
    //-------------------------------------------------------------------------------------------------
    	
    	_OFF,anst,
    	C5,achta,
    	A4,achtg,
    
    	_OFF,anst,
    	A4,zweia,
    
    	_OFF,anst,
    	C5,trioa,
    	H4,triog,
    	A4,triog,
    
    	_OFF,anst,
    	C5,zweia,
    
    	_OFF,anst,
    	E5,achta,
    	F5,achtg,
    
    	_OFF,anst,
    	E5,zweia,
    	E5,zweig,
    	E5,vierg,
    
    //-------------------------------------------------------------------------------------------------
    
    	_OFF,anst,
    	F5,achta,
    	A5,achtg,
    
    	_OFF,anst,
    	A5,zweia,
    
    	_OFF,anst,
    	F5,trioa,
    	C5,triog,
    	D5,triog,
    
    	_OFF,anst,
    	C5,zweia,
    
    	_OFF,anst,
    	DES5,viera,
    	
    	_OFF,anst,
    	D5,zweia,
    
    	_OFF,anst,
    	H4,viera,
    
    	_OFF,anst,
    	A4,zweia,
    
    //-------------------------------------------------------------------------------------------------
    
    	_OFF,anst,
    	C5,achta,
    	A4,achtg,
    
    	_OFF,anst,
    	A4,zweia,
    
    	_OFF,anst,
    	C5,trioa,
    	H4,triog,
    	A4,triog,
    
    	_OFF,anst,
    	C5,zweia,
    
    	_OFF,anst,
    	H4,achtg,
    
    	_OFF,anst,
    	A4,zweia,
    	A4,zweig,
    	A4,vierg,
    
    
    	STOP,STOP
    };
    Die Originalfunktion von robo.fr ist ohne blinkende LEDs.
    Diese habe ich laienhaft (nach dem Prinzip Versuch u. Irrtum) eingebaut.
    Vielleicht kannst du dir das mal anschauen und evtl. verbessern (die StatusLED geht immer erst nach dem ersten Ton an.)? - Wäre nett!

    Gruss
    M.

  4. #34
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo M1.R,
    es gibt keine dummen Fragen, nur dumme Antworten.

    Zitat Zitat von M1.R
    du definierst erst auf "herkömmliche" Art: ...
    mir ist nicht klar welche Variante der ASURO jetzt abspielt.
    Such mal im Source nach "USE_FREQUENCE".
    Hinter dem Versions-Kommentar sind 2 alternativ zu verwendende Zeilen:
    //#define USE_FREQUENCE JA
    #undef USE_FREQUENCE
    Wenn du nun weiter im Source sucht, tauchen die Stellen Code auf, die dann alternativ beim compilieren übersetzt werden. Somit wird bei der hier vorgenommenen Einstellung nur das übersetzt, was hinter den 'unscheinbaren' #else-Zeilen im Code steht.
    Schreibst du:
    #define USE_FREQUENCE JA
    //#undef USE_FREQUENCE
    dann werden die Teile hinter "#ifdef USE_FREQUENCE" (bis zum #else) kompiliert.

    Zitat Zitat von M1.R
    Bei unseren Liedern gibt noch die Unterscheidung angestossene und gebundene Töne und ausserdem Triolen:
    Ach du meine Güte. Davon hat mir meine Frau gar nichts gesagt.
    Tut mir leid das geht so nun nicht bei meiner aktuellen Version.
    Wenn ich mir die von dir angegeben Defines ansehe, beziehen sich die Namen (angestossen, ..) ja auf die Tonlängen.
    Genau hier habe ich aber nur 2 Bit's zur Verfügung und somit eben nur 4 verschieden Zeitmöglichkeiten.
    Mal sehen, ob man die Daten pro Note 'irgendwie' auf 10 oder 11 Bit's erweitern kann. (Natürlich komprimiert, so dass man nicht 2 Byte verbraucht) Dann hätte man für die Zeitangaben 4 oder 5 Bit's (16 oder 32) Zeitangaben zur Verfügung.

    P.S.: Ist schon toll, was ihr mit Noten zaubert. Geduld, Wissen und ein gutes Ohr fehlen mir da für die Musik.
    P.P.S.: Die Blinkefunktion ist doch ganz in Ordnung. Aber mal sehen, was da noch zu 'verbessern' ist.

    Bis später.
    Lieber Asuro programieren als arbeiten gehen.

  5. #35
    Erfahrener Benutzer Begeisterter Techniker Avatar von M1.R
    Registriert seit
    02.06.2007
    Ort
    Freiburg
    Beiträge
    213
    Hallo Sternthaler,
    Zitat Zitat von Sternthaler
    #define USE_FREQUENCE JA
    //#undef USE_FREQUENCE
    dann werden die Teile hinter "#ifdef USE_FREQUENCE" (bis zum #else) kompiliert.
    aha! danke!

    meine Led - Blinkerei scheint doch nicht richtig zu funktionieren:
    bei deinem Lied bleibt die rechte BackLED immer an, obwohl in deiner rechten Melodie auch OFF-Töne sind.
    Eigentlich sollte die Rechte nur bei rechten Tönen, die Linke nur bei linken Tönen leuchten... ???

    ganz toll wäre auch noch die Lautstärke zu definieren
    wie hier: void Sound(uint16_t freq, uint16_t duration_msec, uint8_t amplitude);
    und wenn dann noch der letze Ton leiser werden würde...

    Gruss
    M.

  6. #36
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo M1.R,
    ich bin bis jetzt noch nicht dazu gekommen nach den LED's zu sehen. Es kann aber natürlich sein, dass ich bei meiner Version etwas kaputt gemacht habe und die LED deshalb jetzt nicht mehr ausgeht. Bitte noch etwas Geduld.

    Wo hast denn du den Funktionsaufruf her?
    Amplitude bei den Motoren kann ich mir ja jetzt nur über verschiedenen Motor-Leistungen vorstellen.
    Wenn das Sinn macht, bleibt nur noch die Frage wie viele Lautstärkestufen sollen es den sein?
    2 Bit wären da eine datentechnisch gute Lösung.
    - 6 Bit Frequenz (62 Möglichkeiten; 1 Ton aus; 1 Stop)
    - 4 Bit Dauer (16 Möglichkeiten. Müsten auch deine angestossenen Töne beinhalten)
    - 2 Bit Lautstärke (Also 4 Möglichkeiten + Ton aus)
    ------
    = 12 Bit bzw 1,5 Byte. Damit kann man relativ einfach komprimieren.
    Lieber Asuro programieren als arbeiten gehen.

  7. #37
    Erfahrener Benutzer Begeisterter Techniker Avatar von M1.R
    Registriert seit
    02.06.2007
    Ort
    Freiburg
    Beiträge
    213
    Zitat Zitat von Sternthaler
    Wo hast denn du den Funktionsaufruf her?
    Lib 2.7: asuro.h - sound.c

    Code:
    void Sound (
      uint16_t freq,
      uint16_t duration_msec,
      uint8_t  amplitude)
    {
      uint16_t n,k,wait_tics;
      uint32_t period_usec,dauer_usec;
    
      period_usec = 1000000L / freq;
      dauer_usec = 1000 * duration_msec;
      k = dauer_usec / period_usec;
    
      //IR Interuptfreq=36KHz
      //Wavefreq=18KHz
    
      wait_tics = 18000 / freq;
    
      MotorSpeed (amplitude, amplitude);
    
      for (n = 0; n < k; n++)
      {
        MotorDir (FWD, FWD);
        Sleep (wait_tics);
        MotorDir (RWD, RWD);
        Sleep (wait_tics);
      }
      MotorSpeed (0, 0);
    }
    
    #define BEEP sound (1000, 100, 255)
    Gruss
    M.

  8. #38
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Peinlich
    Genau die LIB beacker ich ja mit.
    (Mal nachsehen, ob ich dafür die Kommentare geschrieben/formatiert habe. --> Leider ja. Sound scheint bis vor kurzem nicht so mein Hauptaugenmerk gewesen zu sein. Immerhin war meine Vermutung schon ganz gut, dass es über die Motorleistung geht.)

    Was ist mit den 2 Bit? Würden dir die reichen?
    Lieber Asuro programieren als arbeiten gehen.

  9. #39
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    So, eine neue Version.
    Ich habe mal ein bisschen 'ausgemistet' und einiges in H-Dateien verlegt.
    Ausserdem ist diese Version AKTUELL NICHT allgemein zu nutzen, sondern soll nur 4 verschiedene Lautstärken demonstrieren.
    Die Lautstärke kommt noch nicht aus den Daten zu jeder einzelnen Note, sondern wird erst mal nur als Parameter an die Funktion StereoSound() weitergegeben.

    Die Blinkerei mit den LED's beginnt nun auf alle Fälle schon mit der ersten Note.
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

  10. #40
    Erfahrener Benutzer Begeisterter Techniker Avatar von M1.R
    Registriert seit
    02.06.2007
    Ort
    Freiburg
    Beiträge
    213
    Hallo Sternthaler,
    Zitat Zitat von Sternthaler
    So, eine neue Version
    du bist aber schnell!
    Zitat Zitat von Sternthaler
    Was ist mit den 2 Bit? Würden dir die reichen?
    Da es mir ebenso geht wie dir
    Zitat Zitat von Sternthaler
    Geduld, Wissen und ein gutes Ohr fehlen mir da für die Musik
    bin ich in dieser Hinsicht leider vollkommen abhängig von meinem Sohn. Er wird sagen können, wieviele verschiedene Lautstärken man braucht. Bis morgen abend ist er allerdings noch weg.

    Um rauszufinden, ab welcher "Geschwindigkeit" man überhaupt etwas hört, habe ich ein Testprogramm (nur 1 Motor) geschrieben.
    Mit "bloßen" Ohren höre ich ab ungefähr 20 etwas. Mit Mikro und Verstärker schon ab 1!

    Code:
    // lautstärke test
    
    #include "asuro.h"
    
    void Sound1(uint16_t freq, uint16_t duration_msec, uint8_t amplitude)
    {
       uint16_t wait_tics;
       uint32_t n,k,period_usec,dauer_usec;
    
       period_usec=1000000L/freq;
       dauer_usec=1000*(uint32_t)duration_msec;
       k=dauer_usec/period_usec;
    
       //IR Interuptfreq=36KHz
       //Wavefreq=18KHz
    
       wait_tics=18000/freq;
    
       MotorSpeed(amplitude, 0);
    
       for(n=0;n<k;n++)
       {
          MotorDir(FWD,FWD);
          Sleep(wait_tics);
          MotorDir(RWD,RWD);
          Sleep(wait_tics);
       }
       MotorSpeed(0,0);
    
    }
    
    
      
    int main(void)
    
    {
      Init();
    
      	BackLED(ON,ON);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 1);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 2);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 3);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 4);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 5);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 6);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 7);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 8);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 9);
    	BackLED(OFF,OFF);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 10);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 20);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 30);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 40);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 50);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 60);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 70);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 80);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 90);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 100);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 110);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 120);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 130);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 140);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 150);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 160);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 170);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 180);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 190);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 200);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 210);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 220);
    	StatusLED(YELLOW);
    	Sound1 (1000, 1000, 230);
    	StatusLED(GREEN);
    	Sound1 (1000, 1000, 240);
    	StatusLED(RED);
    	Sound1 (1000, 1000, 250);
    	
    	StatusLED(OFF);
    
    
    
      	while (1);
      	return 0;
    }
    nochmal zu unseren gebundenen und angestoßenen Tönen:
    für jede Tonlänge gibt es ja beide Varianten, wobei sich der angestoßene Ton aus zwei Tönen zusammensetzt: 20ms aus und dann Länge angestoßen = gebundener Ton - 20ms.

    Das bedeutet, dass man in der Melodie für die angestoßenen Töne immer zwei Töne schreiben muss.

    Beispiel:
    #define vierg 750 //viertel gebunden
    #define viera 730 //viertel angestoßen
    #define anst 20 //Anstoßzeit = Differenz

    Ein angestoßener Ton::
    _OFF,anst,
    F5,viera,

    Vielleicht fällt dir hierzu ja auch noch eine Vereinfachung ein?

    Gruss
    M.

    PS: Wenn es dir gelingt, den ASURO gleichzeitig während er Musik macht auch noch fahren zu lassen, bekommst du von mir einen ASURO-MUSIK-ORDEN!

Seite 4 von 9 ErsteErste ... 23456 ... LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress