Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projects:ehaserl [2011/12/29 19:54] wanda |
projects:ehaserl [2012/09/19 01:18] (aktuell) wanda |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== ehaserl ====== | + | ====== EHaserl ====== |
+ | ---- datatemplateentry project ---- | ||
+ | template : :sys:tpl:project | ||
+ | description : Spielen mit dem EHaserl des easterHacks in München | ||
+ | coordinators : [[:users:wanda:]], [[:users:samaki:]] | ||
+ | confidants : [[:users:skruppy:]] | ||
+ | state_tags : working, in progress | ||
+ | type_tags : elektro, software, AVR, ehaserl, C | ||
+ | ---- | ||
===== Löten ===== | ===== Löten ===== | ||
* Vorderseite: https://brezn.muc.ccc.de/~schneider/badge/board/brd-top1.png | * Vorderseite: https://brezn.muc.ccc.de/~schneider/badge/board/brd-top1.png | ||
Zeile 41: | Zeile 50: | ||
* CPU: 8-bit AVR | * CPU: 8-bit AVR | ||
=== Pins === | === Pins === | ||
- | {{:atmega88p.png?350|}} | + | {{::atmega88p.png?350|}} |
- | {{:pins.png?350|}} | + | {{::pins.png?350|}} |
=== Ports === | === Ports === | ||
- | {{:ports.png?400|}} | + | {{::ports.png?400|}} |
== leds == | == leds == | ||
* RR - Pin 12 - PD6 (Rot rechts) | * RR - Pin 12 - PD6 (Rot rechts) | ||
- | * RL - Pin 15 - PB1 (Rot links) | + | * RL - Pin 15 - PB1 (Rot links) - PWM möglich |
- | * GL - Pin 16 - PB2 (Grün links) | + | * GL - Pin 16 - PB2 (Grün links) - PWM möglich |
* GR - Pin 17 - PB3 (Grün rechts) | * GR - Pin 17 - PB3 (Grün rechts) | ||
- | {{:leds.png?300|}} | + | {{::leds.png?300|}} |
- | == Taster == | + | == Taster (an den Ohren) == |
Von der Rückseite aus betrachtet: | Von der Rückseite aus betrachtet: | ||
* SL - Pin 14 - PB0 (Ohr links - das Kleine) | * SL - Pin 14 - PB0 (Ohr links - das Kleine) | ||
* SR - Pin 13 - PD7 (Ohr rechts - das Große) | * SR - Pin 13 - PD7 (Ohr rechts - das Große) | ||
+ | == Piezo == | ||
+ | * PIEZO - Pin 18 - PB4 | ||
+ | == Lichtsensor == | ||
+ | * LIGHT - Pin 24 - PC1 | ||
+ | ===== C-Programme: Wie macht Fisch eigentlich... ===== | ||
+ | ==== Töne mit dem Piezo ==== | ||
+ | Infos sind aus: http://www.infolexikon.de/blog/atmega-music/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **1) Töne sind**...was?!\\ | ||
+ | Töne können weitgehend durch Sinus-Wellen erzeugt werden. Töne liegen wohl irgendwo zwischen 200Hz und 1,5kHz. Eine einzige __Sinus-Welle__, ein sauberer __8-bit Ton__! | ||
+ | |||
+ | **2) PWM** (PulsWeitenModulation) \\ | ||
+ | **Wichtig zum Verständnis**: die PWM ändert ihre Frequenz NIE, NIEMALS! Alles was sich ändert, sind die Pulsweiten, also die high/low-Phasen, in denen der Ausgang (z.B. Atmega8: PB1=OCR1A...Problem: beim ehaserl ist hier nicht der Piezo, sondern eine LED dran...schade!) getoggelt wird. Die PWM besitzt einen Counter, der ständig hochzählt, bei 8 bit von 0 bis 255.\\ | ||
+ | Um die Pulsweite zu bestimmen, kann man nun einen Vergleichswert setzen. Ist dieser 0 gibt es keine high-phase, ist er 255, gibt es nur high-phasen.\\ | ||
+ | **Beispiel**: Bei 128 sind die high-phasen z.B. genauso lang wie die low-phasen.\\ | ||
+ | |||
+ | **3) Wie** stell ich das an?\\ | ||
+ | Den Sinus im Atmega ausrechnen zu lassen würde die ganze Rechenzeit auffressen, der ist einfach nicht schnell genug für sowas.\\ | ||
+ | Also erstellt man erstmal eine Tabelle für die Sinus-Werte, und die wird dann direkt ins Programm kodiert, so muss der Atmega nur noch i.d. Tabelle für die Werte nachschauen. | ||
+ | |||
+ | **Frequenz-Tabelle**: | ||
+ | <code c> | ||
+ | // Noten-Frequenzen, | ||
+ | // berechnet für 8Mhz und PWM ohne Prescaler | ||
+ | #define c 542 | ||
+ | #define cis 574 | ||
+ | #define d 608 | ||
+ | #define dis 644 | ||
+ | #define e 682 | ||
+ | #define f 722 | ||
+ | #define fis 765 | ||
+ | #define g 810 | ||
+ | #define gis 858 | ||
+ | #define a 908 | ||
+ | #define b 962 | ||
+ | #define h 1019 | ||
+ | </code> | ||
+ | \\ | ||
+ | Zum Vergleich: die wirklichen **Ton-Frequenzen**\\ | ||
+ | http://de.wikipedia.org/wiki/Frequenzen_der_gleichstufigen_Stimmung | ||
+ | (Frequenz/2=wert aus tabelle) | ||
+ | \\ | ||
+ | \\ | ||
+ | => **Folge**:\\ | ||
+ | Die Modulation __wirkt wie__ eine Sinus-Spannung (obwohl es nur ein Wechsel von an und aus ist)\\ | ||
+ | Bild (PWM und Sinus): \\ | ||
+ | {{::pwm.png?300|}} | ||
+ | \\ | ||
+ | (Bild-Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Pwm.png&filetimestamp=20060323084447#file) | ||
+ | \\ | ||
+ | Weitere Infos:\\ | ||
+ | http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29\\ | ||
+ | http://www.arduino.cc/en/Tutorial/PlayMelody | ||
+ | ==== LED-Fading ==== | ||
+ | Weil im eHaserl eine PWM nur an den beiden Augen möglich ist - nicht beim Piezo. |