Pieptoene erzeugen mit einem Atmega8

Gast #3166846
Hallo an euch alle


Ich hoffe ihr koennt mir weiterhelfen, ich moechte ein Programm 
schreiben welches einfache Pieptoene erzeugt.

Ich hab schon ein kleines Programm geschrieben allerdings sind die Toene 
keine Pieptoene sondern leider sehr stumpfe Toene, hat vlt einer eine 
Idee wie ich solche Toene hinkriege? Die Toene sollten der einer 
Einparkhilfe gleichen.
1
#include <avr/interrupt.h>
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5
int main(void)
6
{
7
  DDRC |= (1<<PC0);
8
  TCCR1B |= (1<<WGM12);
9
  
10
  OCR1A = 15624;
11
  
12
  TCCR1B |= ((1<<CS10) | (1<<CS11));
13
  
14
  for(;;)
15
  {
16
    if(TIFR&(1<<OCF1A))
17
    {
18
      _delay_us(1);
19
      PORTC ^= ((1<<PC0));
20
      _delay_ms(1);
21
      
22
      TIFR = (1 << OCF1A);
23
      
24
    }
25
  
26
    
27
    
28
    
29
        
30
    }
31
}
Das wird schwierig.

Das Problem ist, dass die Klangfarbe durch die Form der Schwingung 
bestimmt wird. Momentan erzeugst du eine Rechteckschwingung. Das ist 
zwar einfach zu machen, klingt aber zugegebenermassen eher bescheiden. 
Der Aufwand, im µC eine andere Kurvenform zu erzeugen ist nicht ohne und 
dann bleibt immer noch die Frage, wo nimmst du eigentlich eine andere 
Kurvenform her und wie klingt die?

http://www.mikrocontroller.net/articles/Klangerzeugung
Gast
schade, ich hab mir das am Anfang sehr einfach vorgestellt aber dann 
merkte ich dass es doch nicht so ganz ohne ist.

danke schoen Hr.Buchegger, Sie haben mir schon sehr oft geholfen.
Du hängst an den PWM Ausgang einen Tiefpass.
Dann legst du dir ein Array an, das grobe Werte einer Sinus-Schwingung 
beinhaltet.
Mit einem Timer-Interrupt lädts du dann nacheinander die Werte des 
Arrays in dein PWM-Modul, wodurch du am Ende eine Sinus-Schwingung am 
Ausgang hinbekommst und somit eine schöner konstanter Ton.

Natürlich kannst du in das Array auch eine x-beliebige Tonfolge ablegen 
oder einfach ein WAV-File rein laden und dieses dann mit dem Timer 
abspielen lassen. (Gewünschtes 8-bit WAV-File mit einem Hex-Editor 
öffnen, geeigneten Bereich suchen und in ein Array kopieren)
Heimcomputer der 80er Jahre und die ersten Soundkarten für PC's hatten 
zur Tonerzeugung einen FM Synthese Chip. Vielleicht kannst Du so einen 
Chip irgendwo bekommen.

http://http://de.wikipedia.org/wiki/AdLib

Wenn es schöner klingen soll kommt auch die Wavetable Synthese mit Hilfe 
eines Midi Synthesizers in Frage. Den kann man ganz einfach direkt an 
die serielle Schnittstelle anschließen. Es gab mal preisgünstige Midi 
Karten als Add-On für Soundblaster. Die haben eine ganz simple 
Anschlusbelegung (+5V, Serieller Port, Audio Ausgang). Vielleicht kannst 
Du so eine Karte günstig ersteigern.

http://en.wikipedia.org/wiki/Creative_Wave_Blaster

Diese Midi Synthesizer gibts auch and Standalone Gerät.
Gast
>Vielleicht kannst Du so einen Chip irgendwo bekommen.
>http://http://de.wikipedia.org/wiki/AdLib

Man kan ein Problem schon mir Hardware lösen. Allerdings geht es heute 
vermutlich mit Software billiger:

http://www.roboterclub-freiburg.de/atmega_sound/atmegaSID.html

>Wenn es schöner klingen soll kommt auch die Wavetable Synthese mit Hilfe
>eines Midi Synthesizers in Frage.

>Die Toene sollten der einer Einparkhilfe gleichen.

Ein Midi Synthesizer für eine Einparkhilfe ist eine lustige Idee ;-)

Die Wavetable für das Piano hier lässt sich relativ einfach durch eine 
Wavetable für ein "Piep", "Ping", "Klack" oder Chirp ersetzten:
http://www.hobby-roboter.de/forum/viewtopic.php?f=5&t=141

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.