Anbei meine Türklingel als Einsteigerprojekt mit minimalem Hardwareaufwand (ATTINY45, Batterie, PC-Lautsprecher, Kleinkram). Viel Spaß beim Nachbauen! egberto
Hallo egberto, gestern Abend habe ich dein Projekt mal nachgebaut. Mit einem tiny85. Leider wollte sich das eeprom-file nicht laden lassen (der Inhalt des Eeproms stimmt nach dem Laden nicht mit dem der Datei überein). Die Ursache ist mir im Moment nicht bekannt. Ich habe dann kurzerhand den Inhalt des eeproms in den pgm_space verbannt - und so läuft das Teil. Michael S.
Hast du das EEPROM File aus dem zip genommen oder selbst compiliert? Da das EEPROM des attiny85 ja doppelt so groß ist wie das des Tiny45 liegt es ja eventuell daran (mal versucht als Devicetyp tiny45 trotz des Tiny85 einzustellen?) Frohes Fest egberto
Hallo egberto, ich habe unter der aktuellen avr-gcc das Projekt neu kompiliert. Es gelingt mir aber nicht, mit avrdude das eep-file zu auf den tiny85 zu übertragen (es ist unvollständig und die Daten passen nicht zueinander). Ich arbeite allerdings auch zum ersten Mal mit dem tiny85. Zunächst habe ich avrdude im Verdacht .. Allerdings könnte ich auch selbst einen Fehler machen .. Übrigens hatte ich im letzten Jahr an ähnlicher Übung herumgebastelt. Wie üblich aber nicht zu einem Ende gebracht. Aber dabei hatte ich auch einige "Musik"-Samples gesammelt. Vielleicht kann ich die ja auf dein "Format" übertragen. Nun wirklich ein frohes Fest. Michael S.
Ich kenne deinen Programmer + avrdude nicht -> wenn das Programm anläuft wird sofort im EEPROM ein neuer SEED geschrieben (also eine Zelle verändert), falls also die Software die Resetleitung nach dem Brennen und vor dem Kontrollesen kurz wieder frei gibt, sind EEPROM Inhalt und eep file an einer Stelle verschieden-> das kann man getrost ignorieren. Frohes Restfest
Hallo egberto, deine "Klingel" ist eigentlich zu schade, um sie nur als Klingel und per Zufallsauswahl zu betreiben. Daher habe ich ihr einen USI/TWI-Slave zur Seite gestellt. Nun lassen sich gezielt via TWI die Melodien abrufen. Das Array der Noten habe ich so umgeordnet, dass jedes Lied ein eigenes Array darstellt. Ein Array von Pointern (auf die Liedarrays) ermöglicht den Zugriff auf jedes der Lieder. Die Länge eines Liedes ist in seinem ersten Byte abgelegt. Damit wird das Ändern von Liedern einfacher, es muss nicht jedesmal der Zeiger auf den Liedanfang manuell neu berechnet werden. Eine weitere eingebaute Option: Man kann per TWI einen "Notensatz" verschicken, der dann vom USI-Slave abgespielt wird (gedacht zum Testen von neuen Melodien). Viel Spaß beim Komponieren ... mfg Michael S.
Hallo Michael S, sehr hübsch (ich habe allerdings keinen Plan, wie ich das praktisch nutzen sollte) und ein gute Beispiel für dieses ganze USI geraffel. Ein kleiner Nachteil- man braucht einen ATTINY85 an Stelle des ATTINY45, kann dann allerdings noch an den Melodien feilen (oder PWM, Hüllkurven etc. machen). Viele Grüße, egberto
hallo egberto, die leidige Frage nach dem Sinn - manchmal ist ja auch der Weg das Ziel. Nun, ich bastele seit einiger Zeit an diversen Modulen mit der Gemeinsamkeit, dass sie alle über eine TWI-Schnittstelle miteinander kommunizieren könn(t)en. Angefangen hat es mit dem Ersatz des PCF8575 durch ein ATTINY2313. Dann folgte eine Tastatur (in diesem Fall mit einem PCF8575), ein RGB-Dimmer, ein über TWI angesprochenes LCD-Display, Schalter, die über IR schnurlos geschaltet werden können, US-Entfernungsmesser, RS232-TWI Interface etc. Und ein TWI-Master, der alles ansteuert, der wollte natürlich auch noch entstehen. Die Weihnachtszeit habe ich genutzt, um noch eine DCF-Uhr - und deine Klingel an den Bus zu bringen. In Hausbussystemen kenne ich Akustikmodule, die z.B. bei offenstehender Haustür "Die Haustür steht auf ... Die Haustür steht auf ..." vor sich her plappern. Die "Klingel" könnte ähnliche akustische Hinweise geben. Etwa wie eine Kirchturmglocke die Zeit ansagen. Oder Warnzeichen für auf programmierte Termine geben. Also irgendwie als akustische Komponente in einem Bus-System arbeiten. Mehr weiss ich auch noch nicht ... mfg Michael S.
Hallo Michael, war ja auch nicht als Kritik gedacht - ich brauchte halt nur ein schnelles Geschenk für meine Neffen, die wohl nie erfahren werden (mangels Interesse) was TWI oder ATTINY ist. Deine TWI "Sammlung" klingt interessant, hast du das irgendwo veröffentlicht und dokumentiert? Viele Grüße, egberto
hallo egberto, leider habe ich (mindestens) eines deiner Lieder [#9] zerschossen. Es fehlt die Geschwindigkeit an 2. Position. Ist in der lied.h behoben. Ausserdem habe ich zum "Abtippen" von Noten einige Konstanten deklariert, so dass man die codierten "Noten" eingeben kann als Summe von Tondauer und Note. Das habe ich praktisch an drei kleinen Melodien ausprobiert. Sie sind in separaten Daten definiert und werden anstelle von Lied #5, #11 und #12 includiert. Findet sich alles in der lied.zip. mfg Michael S.
Hallo Michael, sehr schön, jetzt wird die Lied-Geschichte so langsam "benutzbar", ich habe das damals mit einem Konverter aus Nokia RTTL Klingeltönen konvertiert und für die C-Control dann zusammen "geklatscht". Die Qualität der "Lieder" ist auch sehr durchwachsen (um es mal positiv auszudrücken). Hast du eigentlich deinen PCF8575 Emulator schon hier irgendwo gepostet? Da hätte ich großes Interesse dran, da ich mit TWI noch nix gemacht habe. Schönes Wochenende, egberto
Hallo egberto, ich habe es nicht lassen können und noch einige Stücke aus dem "Songbook" eines Keyboards abgetippt (sind angehängt). Allerdings werden dabei auch langsam die Grenzen des Verfahrens erkennbar. Angesichts des minimalen Aufwandes (1 tn85, 2 Transistoren + 1 Elko) ist das Ergebnis aber ganz passabel. Den PCF8575 Emulator kann ich dir gerne posten. Eigentlich hast du ihn schon (in der USI-Klingel), allerdings in der Version für den tn25. Der hat aber nur 3 freie PortPins (8 - vcc - gnd - sda - scl - reset = 3). Wenn's 8 Pins sein sollen, dann könnte man den tiny26 oder tiny2313 nehmen. Für letzteren habe ich einen funktionierenden Code. Folgt ... mfg Michael S.
hallo egberto, hier folgt der PCF8575a-Emulator. Was ich übrigens an der TWI-Thematik reizvoll finde ist, dass man sich Hardwarekomponenten wie Softwaremodule erstellen kann und bei Bedarf miteinander kombiniert. Das wird am Beispiel eines LCDs jedem deutlich: Ein LCD an einen mc anzuflanschen bedeutet immer, reichlich viele Strippen zu ziehen und viel Programmcode für den Treiber zu vergeuden - und lange nach dem oder den Fehler(n) zu suchen. Ein LCD - auf TWI-Basis, einmal aufgebaut, wird an den Bus angeschlossen und funktioniert. Auf dem LCD-Display ist genug Platz etwa für Balkengrafiken, verschiedene Fonts, Beeper etc. (da kommt mir ja glatt eine Idee ...). Auf dem Master auf der anderen Seite bleibt erfreulich viel benutzbarer Speicher, die 2kB Flash der kleinen AVR's waren fast immer ausreichend. Das man aus diesen Komponenten gar ein (eingeschränktes) Hausbussystem machen könnte, ist nur ein willkommener Nebeneffekt. mfg Michael S.
Vielen Dank!! kannst du ja noch als eigenen Beitrag in der Codesammlung posten, damit man es besser wieder findet ! Schönes Wochenende
Hallo. Hab diesen thread gelesen und finde ihn interessant. Leider Gottes bin ich zu sehr Laie um das jetzt nachzubauen. Aber ich würds gerne. Soll heissen: Ich habe einen Programmer für PIC's ich habe ein paar: 16F628 rumliegen. Mangels wissen und etwas mehr zeit, habe ich aber noch nie so richtig damit erfahrungen sammeln können. Dies könnte ich doch evtl. verwenden um endlich in die Materie zu kommen. Als reine bastel Variante. Ist es möglich einen PIC 16F628 dafür zu verwenden? Noch was: wie geht das dann? PS: Besonderes Interesse habe ich deshalb, weil "Michael S." geschrieben hat: Man kann dies ding dann evtl. ansteuern und Texte ausgeben wie: "Die Tür steht offen" usw. Denn ich habe eine Haussteuerung. An die kann man alles ran machen. 1-wire, Funk FS20, USB oder serielles, und was es alles so gibt. Damit könnte ich doch glatt über dein Weihnachtsprojekt, also die Klingel, sowas ausgeben wie: "Sie haben eine EMAIL erhalten", oder "Im Bad ist die Luftfeuchtigkeit zu hoch" etc. etc. ...Aber zunächst würde ich mal wahnsinnig gerne einfach nur dein eigentliches Projekt nachbauen. Aber mittels PIC, denn hierfür habe ich alles daheim. wie siehst du das? MfG, Jürg
@ Jürg: Das hat er nicht geschrieben. (Man kann natürlich alles selber bauen, mit Zeit, Geld und Know-How.) Hier Audio mit PIC: http://www.youtube.com/watch?v=kDwGq29n3X0 http://www.romanblack.com/picsound.htm
Hallo, ich habe auch versucht den Code auf einem ATtiny85 zum laufen zu bringen. Lieder gibt der tiny85 nur einen Ton aus. Wer hat denn einen Tipp? Das macht der avr-gcc.
1 | avr-gcc -mmcu=attiny85 -Os -g -Wall -I. -c Klingel-ATTINY.c |
2 | avr-gcc -mmcu=attiny85 -Os -g -Wall -I. -Wl,-Map,Klingel-ATTINY.map,--cref -o Klingel-ATTINY.out Klingel-ATTINY.o |
3 | text data bss dec hex filename |
4 | 4034 240 1 4275 10b3 Klingel-ATTINY.out |
5 | avr-objcopy -O ihex -j .text -j .data Klingel-ATTINY.out Klingel-ATTINY.hex |
Dieses Projekt kommt wie gerufen !!!! aber ich hätte eine Bitte an Euch.... Ich benutze Bascom und mit C kenne mich garnicht aus.habe auch keinen Compiler..könnte jemand , für die Leute die diese Schaltung "nur" nachbauen möchten eine HEX File bereitstellen ? Wäre supper !!! Danke !!
Nachtrag : tiny2313 oder Atemaga8 habe ich genügend da...aber wenn es ein bestimmte AVR sein soll wegen der Hex Datei ist auch kein Problem..
Fast perfekt..nun die Frage, der Optokoppler ( angegeben im Plan OK1 oder so ) ist ganz schön gross..kann ich einen IC nehmen ? sowas ? http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A55;GROUPID=3046;ARTICLE=2514;START=0;SORT=artnr;OFFSET=500;SID=30TK6-an8AAAIAAErlzr0fd7a7fb317ec9ec85d51f8b6617d828a
@Uwe S. Fuse CKDIV8? @Thomas Kiss Ist ziemlich egal, wenn du R vergößerst (mal mit 33k testen, hängt von deiner Klingelspannung ab) kannst du zur Not auch einen Transistor nehmen. Wenn du direkt einen Taster anschließen kannst, einfach am AVR Pin gegen Masse und Optokoppler Diode und R weglassen. Viel Erfolg, Mirko
Hallo, hier nun meine lauffähige Klingel für den ATtiny85. Es stehen noch Daten im EEPROM, die hatte ich vergessen. Mit dem neuen Makefile wird alles richtig erzeugt ! Das Script "prog.sh" kann beim Programmieren helfen. Viel Spaß.
@Uwe S. Danke, das hilft hier einigen bestimmt. @Thomas Kiss Nachtrag: Den Optokoppler habe ich eigentlich nur drin, um bei langen Leitungen Störungen zu vermeiden (es wird ja quasi mit Strom und nicht mit Spannung geschaltet). Außerdem gibt es eine Potentialtrennung zum Klingelkreis (ist z.B. hilfreich, wenn man die Klingel auch über den Klingeltrafo mit Strom versorgen will). Den Optokoppler hatte ich noch liegen, war so ein altes DDR-Teil. Viele Grüße, Mirko
Auch wenn der Tiny da viel zu klein sein wird, schwirrt mir da grad so eine dumme Idee im Kopf rum die ich mal kundtun wollte :-) Wenn man das ganze jetzt mit einem Fingerabruckscanner statt einer Klingeltaste machen würde, könnte man ja eigentlich verschiedenen Fingerabdrücken eine Melodie zuweißen g So wüßte man schon anhand der Klingelmelodie wer vor der Tür steht :-) Auch könnte man zwischenspeichern wer wann in den letzten 2-3 Tagen geklingelt hat. Allerdings denk ich mal das ein AVR dafür nicht wircklich geeignet wäre Fingerabrücke in einer annehmbaren zeit zu vergleichen.
Byte schrieb: > Allerdings denk ich mal das ein AVR dafür nicht wircklich geeignet wäre > > Fingerabrücke in einer annehmbaren zeit zu vergleichen. Normalerweise wird in diesen Scannern schon die Intelegenz eingebaut und diese geben dem Prozessor bescheid wer da gescannt wurde. Aber es gibt ein paar Dinge die du bedenken solltest. Wie stellt man sicher, dass jeder mitbekommt, dass er den Finger über den Sensor ziehen soll und nicht nur drücken? Traditionell sind die Klingeltaster außen angebracht. Will man wirklich im Winter die Handschuhe ausziehen, nur um zu klingeln? Will man überhaupt, dass bei einem fremden Haus sein Fingerabdruck gescannt wird? Wie verhält sich der Scanner bei wechselnden Witterungen?
Hallo egberto, ich habe deine herrliche Klingel nachgebaut und als Wohnungsbimmel verwendet. ( mein Chinamodel mit Vogelgezwitzscher hatte sich verabschiedet ) ein Layout könnte ich bei Bedarf hochladen ( ca 4 x 2cm ) bei der "Vorlage" von Hannes Lux gefällt mir, das es eine "Batterie-Leer-Meldung" gibt. Könnte das noch jemand in den Tiny packen? :) Ich habe leider dazu keine Ahnung heul Ich betreibe das ganze mit 3x AA Batterien und würde mich mindestens nach ein paar Jahren wundern, wenn mich keiner mehr besucht :) aber wenns nicht mehr bimmelt ... kann ich auch keinem öffnen. na jetzt bin ich mal gespannt :) liebe Grüsse Hermann
p.s. ich habe überigens die "Originalversion" mit Tiny45 gebaut.
>last minute Weihnachtsgeschenk
Ihr macht eine Panik.
Also ich hab noch keine Geschenke besorgt ......
Hallo Hermann, Da noch Geist rein zu stecken, habe ich eigentlich keine Lust (Zeit), du hast ja den Quelltext von mir und die Vorgehensweise von Hannes Lux - eigentlich super Voraussetzungen sich mit der Materie zu beschäftigen (bei Fragen wird dir gern geholfen!). Du solltest dann allerdings auf einen tiny85 ausweichen, es kommt ja noch Code hinzu und der tiny45 ist ziemlich voll. Viel Erfolg, Mirko(egberto)
Noch ein Nachtrag: wenn wenigstens alle paar Wochen jemand bei dir klingelt, solltest du während des Klingelns merken, wenn die Batterie zusammenbricht. Ich habe leider da auch noch keine Erfahrungen, die Klingel meiner Neffen tut es nach über 3 Jahren immer noch wie am ersten Tag (mit den gleichen 3x AA Alcaline). Schönes WE, egberto
Hallo Mirko, wenn das Teil 3 Jahre lang läuft - lohnt der Aufwand wirklich nicht! Wenn Sie nicht mehr ordentlich bimmelt ( hiert eher melodiert :) werden die Batterien/ Akkus getauscht -fertig. ich baue mittlerweile das 3te Model davon: 1x Wohnungsklingel 1x Sohnemann ( Baumhaus ) 1x auf Lager zum gelegentlichen Verschenken. anbei mal 2 Bildchen Danke für das schöne Projekt :)
Danke für das witzige kleine Projekt! Habe es schnell mit einem Tiny85 auf einem Steckbrett aufgebaut und die fertigen Dateien aus dem aller ersten Post genommen. Programmiert habe ich mit dem "mySmartUSB light" und der zugehörigen Software. Hat problemlos geklappt. Als kleine Änderung habe ich einen Taster dran gebaut und ein Poti vor den Lautsprecher, da es mir zu laut war. Macht wirklich Spaß den Knopf zu drücken und die Melodien durch zu hören. Vielleicht kommt sie doch als Klingel an die Wohnungstür oder irgendwie als Rätsel (Melodienraten?) in einen Geocache... :-)
Mal eine kleine Elektronik-Anfängerfrage. Warum braucht man kein Basis-Vorwiderstand bei der Ausgangsstufe?
hallo, Zuerst mich ich mich bei egberto, Uwe S. (de0508) und den anderen Usern die sich hier im Thread beteiligt haben bzw. die Schaltung und die Software zur Verfügung gestellt haben bedanken. Die Jugendgruppe des DARC OV Waiblingen hat die Klingel auf Lochrasterplatinen nachgebaut. Ihr hab damit auch aktiv die Jugendarbeit unterstützt! Eine kleine Doku mit Video der Aufbauvariante die wir gewählt haben findet Ihr hier: => http://www.dl8ma.de/jugendarbeit/melodienklingel Gruss Jürgen
Hallo Jürgen, super, ich hatte das Projekt, ich glaube vor 2 Jahren bei unserer OV Weihnachtsfeier dabei, das war auch lustig. 73, Uwe DOK F07
DL8MA schrob:
>Zuerst mich ich mich bei egberto....
Ach, Du Dich auch?
;-)
Flücht
MfG Paul
ups :-( das sollte natürlich "Zuerst möchte ich mich ..." lauten ... danke für den Hinweis. Leider kann ich das jetzt nicht mehr ändern :-( Gruss Jürgen, DL8MA
Ein sehr schönes Projekt. Der ARM-Dip ist vielleicht etwas überdiemensioniert für die Klingel, aber trotzdem lustig anzuhören. Beitrag "Re: Arm Synthesizer mit LPC1114"
hallo, Die Melodien-Türklingel mit dem ATTiny85 wurde inzwischen ja auch von anderen DARC-Jugendgruppen aufgebaut. Im HamCamp auf der HAMRadio 2013 in Friedrichshafen ( http://www.hamcamp.de) wollen wir den Aufbau einer solchen Melodienklingel als Bastelaktion anbieten. Dazu wird es eine einseitige Leiterplatte geben. Der erste Entwurf ist fertig. Nach einem Testaufbau geht die Vorlage an einen Leiterplattenhersteller. Da wir hier im Forum die Anregung für dieses nette Projekt bekommen haben möchten wir jetzt als kleines Dankeschön interessierten User anbieten sich an unsere Leiterplattenbestellung anzuschliessen. Gegenüber der Grundversion ist diese Version flexibler und etwas erweitert bzw. vereinfacht: * zweiter Taster * ev. noch eine LED * kleines Lochrasterfeld * Wegfall des Optokopplereingangs Denkbar ist damit z.B. eine kleine Steuerung die mit den zwei Tasten und einer Treiberschaltung auf dem Lochrasterfeld etwas ansteuert Oder, oder, oder ... Diese Erweiterungen ermöglicht es uns die selbe Platine später bei anderen Projekten einzusetzen. Infos zur Leiterplatte dazu gibt es hier: => http://www.dl8ma.de/jugendarbeit/melodienklingel/leiterplatte.php Gruss Jürgen, DL8MA
Danke Jürgen, viel Erfolg auf der HamRadio 2013 ich kann leider nicht kommen. 73, Uwe
hallo, sodele - das Layout ist jetzt in der V 1.0 soweit fertig. Jetzt noch ein Testaufbau und dann kann es zum Leiterplattenfertiger. Die aktuelle Version ist hier zu sehen: => http://dl8ma.de/jugendarbeit/melodienklingel/leiterplatte.php Wer bei der Sammelbestellung mitmachen möchte kann sich noch bis heute spät abend bei mir melden. Gruss Jürgen
hallo, die Leiterplatte ist fertig. Die ersten Musterschaltungen wurden aufgebaut. Ab Donnerstag können die Teilnehmer des HamCamps auf der HamRadio in Friedrichshafen dann diese nette Bastelprojekt aufbauen. Bilder von der bestückten Leiterplatte findet man hier: => http://www.dl8ma.de/jugendarbeit/melodienklingel/leiterplatte.php Jürgen, DL8MA http://www.DL8MA.de
hallo, die Bastelaktion mit der Melodienklingel ist im HamCamp auf der HamRadio in Friedrichshafen gut angekommen. Einer der Teilnehmer hat die Klingel kurzerhand "missbraucht" und eine amerikanische Polizeisirene programmert und damit einen Kettcar den wir für einen Wettbewerb da hatten ausgerüstet :-) Ich hab hier mal zwei Bilder von der Bestückungsvariante "Melodienklingel" angehängt. Weitere Infos wie z.B. den Bestückungsplan findet man hier: => http://www.dl8ma.de/jugendarbeit/melodienklingel/leiterplatte.php Gruss Jürgen, DL8MA http://www.DL8MA.de
Hallo zusammen, finde ich ein super Projekt! Hab es bereits nachgebaut und funktioniert einwandfrei. Jedoch bräuchte ich es ein wenig lauter. Wie kann ich das am einfachsten bewerkstelligen? Einfach den gleichen Emitterfolger noch ein zweites Mal dahintersetzen? Für Tipps wäre ich sehr dankbar! Viele Grüße und ein schönes Restwochenende. Selina
Eigentlich ist das Teil ja schon recht laut.. am einfachsten wäre erst mal ein größerer Lautsprecher (aus altem Radio oder so). Hintereinanderschalten kann man die Endstufen nicht, man könnte dort mit höherer Spannung arbeiten, aber dann muss man die Stromversorgung und die Bauelementedimensionierung neu überdenken.
Guten Morgen, ich würde gerne mal die Schaltung nachbauen. Weiß aber nicht genau welche Codes die Richtigen sind. Ich habe jetzt das Melodienklingel V 1.1 von Jürgen (DL8MA) im Auge. Welcher Code ist dafür der Richtige? lg Daniel
Wenn du einen Attiny 45 nimmst oder selber die Quellen compilierst, kannst du die Originaldateien nehmen, für Attiny 85 hat Uwe S. das wohl angepasst (durch den doppelt so großen Speicher muss man dort keine Tabellen mehr im EEPROM ablegen). Schönes Rest-WE, Egberto
Ist meine Ansteuerung falsch oder ist es normal das das so klingt? Habe ich eventuell einen unpassenden Lautsprecher? https://dech.rs-online.com/web/p/einbau-lautsprecher/4318658/?searchTerm=431-8658&relevancy-data=636F3D3126696E3D4931384E525353746F636B4E756D6265724D504E266C753D656E266D6D3D6D61746368616C6C26706D3D5E5C647B337D5B5C732D2F255C2E2C5D5C647B332C347D2426706F3D313426736E3D592673743D52535F53544F434B5F4E554D424552267573743D3433312D383635382677633D4E4F4E4526 Kann mal jemand von euch eine Melodie hochladen?
Hi, so klingt es aus meinem Empfänger manchmal auch. Keiner weiß was Du da gemacht hast, ein Bild und Schaltplan etc. wären toll. Liegt vielleicht an der Taktfrequenz... resp. Vorteiler.
Der Lautsprecher ist ok, hast du alle (CKDIV8 !!) Fuses richtig gesetzt?? Viele Grüße, Egberto
Anbei mein Schaltplan. Die Fuses habe ich Online mit diesem Tool gewählt: http://www.engbedded.com/fusecalc Anbei ein Bild wie ich es eingestellt habe. Beim Programmieren ergibt das folgende Kommandozeile:
1 | avrdude -p attiny85 -B 5 -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m -c usbasp -U flash:w:Klingel-ATTINY.hex -U eeprom:w:Klingel-ATTINY.eep |
Tut mir Leid falls irgendwelche Infos fehlen. Das ist das erste mal das ich einen AVR benutze. Grüsse Edit: Auf dem Schema sind die Power Pins vertauscht ich weiss. Das habe ich auf dem PCB korrigiert.
:
Bearbeitet durch User
Ok, die Fuses sind Low aktiv - im Text zur Klingel steht CKDIV8 "ausschalten", also auf High setzen -bei dir also Haken raus! Weiterhin fehlt der "Siebelko" in der Spannungsversorgung, ich hoffe, du arbeitest nicht mit Batterie! So 470u bis 1000u würde ich aber trotzdem vorsehen. Viele Grüße, Egberto
Ein Siebkondensator ist vorhanden. Jedoch ist dieser im Schemaausschnitt nicht zu sehen. Super. Mit den richtigen Fuses klingt es richtig gut =). Danke für diese tolle Projekt. Grüsse
Hallo, wie viele Ampere sollen da fließen ? Etwa 1 Ampere ? Egberto schrieb: > So 470u bis 1000u würde ich aber trotzdem > vorsehen. Der Wert ist viel zu groß.
Im Original ist der komplementäre Emitterfolger ohne Widerstand in Serie zum Lautsprecher ausgeführt. Bei Batteriebetrieb benötigt man dann den kräftigen Elko an der Versorgungsspannung, damit die Spannung für den uC nicht zusammenbricht. An einem Labornetzgerät ist das natürlich kein Problem, aber z.B. An einem Steckernetzteil ist es vom Design her einfach besser, die Versorgungsspannung etwas zu puffern. Viele Grüße, Egberto
Hallo ich bin neu hier. Ich habe die Schaltung nachgebaut. Ich habe die EEP und HEX Datei mit Batego II von Batronix in den Chip gebrannt. Leider höre ich nur ein Ton. Irgendwie kriege ich den Chip nicht am Laufen. Mit Fuses habe ich auch schon herumprobiert. Hat jemand da ein Tipp? Grüsse
Ja, das habe auch probiert. Einmal höre ich ein 50HZ Ton und deaktiviert ein ca. 400HZ Ton. Ich überlege mir das Starterkit STK500 zu kaufen. Das Kit wird doch den Chip unterstützen? Danke für die schnelle Antwort. Grüße an egberto
EEP File wurde bei mir nicht übertragen. Dann kommt auch nur ein langer Ton. Oder zufall was im eeprom halt noch drin stand.... Habe aber alles für den attiny85 compiliert... Anderen atiny?
:
Bearbeitet durch User
@Egberto und alle "Liedermacher" Herrliche Spielerei. Vielen Dank dafür. Ich singe jeden 2 Song mit. "Arbeit? Welche Arbeit? ;)"
:
Bearbeitet durch User
Da ich nicht der begabteste im Noten lesen bzw Melodien vorstellen bin, aber auch nicht immer alles neu flashen wollte, habe ich passend zum verwendeten Format ein kleines Perlskript geschrieben, dass über den System-Speaker die Melodie ausgibt. Die Anwendung ist denkbar einfach:
1 | ./play.pl <<<"66,1,0,136,128,107,128,72,64,72,141,136,134,136,128,111,128,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200,192,82,143,141,139,200,171,72,64,72,141,136,134,200,175,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200" |
bzw
1 | ./play.pl 66,1,0,136,128,107,128,72,64,72,141,136,134,136,128,111,128,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200,192,82,143,141,139,200,171,72,64,72,141,136,134,200,175,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200 |
2 | ^D |
Hallo zusammen, ich habe eine Frage zu diesem Projekt. Ich würde die Klingel gerne nachbauen, habe aber wenig Erfahrung in programmieren von Mikrocontrollern. Dazu kommt, dass ich den ATtiny gern über einen Arduino programmieren würde. Die konkrete Frage ist bei mir also:Wie muss ich den Code ändern und wie bekomm ich die Lief.H datei in den Speicher des Attiny. Grüße Basti
Attiny85 u. Arduino: http://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren
@chris_:Als wäre es damit getan einen Link zu posten. Dort fehlt ja noch der ganze Code für den Melodienteil. Also muss da noch einiges umgeschrieben werden. Und dann noch die Frage ob das dann noch alles so da rein passt, weil Arduino ja auch noch einen Bootloader benötigt. Ich würde eher sagen, erstmal die grundlagen von arduino lernen und dann langsam an silche Projekte herantrauen.
>Anbei meine Türklingel als Einsteigerprojekt mit minimalem Hardwareaufwand (ATTINY45, >Batterie, PC-Lautsprecher, Kleinkram). Attiny 45: 4k Flash Attiy 85: 8k Flash Bootloader: 2.5k
Hallo Chris und Jörg, Danke für die schnelle Antwort. Der Link ist schon etwas hilfreich, hab andere Tutorien dazugefunden, die waren aber nicht so gut geschrieben, und wenn der ATTiny85 wollte ich erst mal den Test mit LED blinken ausprobieren. Mit dem Arduino kann mir ein Bekannter helfen, es geht wenn ich mit meinen jetzigen Kenntnissen nicht weiter komme. Bin jetzt nur mit dem Bootloader etwas verwirrt. Der Arduino braucht den und wird dann als ISP verwendet, daher dachte ich wird der Bootloader nicht auf den ATTiny übertragen. Bis ich den ATTiny habe, kann ich mich erst mal um das Umschreiben des Code kümmern, dafür muss ich den nur erst mal Zeile für Zeile Analysieren und verstehen. Schon mal vielen Danke Ich melde mich wieder wenn ich es geschaft habe oder konkrette Probleme habe.
>Der Arduino braucht den und wird dann als ISP verwendet, daher dachte >ich wird der Bootloader nicht auf den ATTiny übertragen. Den Arduino kann man als reinen ISP-Programmierer verwenden. Wenn Dir jemand ein HEX-File für den Attiny85 macht, kannst Du es direkt flashen. Dann muss auch kein Code umgeschrieben werden. Wenn Du aber wirklich mit der IDE Code für den Tiny schreiben willst, dann muss das ganze wohl auf die Arduino-Lib angepasst werden.
GEHT NICHT: usi_klingel Beitrag "Re: Klingel mit 100 Melodien - last minute Weihnachtsgeschenk" Michael S. (Gast) usi_klingel_090108.zip (29,1 KB, 1642 Downloads)
1 | >make |
2 | |
3 | -------- begin -------- |
4 | avr-gcc (GCC) 4.9.2 20141224 (prerelease) |
5 | Copyright (C) 2014 Free Software Foundation, Inc. |
6 | This is free software; see the source for copying conditions. There is NO |
7 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
8 | |
9 | |
10 | Compiling C: klingel_inc.c |
11 | avr-gcc -c -mmcu=attiny85 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/klingel_inc.lst -std=gnu99 -Wundef -MD -MP -MF .dep/klingel_inc.o.d klingel_inc.c -o obj/klingel_inc.o |
12 | In file included from klingel_inc.c:11:0: |
13 | lied.h:43:9: error: variable 'ton' must be const in order to be put into read-only section by means of '__attribute__((progmem))' |
14 | uint8_t ton[] PROGMEM = |
15 | ^
|
16 | lied.h:93:9: error: variable 'L1' must be const in order to be put into read-only section by means of '__attribute__((progmem))' |
17 | uint8_t L1[] PROGMEM = {66,1,0,136,128,107,128,72,64,72,141,136,134,136,128,111,128,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200,192,82,143,141,139,200,171,72,64,72,141,136,134,200,175,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200}; |
18 | ^
|
19 | In file included from klingel_inc.c:11:0: |
20 | lied.h:97:9: error: variable 'L2' must be const in order to be put into read-only section by means of '__attribute__((progmem))' |
21 | uint8_t L2[] PROGMEM = {39,2,65,3,3,67,131,65,65,65,65,4,4,68,132,67,67,67,65,3,3,67,131,65,65,65,65,4,4,68,132,67,66,65,77,236,72,70,232}; |
22 | |
23 | |
24 | [... und so weiter ...] |
25 | |
26 | ^
|
27 | Makefile:539: die Regel für Ziel „obj/klingel_inc.o“ scheiterte |
28 | make: *** [obj/klingel_inc.o] Fehler 1 |
Okay, jetzt geht es. hab überall das gewünschte const hingeschrieben. Und utf-8 iss cool deshalb hab ich noch: for file in *.h *.c Makefile;do iconv -f latin1 -t utf-8 "$file" -o "${file}";done über die Dateien rübergebügelt.
chris schrieb: >>Anbei meine Türklingel als Einsteigerprojekt mit minimalem Hardwareaufwand > (ATTINY45, >Batterie, PC-Lautsprecher, Kleinkram). > > Attiny 45: 4k Flash > Attiy 85: 8k Flash > Bootloader: 2.5k Das geht noch einen Tick kompakter - siehe Bild im Anhang. - der Tiny10 hat massig Platz: 1k Flash 16 Byte Register 32 Byte SRAM - ca. 200 Maschinenbefehle für den Tongenerator, inkl. Framework und Sensorauswertung - um einen Piezo-Piepser anzusteuern, braucht's nur vier Bauteile, auf dem freien Platz kann ein Transistortreiber nachbestückt werden
Na dann, wir warten auf deine Umsetzung ;-) (aber die 100 Melodien müssen auch drin sein!) Viele Grüße, Egberto
Hallo zusammen, Hab den ATTiny85 endlich erhalten. Habe den Arduino als ISP verwendet und mit WinAVR in Programmer's Notpad kompiliert. Nach dem ich die Zeilen:
1 | int ANZ; |
2 | unsigned char *lied; |
3 | unsigned int *liedofs; |
angefügt hatte ließ es sich das Programm auch Kompilieren und auf den ATTiny schreichben. Nach dem die Klingel nicht funktioniert habe ich ein Blink-test mit LEDs durchgeführt, d.h. Programm geschrieben, kompiliert und die LED blinken. Meine Vermutung ist, dass bei meinen Aufbau mit den BC327 und BC337 etwas nicht stimmt. Kann ich dieses einfacher nachprüfen als die Kennlinien für die Bauelemente aufzunehmen? Oder habe ich eine andere Fehlerquelle übersehen? Grüße Basti
Die Schaltung kannst Du ohne die Transistoren testen, wenn Du einen Orhörer oder Piezo direkt am Ausgang des Attiny anschließt.
Wenn du das ohne deine Anpassung nicht compilert bekommst, stimmt was nicht! Wurde die header Datei (lied.h oder so) auch mit eingebunden? Grüße, Egberto
Hallo zusammen, dann kann ich hier nur mal die Ausgabe von WinAVR einstellen. Meine Vermutung ist, dass ich etwas nicht korrekt eingestellt habe. Habe selbst dazu wenig gefunden was mir direkt weiter hilft. Ich habe versucht die Version von Michael S. mit der geänderten lied.h Datei und weitern Anhänge hineinzuladen.
1 | -------- begin -------- |
2 | avr-gcc (WinAVR 20100110) 4.3.3 |
3 | Copyright (C) 2008 Free Software Foundation, Inc. |
4 | This is free software; see the source for copying conditions. There is NO |
5 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
6 | |
7 | |
8 | Compiling C: Klingel-ATTINY.c |
9 | avr-gcc -c -mmcu=attiny85 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./Klingel-ATTINY.lst -std=gnu99 -MMD -MP -MF .dep/Klingel-ATTINY.o.d Klingel-ATTINY.c -o Klingel-ATTINY.o |
10 | Klingel-ATTINY.c: In function 'MyRandGet': |
11 | Klingel-ATTINY.c:72: error: 'ANZ' undeclared (first use in this function) |
12 | Klingel-ATTINY.c:72: error: (Each undeclared identifier is reported only once |
13 | Klingel-ATTINY.c:72: error: for each function it appears in.) |
14 | Klingel-ATTINY.c: In function 'main': |
15 | Klingel-ATTINY.c:123: error: 'liedofs' undeclared (first use in this function) |
16 | Klingel-ATTINY.c:124: error: 'ANZ' undeclared (first use in this function) |
17 | Klingel-ATTINY.c:124: error: 'lied' undeclared (first use in this function) |
18 | make.exe: *** [Klingel-ATTINY.o] Error 1 |
19 | |
20 | > Process Exit Code: 2 |
Die Klingel gibt zwar geräusche von sich, aber keien die nach einer Meldoie klingen, oder gar auf den Taster reaktieren. Ein umstöpseln der Kopfhörer bringt keine Änderung. Beste Grüße Basti
@Basti Irgendwie kann ich bei der Error Meldung des gcc gar nicht glauben das hier irgendwas an Programm herausgekommen ist. Vielleicht solltest du nochmals deine komplette Buildumgebung mit deinem Blinkprogramm überprüfen. Die Fehlermeldungen sollten dir schon alle Hinweise liefern.
Sorry, ich bin z.Z. Nur mit Ipad/Handy unterwegs(Urlaub!!!!!!), kann also kein zip etc aufmachen. In der Erinnerung sind ANZ etc Konstanten in dem Header File, dein Build Process scheint irgendwie nicht ok zu sein. Nimm doch erstmal die Hex Files hier aus dem Forum zum Test, dann kanst du dich rantasten. Grüße, Egberto
Egberto schrieb: > Sorry, ich bin z.Z. Nur mit Ipad/Handy unterwegs(Urlaub!!!!!!), kann > also kein zip etc aufmachen. Doch, kannst du z.B. mit der GoodReader App aufmachen und reinschauen. ;)
Uwe S. schrieb: > Egberto schrieb: >> Sorry, ich bin z.Z. Nur mit Ipad/Handy unterwegs(Urlaub!!!!!!), kann >> also kein zip etc aufmachen. > > Doch, kannst du z.B. mit der GoodReader App aufmachen und reinschauen. > ;) Im Urlaub würde ich mir das nicht antun ?
@Jörg Das Buildprogramm bricht natürlich schon ab bei diesen Fehlermeldungen, nur Egberto sagte, dass das Programm ja unmodifiziert laufen sollte nicht das ich die Variabeln noch difinieren müsste, wenn ich die definiere läuft das compilieren und ich kann den code auf den Attiny schieben. Ich werde noch mal versuchen ein BlinkProgramm zu schreiben @Egberto Mit den Hex-files ist dort nicht das problem, dass die für den Attiny 45 und nicht den 85 geschrieben sind? Ansonsten muss ich gleich nur schnell googeln wie ich die hex-files direkt verwende. Noch mal danke für die Hilfe
Hallo, hab noch mal rumgespielt. Das Blinken funktioniert hab es jetzt auch über den WinAVR geschrieben, und mit der selben Make-Datei verwendet. Das Flashen mit den Hex-files: Gelingt mir nicht oder ich stell mir eventuell etwas flasches vor. Sollte nur ein Make-file haben oder erzeugen und dann im Programm auf Programmieren clicken um die schon vorhandenen Hex-File zu verwenden oder? Bei diesen Versuch tretten Fehler auf, die ich nicht behebe kann. Da mit der ursprung nicht klar ist(hatte den compilervermutet und geändert und ähnliches im make-file konnte es nicht beheben; avrdudeport ist auf com6 umgestelltum die komunikation mit dem Arduino aufzubauen) Hab nur statt den 470µF einen 300µF kondensator und bei den BC337 udn BC327 bin ich mir nur sicher das es sich um pnp bzw npn Transitoren handelt, die Aufschrieft fehlt. Die Fehler habe ich erst mal unberücksichtiggelassen, da das Signal was am kopfhörer ankommt sich nicht verändert wenn ich über die schaltung gehe oder direkt am ausgang zum ground nur die kopfhörer verwende. Grüße Basti
Schönes Mini-Projekt! Gibt es eigentlich eine Titelliste - bei meinen musikalischen Fähigkeiten habe ich Probleme, die eine oder andere Melodie zu erkennen. Grüsse Mego
Nein - wie oben irgendwo beschrieben, habe ich das mal (vor vielen Jahren) aus hunderten Nokia Klingeltönen (RTTL) extrahiert und die halbwegs brauchbaren verwendet - damals für die C-Control I. Du kannst hier ja ein Quiz starten - so nach dem Motto: Wer kann mir am schnellsten sagen, was Lied Nr. 65 ist... ;-) Grüße, Egberto
Ich habe die Schaltung nachgebaut aber es tut nichts linkt es am ATtiny 45 Code Können sie mir da helfen Grüsse
:
Bearbeitet durch User
Was hast du denn alles gemacht? Du musst das hex und das eep file in den Chip flashen sowie die CKDIV8 Fuse verändern. Viele Grüße, egberto
Ich habe nur den Hex Code hochgeladen im ATtiny 45 Was muss ich noch machen Gruß
Hallo, steht da - auch das eep file brennen und die Fuse setzen (wie das genau geht, hängt von deinem Programmer ab) Viele Grüße, egberto
Ich Programmiere mit dem myAVR Prog Tool und mit AVR Studio 6 oder geht die Schaltung nicht mit Attiny 45 oder brauche ich einen anderen Attiny Ich kenne nicht so gut aus Gruß Wer kann mir da helfen
Die Schaltung ist für einen Attiny 45. Eventuell hilft dir der Link unten ja weiter. Im letzten Bild unter EEPROM muss dann das .eep File ausgewählt werden. http://wiki.fichtelbahn.de/doku.php?id=programmer:programmer_avrstudio Grüße, Egberto
Egberto schrieb: > Die Schaltung ist für einen Attiny 45. > > Eventuell hilft dir der Link unten ja weiter. > > Im letzten Bild unter EEPROM muss dann das .eep File ausgewählt werden. > > http://wiki.fichtelbahn.de/doku.php?id=programmer:programmer_avrstudio > > Grüße, > > Egberto Nach über acht Jahren und inzwischen über 8000 Downloads und weil es sonst bisher wohl niemand für notwenig gehalten hat: HERZLICHEN DANK für das Programm mit den enthaltenen Notendaten! Egberto, da hast Du damals wirklich ein schönes kleines Anfängerprojekt gepostet. Ich selbst hatte mir die ZIP Datei mal vor fünf Jahren heruntergeladen, als ich mit Arduino angefangen habe. Damals hatte ich das Programm auf Arduino UNO (Atmega328) portiert, und dank der guten Dokumentation des Datenformats war das auch überhaupt kein Problem. Heute habe ich mir die Arduino-Portierung mal auf ein Arduino-kompatibles Board gezogen und mal wieder reingehört: Eine Vielzahl alter bis uralter Melodien Keine ganzen Lieder, sondern mehr kurze Tonfolgen mit Intros von vorwiegend alten Fernsehserien, aber auch Schlagern vergangener Tage. Teils nur Fragmente mit ganz wenigen Noten. Auf die Rückfrage wegen einer Titelliste aus dem Jahr 2015 ist ja niemand angesprungen, daher auf die schnelle nur mal ein paar, die ich sofort wiedererkannt habe: #3 „Ausgerechnet Bananen,Bananen verlangt sie von mir! #10 Pippi Langstrumpf: Zwei mal drei macht vier widdewiddewitt und drei macht neune, ich mach? mir die Welt, widdewidde wie sie mir gefällt. #13 Muppets Show: Schmeißt Euch in Frack und Fummel und Vorhang auf "Hallo" Freut euch auf Spaß und Rummel in der heutgen Muppetshow! #18 Augsburger Puppenkiste: eine Insel emit zwei Bergen und dem tiefen weiten Meer, Mit viel Tunnels und Geleisen und dem Eisenbahnverkehr , Nun, wie mag die Insel heissen, ringsherum ist schoener Strand , jeder sollte einmal reisen in das schoene Lummerland. #22; Ententanz #23: "Was wollen wir trinken, sieben Tage lang, was wollen wir trinken, so ein Durst. #24; Die ersten sieben Noten von "99 Luftballons" Hast Du etwas Zeit für mich #28: Die ersten Noten von Hans Albers "Flieger-Lied" Flieger, Grüß mir die Sonne, grüß mir die Sterne und grüß mir den Mond! #36: Toccata (Johann Sebastian Bach) #39; Erste Noten vom Intro "die Adams-Familie" #45: Popcorn #62: Jaques Offenbach Can Can #65: Intro "Dallas" #66: Thema "Das Boot" (Klaus Doldinger) #71: Griechischer Wein #78: Hey Macarena #82: Wenn ich einmal reich wär #84:Rudolph the red-nosed rendeer #91: Strangers in the night #99: greensleeves #100: Girl from Ipanema Wenn ich jetzt richtig gezählt habe, dann habe ich 20 von 100 erkannt. Wahrscheinlich kenne ich sehr viel mehr Lieder der Liste, vielleicht sogar alle. Aber bei den wenigen Noten, die da pro Lied teilweise nur angespielt werden und bei dem historischen Alter der Lieder , schon schwierig. Vielleicht wird es Zeit, dass nochmal jemand weitere 100 Melodien drauflegt? Kinderlieder, Volkslieder, weitere Weihnachtslieder außer "Dudolph dem Rentier, es sollte wohl möglich sein, noch mehr Piepsen zu lassen . Wemm ich alleine an die ganzen Intros der vielen Fernsehserien aus den 60er, 70er und 80er Jahren denke,die ich mir damals alle angesehen habe, teils noch in schwarz-weiss, ich habe hier und heute in den 100 Melodien jedenfalls erstmal neben Pippi Langstrumpf und der Augsburger Puppenkiste nur noch die Adams-Familie und das Dallas-Intro erkannt. Ein paar mehr Fernsehserien waren wohl dabei, aber so etwas prägnantes wie "Bonanza", dass sich sicher gut piepsen läßt, habe ich heute nicht herausgehört. Wenn jemand selbst reinhören möchte und ein Arduin-kompatibles Board mit Piezo-Piepser hat: Selbstverständlich stelle ich jedem Interessenten gerne auch meine Portierung des Programms auf Arduino/Atmega328 zur Verfügung. Aber von den "Melodien" bitte nicht zu viel versprechen, das sind manchmal nur ganz wenige Töne, von "99 Luftballons" beispielsweise nur exakt die ersten sieben Töne der Textzeile "Hast Du etwas Zeit für mich", und kein Deut mehr. Vielleicht könnte ich bei einem zweiten Durchhören noch ein paar weitere ernennen. Aber wenn kein Interesse besteht, dann lassen wir es weiter bei dem Stand, wie wir ihn seit über acht Jahren haben: Es sollen 100 Melodien sein, teils nur wenige kurze Noten angespielt, aber nichts genaues weiß man nicht. Anyway, ich wollte nur mal ein ganz großes DANKESCHÖN loswerden für die Bereitstellung dieses tollen Projekts"für Mikrocontroller und Piezo-Piepser" vor acht Jahren!
:
Bearbeitet durch User
Hallo zusammen. Die treat's sind ja schon etwas älter, aber für mich immer noch interessant. Und vielleicht liest das ja noch jemand und kann mir helfen, oder einen Tip geben. Leider komme ich auf keinen grünen Zweig. Mit Arduino 1.6.1 probiert mit Atmel Studio 6 probiert...nix... Arduino will den "Quelltext"(hex und oder eep Datei) gar nicht erst und Atmel auch nicht. Arduino nimmt nur eigene Dateien wie ino, ect. (Wie könnte ich denn die Dateien aus der Zip in ino oder ähnlch umwandeln?) Bei Arduino 1.6.1. über Bsp.--> und dann --> Digital --> Meldie, funktionier das zumindest über ein Arduino Mini (Atmega328p)an pin ... Ich würde wirklich gern das ganze fertig bekommen um es zu verschenken. Die Schaltung steht, nur krieg ich die Dateien nicht ins Programm um auf einen ATTiny 85 zu brennen. H i l f e!!! Danke schon mal für eventuelle Geduldsproben mit mir.
Jürgen S. schrieb: > ndern m ---bitte mal meinen Beitrag vom heutigen (24.4.2017) lesen, vllt. kommt ja da auch schon das erhoffte aha für kich. l.g. reiner
Reiner schrieb: > Leider komme ich auf keinen grünen Zweig. Mit Arduino 1.6.1 probiert mit > Atmel Studio 6 probiert...nix... > Arduino will den "Quelltext"(hex und oder eep Datei) gar nicht erst und > Atmel auch nicht. Arduino nimmt nur eigene Dateien wie ino, ect. (Wie > könnte ich denn die Dateien aus der Zip in ino oder ähnlch umwandeln?) > Bei Arduino 1.6.1. über Bsp.--> und dann --> Digital --> Meldie, > funktionier das zumindest über ein Arduino Mini (Atmega328p)an pin ... > Ich würde wirklich gern das ganze fertig bekommen um es zu verschenken. > Die Schaltung steht, nur krieg ich die Dateien nicht ins Programm um auf > einen ATTiny 85 zu brennen. > H i l f e!!! Der originale Quelltext aus 2008 ist für AtTiny45 unf NUR für AtTiny45 Mikrocontroller. Das Programm verwendet hardwarenahe pProgrammierung mit direkter Manipulation von Controller-Registern, das läuft ohne Anpassungen nirgendwoanders drauf. Die Lied.h Datei enthält circa 4000 Bytes an Daten für 100 Melodien, also im Schnitt circa. 40 Bytes pro Melodie. Mein Testprogramm für Atmega 328 mit allen 100 Melodien ist circa 8000 Bytes groß, kompiliert mit Arduino 1.81. Ein .ino Programm für die Arduino-IDE kann ich hier auf Wunsch gerne posten. Aber vorher die Frage an Dich: Funktioniert auf Deinem AtTiny85 die Arduino tone() Funktion? Bekommst Du zum Beispiel dieses Beispiel auf Deinem Attiny zum Piepsen: https://www.arduino.cc/en/Tutorial/toneMelody Wie sieht es damit aus? Und wie viele Bytes Flash-Programmspeicher sind auf dem Controller überhaupt frei, um ein Programm hineinzuladen?
:
Bearbeitet durch User
Der attiny85 ist nackt. Ich hab auch schon versucht ein Bsp. Wie hier genannt probiert, da kommt nur beim testen eine knackende Tonfolge. Also keine Melodie, auf dem UNO läuft der Test.. Ich hatte mir hier auch die zip für den 85 runtergeladen. Aber nix... Ich wäre für den download für arduino 1.6.1. Sehr dankbar. L.g.
Reiner, erkläre das mal bitte ? Was hat die Hex- und die EEP-Datei mit dem Arduino zu tun ? Aus meiner Erfahrung, wird nichts mit dem Arduino-Framework - zu langsam. Nutze einen neuen Attiny85, spiele beide Dateien auf und stelle die Fusebits ein. Ich habe dafür sogar ein Linux Shellscript erstellt: prog.sh Die Hardwarebeschaltung sieht man im anhängigen PDF.
Reiner schrieb: > Der attiny85 ist nackt. Nackt, also ohne irgendeinen Bootloader drauf? Und Programme kannst Du mit einem ISP-Programmer draufladen? Aber eine (tone() Funktion für die Arduino-IDE zum Erzeugen von Piepstönen hast Du nicht? Das ist jetzt natürlich etwas ungünstig. Du hast nix in Sachen tone() Funktion, und ich habe nix in Sachen AtTiny, womit man ohne tone() Funktion Töne machen könnte. Was würdest Du davon halten: Eine kleine Ersatzfunktion für tone() machen, die eine Rechteckfrequenz an einem Ausgang einfach in einerblockierenden Schleife erzeugt, mit delayMicroseconds() Aufrufen zwischen zwei Flankenwechseln, entsprechend der gewünschten Frequenz. Das wäre ja fast überhaupt kein Aufwand. Also eine IDE mit den Funktionen digitalWrite() und delayMicroseconds() hast Du für Deinen AtTiny Controller und kannst Programme mit diesen beiden Funktionen mit Deiner IDE schreiben und dann auch irgendwie auf den Controller laden, und sei es außerhalb der IDE mit ISP-Programmer? Was wolltest Du denn als Funktionsumfang jetzt genau haben? Exakt das, wie es hier beschrieben wurde: Ein Pin als INPUT für einen Tastschalter Ein Pin als OUTPUT für den Piezo-Lautsprecher Und wenn man den Tastschalter drückt, soll eine zufällig ausgewählte der 100 Melodien spielen? Nichts weiter, ja? Ich kann ja mal probieren, "tone()" aus meinem Sketch rauszunehmen und durch eine Ersatzfunktion zu ersetzen. Das sollte eigentlich funktionieren. Kann aber bis morgen dauern. Ich poste dann den geänderten Arduino-Code hier in den Thread hinein, und ohne tone() im Code sollte das dann auch für einen AtTiny85 in der Arduino-IDE kompilierbar sein.
Reiner schrieb: > Der attiny85 ist nackt. > Ich hab auch schon versucht ein Bsp. Wie hier genannt probiert, da kommt > nur beim testen eine knackende Tonfolge. Also keine Melodie, auf dem UNO > läuft der Test.. Ich hatte mir hier auch die zip für den 85 > runtergeladen. Aber nix... > Ich wäre für den download für arduino 1.6.1. Sehr dankbar. > OK, hier erstmal ein ganz einfaches Testprogramm, nur zum Testen, ob Dein AtTiny damit drei Töne erzeugen kann: ----- schnipp - hier fängt das Testprogramm an
1 | const byte SPEAKERPIN=9; |
2 | |
3 | void jursTone(const byte speakerPin,const int frequency, const int duration) |
4 | {
|
5 | pinMode(speakerPin,OUTPUT); |
6 | unsigned long startTime=millis(); |
7 | int halfPeriod=1000000L/frequency/2; |
8 | while(millis()-startTime<duration) |
9 | {
|
10 | digitalWrite(speakerPin,HIGH); |
11 | delayMicroseconds(halfPeriod); |
12 | digitalWrite(speakerPin,LOW); |
13 | delayMicroseconds(halfPeriod); |
14 | }
|
15 | }
|
16 | |
17 | |
18 | void dreiTonKlang() |
19 | {
|
20 | jursTone(SPEAKERPIN,660,1000); |
21 | delay(200); |
22 | jursTone(SPEAKERPIN,550,1000); |
23 | delay(200); |
24 | jursTone(SPEAKERPIN,440,1000); |
25 | delay(200); |
26 | |
27 | }
|
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | void setup() |
35 | {
|
36 | dreiTonKlang(); |
37 | |
38 | }
|
39 | |
40 | void loop() |
41 | {
|
42 | |
43 | }
|
44 | |
45 | |
46 | // ----- schnapp - Ende des Testprogramms
|
Bei jedem Start/Reset des Controllers wird in der setup() Funktion eine Dreitonfolge abgespielt: 1000ms lang 660 Hz 200 ms Pause 1000ms lang 550 Hz 200 ms Pause 1000ms lang 440 Hz - danach Pause bis zum nächsten Reset Verwendet werden nur ganz wenige Arduino-Funktionen, die Du in der IDE auch für AtTiny zur Verfügung haben solltest: - pinMode() - digitalWrite() - millis() - delay() - delayMicroseconds() Wenn das funktioniert und Du damit die Dreitonfolge auf Deinem AtTiny abspielen kannst, dann sollte das mit der 100-Melodien-Klingel vom Prinzip her auch möglich sein. Aber teste bitte erstmal die Dreitonfolge! Funktioniert das?
So guten Morgen zusammen! Nach dem Kaffee gleich ran gesetzt und probiert. Status: Die 3 Tonfolge lässt sich problemlos auf nen ATTiny85 flashen. Habe die Ports( Pin ) nur geändert auf "1" um auch die Schaltung wie hier beschrieben, zu testen. Das funktioniert soweit ganz gut. Nun zu der Frage. Es soll eine Klingel werden. Anstelle des Optokoppler, verwende ich aber ein Schaltrelais, welches beim betätigen des Klingelknopfes anzieht und somit einen Minusimpuls auf das Reset vom µC abgibt, um den AT immer wieder eine "Tonfolge --> Melodie" zu entlocken. Ob nun zufällige Wiedergabe oder immer der Reihe nach von 0 -100 ist völlig egal. Für mich wäre sogar denkbar die Titel Anzahl zu verringern und da dafür aber längere Melodien zu erhalten. Ich will ja nicht dreist sein oder klingen, da ich von schreiben solcher Programme eigentlich keine Ahnung habe, würde ich dich bitten, Deiner Kreativität freien Lauf zu lassen und überrasche mich. Vielleicht noch als Denkanstoß. Die Klingel soll dann Ihren Platz bei meiner Mutter finden, da ihr der Schrille Klingelton einer mechanischen Glocke gewaltig auf den Nerv geht. (Mutter = "älteres" Baujahr = also, ältere bekannte Melodien... Dann lass ich mich mal überraschen. Schaue heute hin und wieder mal hier rein. Ist ja fast wie Weihnachten. Hab ich was, hab ich nichts..... Danke im voraus. L.G. Reiner
Hallo Jürgen, hatte dich gestern angeschrieben wegen der Arduino Datei. besten Gruß
Reiner schrieb: > Status: > Die 3 Tonfolge lässt sich problemlos auf nen ATTiny85 flashen. Habe die > Ports( Pin ) nur geändert auf "1" um auch die Schaltung wie hier > beschrieben, zu testen. Das funktioniert soweit ganz gut. Na wunderbar! Wenn Dein AtTiny die drei Töne der Dreitonfolge abspielen kann, dann sollte es auch keine prinzipiellen Hindernisse beim Abspielen von gepiepsten "Melodien" mit mehr Tönen und mehr verschiedenen Noten geben. Nachdem inzwischen auch " bernte (Gast)" Interesse an einem Arduino-Code gezeigt hat, werde ich das Originalprogramm mal soweit konvertieren/adaptieren, so dass es auf jedem Micocontroller laufen sollte, der von der Arduino-IDE unterstützt wird, und den Code dann hier posten. > Nun zu der Frage. > Es soll eine Klingel werden. Anstelle des Optokoppler, verwende ich aber > ein Schaltrelais, welches beim betätigen des Klingelknopfes anzieht und > somit einen Minusimpuls auf das Reset vom µC abgibt, um den AT immer > wieder eine "Tonfolge --> Melodie" zu entlocken. Ob nun zufällige > Wiedergabe oder immer der Reihe nach von 0 -100 ist völlig egal. Für > mich wäre sogar denkbar die Titel Anzahl zu verringern und da dafür aber > längere Melodien zu erhalten. > Ich will ja nicht dreist sein oder klingen, da ich von schreiben solcher > Programme eigentlich keine Ahnung habe, würde ich dich bitten, Deiner > Kreativität freien Lauf zu lassen und überrasche mich. Vielleicht noch > als Denkanstoß. Die Klingel soll dann Ihren Platz bei meiner Mutter > finden, da ihr der Schrille Klingelton einer mechanischen Glocke > gewaltig auf den Nerv geht. (Mutter = "älteres" Baujahr = also, ältere > bekannte Melodien... Musikwünsche können von mir leider NICHT berücksichtigt werden. Wer selbst Lieder in dem von egberto damals erfundenen Datenformat beitragen möchte, der kann die Daten hier posten und ich kann es dann als Melodie Nummer 101, 102, 103, 104, und so weiter gerne einbauen. Aber ich setze mich nicht hin und besorge mir Notenblätter von Wunschmelodien, um diese in das Datenformat zu codieren und in Daten und Code des Programms einzubauen. Was ich machen könnte: RTTTL-Player: Wenn jemand seine Wunschmelodien hier als RTTTL-Strings postet, dann kann ich ggf. ein ANDERES PROGRAMM für Arduino hier posten, das in der Lage ist, RTTTL-Stringformat auf Piezo-Laufsprecher abzuspielen. Wunschlieder also nur für den, der auch selbst liefert: Wer als Wunschlied aus den 1920er Jahren anstelle von "ausgerechnet Bananen" (das hat egberto damals in Datenform als Melodie mitgeliefert) stattdessen "mein kleiner grüner Kaktus" gepiepst bekommen möchte und dafür einen Code braucht, der müßte die Noten dafür in einem brauchbaren Format selber liefern, also entweder im "egberto-Format" oder im "RTTTL-Stringformat". Dann will ich gerne prüfen, wie ich das in den Code einbaue. Ansonsten werde ich hier demnächst einen Arduino-Code zum Abspielen von genau denjenigen 100 Melodien bzw. Frequenz-Tonfolgen posten, die egberto im Jahr 2008 hier zur Verfügung gestellt hat. Und den Code kann sich dann jeder, der daran interessiert ist, mit der Arduino-IDE kompilieren und auf x-beliebige Atmega und ARM Cortex Controller oder auf AtTiny85 Controller hochladen, wie er Spass dran hat. Aber zum Einbau weiterer oder anderer Melodien würde ich etwas Unterstützung benötigen.
bernte schrieb: > Hallo Jürgen, > > hatte dich gestern angeschrieben wegen der Arduino Datei. > > besten Gruß Hallo, ich habe es mir hier vorgemerkt und werde in den kommenden Tagen einen Arduino-Code für eine konvertierte/adaptierte 100-Melodien-Klingel posten, der dann in der Arduino-IDE für jeden von der IDE untersützten Controller kompiliert werden kann, passend für alles: - Atmega-Controller (Atmega168, Atmega328, Atmega2560 etc. - AtTiny85 Controller - ARM Cortex - ESP8266 Controller Und wer will, kann es dann piepsen lassen Aber eben immer nur die 100 Tonfolgen, die egberto damals reingepackt hat. Wer etwas anderes als das möchte, soll selbst die Tonfolge(n) liefern, die er haben möchte. Stay tuned - den Arduino-Code hänge ich dann hier an den Thread dran.
:
Bearbeitet durch User
Super, dann warte ich auf Deinen Post mit den herkömmlichen Liedern von "ehemals" Da ich momentan in der guten Lage bin, mich langfristigen Projekten zu widmen, setze ich mich mal dran, und werde mir mit Hilfe der Vorlage von Noten aus Bernd seinem ehemaligen Post, einige Melodien zusammenstellen. Kann aber bissel dauern, den mein Notenverständnis ist gleich 2 und bei 3 fängt ein Toastbrot an zu singen. Aber ich krieg das schon hin. Hab da auch schon so ne Idee wie es gehen könnte. bernd hat ja in seiner Datei eine "txt" Datei mit "Lied". Wenn ich davon die noten mit der Frequenz nehme z.B. "C" mit 262, dann gehe ich jetzt mal davon aus, das wenn ich von dir einen Ton nehme (z.B. 440,1000) und ich die 440 durch 262 ersetze, dann den Ton "C" bekomme. (Richtig?) Notenbücher gibts ja tausende und da dann die Lieder (die einzelnen Noten)so zu setzen das es "klingt", dürfte kein Problem sein. Voraussetzung ist, das es so funktioniert wie ich mir das gerade vorgestellt habe. Vielleicht kannste ja daraus dann was machen. Mal sehen wie die Melodieklingel ankommt, wenn Sie dann bei Muttern läuft, vielleicht ist dann ja eine zweite zu Weihnachten drin, Also nein, nur ein neuer Attiny mit anderen Melodien, meine ich. In diesem Sinne voller Erwartungen auf den "Download" L.G. Reiner
Ich hab das ganze jetzt zum Spass mal mit Atmelstudio 6.0 probiert, weil ja hex file und so... Da käme dann die Meldung bei mir... Vielleicht dazu ne Idee? Reading | ################################################## | 100% 0.00s avrdude.exe: Device signature = 0x1e950f avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude.exe: erasing chip avrdude.exe: reading input file "Debug\Klingel-ATTINY.hex" avrdude.exe: can't open input file Debug\Klingel-ATTINY.hex: No such file or directory avrdude.exe: read from file 'Debug\Klingel-ATTINY.hex' failed avrdude.exe done. Thank you.
Hallo Jürgen + "Klingelgemeinde", Vielen Dank für das Lob + die Anregungen und Modifikationen!! Nur zur Historie: Ich hatte die Klingel ursprünglich mal für die C-Control 1 gebaut - da wurde mir die Hardware aber zu teuer (pro Baustein damals 50 Euro (oder DM?)). Die Klingeltöne habe ich nicht selbst gemacht, die sind aus Nokia Klingeltönen (RTTTL) mit einem Konverter + Handarbeit erzeugt. Das ist dann wahrscheinlich auch der einfachste Weg, neue Melodien einzufügen bzw. man schreibt gleich einen rtttl Interpreter (meine Chips hatten dafür aber zu wenig Platz). Viel Spaß, egberto
Du kannst Dir ein Midifile schnappen und den dich interessierenden Kanal rausziehen und mit einem kleinen Phyton-Script die Notendaten generieren. Elm Chan hat das doch mit seiner Spieldose vorgemacht. 6fach Polyphon mit DDS. kein 50%50 RTTL-gequicke aus den 90ern. Oder Du packst Dir eine Wavedatei auf eine Micro-SD Karte. Das der Thread nochmal hochgeholt wurde... StromTuner Spieldose: http://elm-chan.org/works/mxb/report.html Waveplayer: http://elm-chan.org/works/sd8p/report.html
egberto schrieb: > Hallo Jürgen + "Klingelgemeinde", > > Vielen Dank für das Lob + die Anregungen und Modifikationen!! > > Nur zur Historie: > > Ich hatte die Klingel ursprünglich mal für die C-Control 1 gebaut - da > wurde mir die Hardware aber zu teuer (pro Baustein damals 50 Euro (oder > DM?)). > > Die Klingeltöne habe ich nicht selbst gemacht, die sind aus Nokia > Klingeltönen (RTTTL) mit einem Konverter + Handarbeit erzeugt. > > Das ist dann wahrscheinlich auch der einfachste Weg, neue Melodien > einzufügen > bzw. man schreibt gleich einen rtttl Interpreter (meine Chips hatten > dafür aber zu wenig Platz). > > Viel Spaß, > > egberto Mensch, der egberto! Du lebst noch! Und Du postest sogar in Deinem bald neun Jahre alten Thema immer noch mit! Das finde ich ja SUPER! Insbesondere im Vergleich zu den Themenstartern heutezutage, die oft nicht über die Aufmerksamkeitsspanne einer Eintagsfliege hinauskommen und manchmal bereits auf Antworten, die neun Stunden nach der Erstellung eines Themas geschrieben wurde, schon überhaupt nicht mehr reagieren und auf nimmer Wiedersehen aus dem Forum verschwinden. Dass Du Dich auch nach fast neun Jahren immer noch um Antworten in Deinem alten Thema kümmerst, fällt mir um so positiver auf.So ganz aus der Mode gekommen sind Piepstöne über Piezo-Lautsprecher bei Mikrocontroller-Basteleien ja nie. Sei es als Türklingel, als Weckalarm für Wecker, als Warn-Alarmgeber für alle möglichen Automatisierungsaufgaben, zur Untermalung von Lichteffekten bei LED-Spielereien an Weihnachtsdekoration oder im RC- oder sonstigem Modellbau. Die Mikrocontroller werden moderner, vielbittiger, schneller, mit mehr RAM und Programmspeicher, aber das Piezo-Piepsen bleibt uns als Geräusch erhalten, teils sogar mit denselben alten Tonfolgen von anno dunnemals. ;-)
:
Bearbeitet durch User
Reiner schrieb: > avrdude.exe: Device signature = 0x1e950f Offenbar liest Dein ISP-Programmer die falsche Device-Signatur. Mein Google sagt, ein AtTiny85 sollte die Signatur 1E 93 0B haben. Falsche Brenngeschwindigkeit?
So, und hier nach über acht Jahren nun eine Arduino-Version der 100-Melodien-Klingel:
1 | // Anfangdes Arduino-Programms
|
2 | const byte BUTTONPIN=2; |
3 | const byte SPEAKERPIN=9; |
4 | const byte MELODIES=100; |
5 | const uint16_t ton[]PROGMEM= |
6 | {
|
7 | 262, // c tone frequenciesin Hz |
8 | 277, //cis |
9 | 294, //d |
10 | 311, //dis |
11 | 330, //e |
12 | 349, //f |
13 | 370, //fis |
14 | 392, //g |
15 | 416, //gis |
16 | 440, //a |
17 | 466, //b |
18 | 495, //h |
19 | 524, //c' |
20 | 554, //cis' |
21 | 588, //d' |
22 | 622, //dis' |
23 | 660, //e' |
24 | 698, //f' |
25 | 740, //fis' |
26 | 784, //g' |
27 | 831, //gis' |
28 | 880, //a' |
29 | 929, //b' |
30 | 992, //h' |
31 | 1050, //c'' |
32 | 1106, //cis'' |
33 | 1179, //d'' |
34 | 1244, //dis'' |
35 | 1316, //e' |
36 | 1397, //f'' |
37 | 1562, //g'' auf position von fis'' verschoben |
38 | };
|
39 | |
40 | |
41 | |
42 | const uint8_t duration[] PROGMEM= |
43 | {
|
44 | 2, //1/32 Zeit in 20 ms Schritten |
45 | 3, //1/32. |
46 | 4, //1/16 |
47 | 6, //1/16. |
48 | 8, //1/8 |
49 | 12,//1/8. |
50 | 16,//1/4 |
51 | 24,//1/4. |
52 | };
|
53 | |
54 | |
55 | const uint8_t lied[] PROGMEM = { |
56 | |
57 | 1 //Lied Nr. 1 Offset:0 |
58 | |
59 | ,0,136,128,107,128,72,64,72,141,136,134,136,128,111,128,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200,192,82,143,141,139,200,171,72,64,72,141,136,134,200,175,72,64,72,144,143,139,136,143,148,72,70,64,70,131,139,200,200 |
60 | |
61 | ,2 //Lied Nr. 2 Offset:65 |
62 | |
63 | ,65,3,3,67,131,65,65,65,65,4,4,68,132,67,67,67,65,3,3,67,131,65,65,65,65,4,4,68,132,67,66,65,77,236,72,70,232 |
64 | |
65 | ,4 //Lied Nr. 3 Offset:103 |
66 | |
67 | ,141,8,10,72,6,5,72,8,10,79,13,12,74,12,205 |
68 | |
69 | ,4 //Lied Nr. 4 Offset:119 |
70 | |
71 | ,13,18,13,20,13,16,18,13,21,13,23,13,20,21,13,20,13,18,13,20,13,16,18,13 |
72 | |
73 | ,3 //Lied Nr. 5 Offset:144 |
74 | |
75 | ,111,0,111,0,111,0,75,0,18,111,0,75,0,18,175,64,118,0,118,0,118,0,87,0,18,110 |
76 | |
77 | ,2 //Lied Nr. 6 Offset:171 |
78 | |
79 | ,13,12,77,8,0,8,0,4,0,4,0,1,0,1,0,13,12,77,9,0,9,0,6,0,70,1,0,1,0,13,12,77,8,0,8,0,4,0,4,0,1,0,1,0,8,6,4,3,1,3,4,1,4,6,72,64,79,13,15,11,15,10,15,8,15,15,0,15,0,15,0,79,13,15,11,15,10,15,8,15,15,0,15,0,15,0,8,6,4,3,1,3,4,1,4,6,129 |
80 | |
81 | ,3 //Lied Nr. 7 Offset:269 |
82 | |
83 | ,73,66,0,78,11,73,66,0,73,7,6,7,8,9,66,68,134,128,73,66,0,78,11,73,66,0,73,7,6,7,8,9,66,68,130 |
84 | |
85 | ,3 //Lied Nr. 8 Offset:305 |
86 | |
87 | ,8,8,72,74,69,0,104,74,69,0,104,74,72,7,134 |
88 | |
89 | ,3 //Lied Nr. 9 Offset:321 |
90 | |
91 | ,15,0,18,0,15,0,16,0,13,0,80,64,21,0,16,0,85,64,20,0,16,0,84 |
92 | |
93 | ,3 //Lied Nr. 10 Offset:345 |
94 | |
95 | ,72,77,81,77,79,64,18,17,15,13,76,79,72,76,141,81,64,72,77,81,77,79,64,18,17,15,13,76,79,72,76,141 |
96 | |
97 | ,3 //Lied Nr. 11 Offset:378 |
98 | |
99 | ,69,71,72,74,72,71,69,68,68,69,71,5,4 |
100 | |
101 | ,3 //Lied Nr. 12 Offset:392 |
102 | |
103 | ,76,74,76,74,76,74,76,10,109,76,77,76,77,76,77,15,113,79,81,79,81,79,81,15,108,74,76,74,76 |
104 | |
105 | ,3 //Lied Nr. 13 Offset:422 |
106 | |
107 | ,77,77,74,76,10,76,72,64,77,77,74,12,10,0,104,64,69,69,72,70,5,70,13,1,3,69,5,5,0,5,72 |
108 | |
109 | ,3 //Lied Nr. 14 Offset:454 |
110 | |
111 | ,15,8,8,15,8,8,15,8,16,8,15,8,8,15,8,8,15,8,16,8,14,7,7,14,7,15,7,14,7,7,14,7,7,14,7,15,7 |
112 | |
113 | ,2 //Lied Nr. 15 Offset:492 |
114 | |
115 | ,15,16,15,16,15,16,15,16,15,15,16,17,18,19,20,84,128,84,128,87,64,77,64,84,128,84,128,82,64,83,64,84,128,84,128,87,64,77,64,84,128,84,128,82,64,83,64,87,84,207,207,0,87,84,206,206,0,87,84,205,205,64,75,77 |
116 | |
117 | ,5 //Lied Nr. 16 Offset:557 |
118 | |
119 | ,8,13,16,15,13,16,13,15,13,9,11,136,8,13,16,15,13,16,13,15,13,8,7,134,6 |
120 | |
121 | ,3 //Lied Nr. 17 Offset:583 |
122 | |
123 | ,74,74,81,17,204,77,76,77,79,77,76,74,74,74,81,17,204,77,76,77,79,77,76 |
124 | |
125 | ,4 //Lied Nr. 18 Offset:607 |
126 | |
127 | ,145,143,13,8,8,8,8,8,15,13,12,8,8,8,8,0,15,13,12,8,8,8,8,8,10,12,13,12,13,17,20 |
128 | |
129 | ,2 //Lied Nr. 19 Offset:639 |
130 | |
131 | ,5,0,6,5,5,0,5,5,6,5,5,5,4,5,5,5,5,0,6,5,5,0,6,5,6,5,5,5,4,5,5,5,3,0,5,3,3,0,5,3,5,3,3,3,1,3,3,3,3,0,5,3,3,0,5,3,5,3,3,3,1,3,3,3 |
132 | |
133 | ,2 //Lied Nr. 20 Offset:704 |
134 | |
135 | ,173,40,100,136,225,128,173,40,100,136,225,128,171,42,104,138,227,128,173,40,100,136,225 |
136 | |
137 | ,2 //Lied Nr. 21 Offset:728 |
138 | |
139 | ,24,0,25,0,27,24,20,17,24,20,17,13,20,17,13,10,128,25,0,27,0,29,25,22,18,25,22,18,15,22,18,15,12,192,31,29,25,22,18,15,12,25,22,18,15,12,18,15,12,18,145 |
140 | |
141 | ,4 //Lied Nr. 22 Offset:780 |
142 | |
143 | ,8,8,10,10,5,5,72,8,8,10,10,5,5,72,8,8,10,10,13,13,76,76,74,72,70,6,6,8,8,3,3,70,6,6,8,8,3,3,70,6,6,8,8,10,12,77,74,72,69,65 |
144 | |
145 | ,3 //Lied Nr. 23 Offset:831 |
146 | |
147 | ,79,15,13,76,141,138,74,79,79,13,108,79,15,13,76,141,138,76,72,138,64,76,77,79,145,113,114,79,177,79,15,13,76,141,138,74,79,79,13,108,79,15,13,76,141,138,76,72,106 |
148 | |
149 | ,3 //Lied Nr. 24 Offset:881 |
150 | |
151 | ,79,17,109,81,79,13,106 |
152 | |
153 | ,3 //Lied Nr. 25 Offset:889 |
154 | |
155 | ,74,64,74,64,74,13,113,64,81,15,13,81,15,13,81,15,13,17,17,15,13 |
156 | |
157 | ,2 //Lied Nr. 26 Offset:911 |
158 | |
159 | ,141,18,18,18,0,79,77,170,77,18,18,18,0,81,79,177,81,81,77,79,77,81,77,79,74,77,72,75,74,70 |
160 | |
161 | ,2 //Lied Nr. 27 Offset:942 |
162 | |
163 | ,68,69,192,71,72,192,68,69,0,71,72,0,77,76,0,68,69,0,76,203,192,10,8,5,3,197,192,68,69,128,71,72,128,68,69,0,71,72,0,77,76,0,68,69,0,81,208 |
164 | |
165 | ,3 //Lied Nr. 28 Offset:990 |
166 | |
167 | ,141,168,64,8,10,12,141,168,64,8,10,12,141,111,17,146,113,15,212 |
168 | |
169 | ,2 //Lied Nr. 29 Offset:1010 |
170 | |
171 | ,8,10,11,1,3,4,6,8,10,11,13,15,16,0,18,20,22,215,0,21,23,21,0,19,0,21,0,19,0,21,0,19,0,18,0,16,0,79,78,0,16,0,17,0,82,0,15,0,11,9,0,11,137,0,71,6,0,198,198 |
172 | |
173 | ,2 //Lied Nr. 30 Offset:1070 |
174 | |
175 | ,10,15,10,15,202,134,136,195,128,10,15,10,15,202,134,136,205,128,10,15,10,15,202,134,69,67,193,128,10,15,10,15,202,136,227 |
176 | |
177 | ,1 //Lied Nr. 31 Offset:1106 |
178 | |
179 | ,78,207,207,192,192,78,239,192,192,49,47,46,207,207,192,192,78,207,207,192,192,76,237,192,192,47,45,44,205,205,192,192,75,236,192,192,13,12,10,44,234,192,192,10,8,7,42,232,232 |
180 | |
181 | ,3 //Lied Nr. 32 Offset:1156 |
182 | |
183 | ,129,198,168,9,11,201,161,65,166,72,73,65,41,33,13,235 |
184 | |
185 | ,3 //Lied Nr. 33 Offset:1173 |
186 | |
187 | ,8,8,8,8,72,74,72,69,64,1,3,1,67,67,65,133 |
188 | |
189 | ,3 //Lied Nr. 34 Offset:1190 |
190 | |
191 | ,81,150,113,19,149,78,78,147,113,15,145,106,10,140,108,14,143,79,81,147,117,22,184 |
192 | |
193 | ,2 //Lied Nr. 35 Offset:1214 |
194 | |
195 | ,15,14,15,17,18,17,18,19,20,19,20,22,23,22,20,23,22,10,14,17,22,20,18,17,18,17,15,14,15,10,12,14,15,14,15,17,18,17,18,19,20,19,20,22,23,22,20,23,22,10,14,17,22,20,18,17,15 |
196 | |
197 | ,2 //Lied Nr. 36 Offset:1272 |
198 | |
199 | ,10,8,202,202,8,6,3,5,194,0,163,192,10,8,202,202,101,102,98,195 |
200 | |
201 | ,2 //Lied Nr. 37 Offset:1293 |
202 | |
203 | ,69,0,6,8,0,173,0,67,0,5,198,64,72,0,10,12,0,178,64,74,0,12,141,143,145 |
204 | |
205 | ,3 //Lied Nr. 38 Offset:1319 |
206 | |
207 | ,67,72,200,76,10,8,204,138,200,133,195,67,69,200,76,10,8,204,74,76,207,207 |
208 | |
209 | ,3 //Lied Nr. 39 Offset:1342 |
210 | |
211 | ,13,82,22,82,13,76,148,18,81,20,81,13,74,146,13,82,22,82,13,76,148,18,81,13,79,17,210 |
212 | |
213 | ,1 //Lied Nr. 40 Offset:1370 |
214 | |
215 | ,12,15,12,15,12,15,12,15,15,18,15,18,15,18,15,18,18,22,18,22,18,22,18,22 |
216 | |
217 | ,3 //Lied Nr. 41 Offset:1395 |
218 | |
219 | ,72,72,8,12,79,79,79,15,13,76,77,77,13,12,74,3,76,8,74 |
220 | |
221 | ,4 //Lied Nr. 42 Offset:1415 |
222 | |
223 | ,12,17,21,22,21,17,12,10,9,10,108 |
224 | |
225 | ,2 //Lied Nr. 43 Offset:1427 |
226 | |
227 | ,141,64,40,0,232,64,37,0,134,0,42,0,136,0,33,0,225 |
228 | |
229 | ,1 //Lied Nr. 44 Offset:1445 |
230 | |
231 | ,10,12,10,12,10,12,10,128,10,12,10,12,10,12,10,12,10 |
232 | |
233 | ,2 //Lied Nr. 45 Offset:1463 |
234 | |
235 | ,77,75,77,72,68,72,129,77,75,77,72,68,72,129,77,79,80,13,80,13,80,79,11,79,11,79,77,75,72,75,141 |
236 | |
237 | ,2 //Lied Nr. 46 Offset:1495 |
238 | |
239 | ,41,47,48,41,110,172,201,201,41,47,48,41,110,172,201,201 |
240 | |
241 | ,3 //Lied Nr. 47 Offset:1512 |
242 | |
243 | ,11,7,11,16,76,0,11,9,6,9,14,75,9,7,64,7,4,73,4,64,9,7,75,9,7 |
244 | |
245 | ,3 //Lied Nr. 48 Offset:1538 |
246 | |
247 | ,15,0,13,0,10,10,13,13,15,15,13,10,64,15,0,17,17,15,0,12,12,15,0,17,0,15,12 |
248 | |
249 | ,4 //Lied Nr. 49 Offset:1566 |
250 | |
251 | ,72,74,76,13,12,12,10,10,8,8,1,67,170 |
252 | |
253 | ,2 //Lied Nr. 50 Offset:1580 |
254 | |
255 | ,12,10,140,133,64,13,12,77,76,138,64,13,12,141,133,64,10,8,74,72,71,74,168 |
256 | |
257 | ,3 //Lied Nr. 51 Offset:1604 |
258 | |
259 | ,71,74,108,71,74,13,140,71,74,108,74,167 |
260 | |
261 | ,2 //Lied Nr. 52 Offset:1617 |
262 | |
263 | ,102,11,176,79,43,40,45,210,210 |
264 | |
265 | ,3 //Lied Nr. 53 Offset:1627 |
266 | |
267 | ,143,76,13,143,0,76,13,175,81,79,77,76,77,108,0,72,10,140,0,74,76,167,64,136,106 |
268 | |
269 | ,2 //Lied Nr. 54 Offset:1653 |
270 | |
271 | ,69,70,72,13,72,13,8,13,72,143,72,104,141,128,70,72,74,13,74,13,10,13,74,143,72,104,141 |
272 | |
273 | ,2 //Lied Nr. 55 Offset:1681 |
274 | |
275 | ,79,81,211,211,19,20,19,17,15,19,81,0,246,246,0,84,83,207,207,0,204,0,202,202,0,79,81,211,211,19,20,19,17,15,19,81,0,214,214,0,147,0,216,216,0,150,0,209,209 |
276 | |
277 | ,3 //Lied Nr. 56 Offset:1731 |
278 | |
279 | ,104,5,129,133,136,205,113,15,141,133,135,200 |
280 | |
281 | ,3 //Lied Nr. 57 Offset:1744 |
282 | |
283 | ,82,81,77,10,207,64,77,15,81,77,202 |
284 | |
285 | ,4 //Lied Nr. 58 Offset:1756 |
286 | |
287 | ,5,17,5,17,5,18,5,20,5,17,5,17,5,18,5,15,5,17,5,17,5,18,5,20,5,17,5,17,5,18,5,15,5,17,13,5,15,5,12,5,13,5,10,5,12,5,9,202 |
288 | |
289 | ,5 //Lied Nr. 59 Offset:1805 |
290 | |
291 | ,37,5,5,37,6,8,10,72,0,8,10,10,8,77,72,6,101,0,5,6,8,3,67,3,5,6,65 |
292 | |
293 | ,4 //Lied Nr. 60 Offset:1833 |
294 | |
295 | ,76,13,5,10,13,15,8,12,77,10,13,17,82,17,15,13,5,10,13,12,3,8,138 |
296 | |
297 | ,3 //Lied Nr. 61 Offset:1857 |
298 | |
299 | ,141,77,12,13,15,13,12,10,77,13,10,141,77,12,13,10,8,5,6,200,8,6,5,3,5,6,8,10,136,136,8,10,12,10,8,6,5,3,5,3,65,65,1,3,69,70,131,200 |
300 | |
301 | ,4 //Lied Nr. 62 Offset:1906 |
302 | |
303 | ,65,65,3,6,5,3,72,72,8,10,5,6,67,67,3,6,5,3,1,12,10,8,6,5,3,129 |
304 | |
305 | ,6 //Lied Nr. 63 Offset:1933 |
306 | |
307 | ,17,22,24,121,17,89,17,114,0,17,18,27,25,120,0,15,88,22,148 |
308 | |
309 | ,5 //Lied Nr. 64 Offset:1953 |
310 | |
311 | ,19,19,19,19,84,19,81,17,22,83,79,128 |
312 | |
313 | ,3 //Lied Nr. 65 Offset:1966 |
314 | |
315 | ,5,106,5,113,10,78,12,14,74,69,74,83,81,14,15,177,0,5,74,83,81,14,15,81,12,14,74,69,74,14,15,108,10,138 |
316 | |
317 | ,4 //Lied Nr. 66 Offset:2001 |
318 | |
319 | ,100,3,1,3,4,8,107,10,8,10,11,15,178,64,102,5,3,5,6,10,109,12,10,12,13,17,180,128 |
320 | |
321 | ,2 //Lied Nr. 67 Offset:2030 |
322 | |
323 | ,134,102,8,106,8,102,1,131,134,193,134,136,138,104,6,136,104,10,200,129,97,1,134,97,1,131,99,3,200,133,101,5,133,101,3,129,99,5,198 |
324 | |
325 | ,5 //Lied Nr. 68 Offset:2070 |
326 | |
327 | ,10,15,14,15,17,18,17,18,20,150 |
328 | |
329 | ,5 //Lied Nr. 69 Offset:2081 |
330 | |
331 | ,6,6,10,11,13,11,10,6,6,10,11,13,10,3,3,6,8,10,8,6,3,3,10,8,0,70 |
332 | |
333 | ,5 //Lied Nr. 70 Offset:2108 |
334 | |
335 | ,40,35,11,10,13,10,6,40,35,11,10,13,10,6,43,38 |
336 | |
337 | ,4 //Lied Nr. 71 Offset:2125 |
338 | |
339 | ,150,86,24,217,64,25,25,89,24,123,89,88,86,145,81,18,212,64,20,20,84,19,118,84,82,81,143,79,17,210,64,18,18,82,17,116,82,81,79,209,64,79,81,82,84,64,153,152,87,64,150,86,24,217,64,25,25,89,24,123,89,88,86,145,81,18,212,64,20,20,84,19,118,84,82,81,143,79,17,210,64,18,18,82,17,116,82,81,79,205,64,143,76,202 |
340 | |
341 | ,3 //Lied Nr. 72 Offset:2220 |
342 | |
343 | ,72,77,79,81,170,64,10,12,77,15,77,74,0,76,13,76,10,72,77,79,81,178,145,239 |
344 | |
345 | ,2 //Lied Nr. 73 Offset:2245 |
346 | |
347 | ,73,0,73,0,76,0,144,0,206,0,233,0,73,0,73,0,71,0,140,0,201,201,128,73,0,73,0,76,0,144,0,206,0,245,64,83,0,83,0,80,0,140,0,245,245 |
348 | |
349 | ,3 //Lied Nr. 74 Offset:2291 |
350 | |
351 | ,8,13,0,13,15,0,15,20,0,20,17,64,84,0,84,0,18,79 |
352 | |
353 | ,3 //Lied Nr. 75 Offset:2310 |
354 | |
355 | ,69,77,76,74,5,5,13,13,12,12,10,0,70,77,76,74,6,6,13,13,12,12,10 |
356 | |
357 | ,2 //Lied Nr. 76 Offset:2334 |
358 | |
359 | ,175,17,0,114,0,111,0,18,0,18,0,17,0,15,0,113,0,106,0,177,18,0,116,0,113,0,20,0,20,0,18,0,17,0,143 |
360 | |
361 | ,2 //Lied Nr. 77 Offset:2370 |
362 | |
363 | ,72,69,72,173,177,111,17,82,138,64,74,77,86,148,64,79,81,82,145,64,77,79,81,175,173,140 |
364 | |
365 | ,3 //Lied Nr. 78 Offset:2397 |
366 | |
367 | ,70,6,6,70,6,6,6,6,6,6,6,10,1,1,70,6,6,70,6,6,6,6,6,6,3,1,64,70,6,6,70,6,6,6,6,6,6,6,10,64,173,74,13,10,6,64,128 |
368 | |
369 | ,3 //Lied Nr. 79 Offset:2445 |
370 | |
371 | ,84,82,81,10,106,76,13,79,0,82,81,79,8,104,74,12,77,0,81,79,77,70,70,8,74,0,76,76,13,111,200 |
372 | |
373 | ,2 //Lied Nr. 80 Offset:2477 |
374 | |
375 | ,71,64,74,64,140,128,71,64,74,64,140,128,71,64,74,64,76,64,79,79,78,78,74,64,236,128,7,72,64,74,64,76,64,72,64,167,133,128,7,72,64,74,64,44,44,72,64,167,133,128,7,72,64,74,64,76,64,72,64,71,64,69,64,67,64,66,64,195,195 |
376 | |
377 | ,3 //Lied Nr. 81 Offset:2547 |
378 | |
379 | ,82,17,79,14,77,12,75,10,8,10,11,74,8,141,0,13,10,0,10,10,9,10,18,0,13,13,0,10,11,0,11,11,0,13,143,0,11,8,0,8,8,7,8,17,0,15,15,0,11,10,0,10,10,0,11,141 |
380 | |
381 | ,3 //Lied Nr. 82 Offset:2604 |
382 | |
383 | ,20,18,20,18,81,77,64,17,18,20,18,20,18,17,18,20,22,23,22,23,22,84,64,85,84,83,82,16,15,13,15,80,64,16,15,13,15,80,77,84 |
384 | |
385 | ,2 //Lied Nr. 83 Offset:2645 |
386 | |
387 | ,14,0,16,0,145,17,0,19,0,81,16,0,14,0,12,0,140,14,0,16,0,144,14,0,16,0,113,0,115,0,81,16,0,14,0,12,0,142,14,0,12,0,140,14,0,16,0,145,17,0,19,0,81,16,0,14,0,12,0,140,14,0,16,0,144,14,0,16,0,113,0,115,0,81,16,0,14,0,12,0,142,14,0,12,0,140 |
388 | |
389 | ,2 //Lied Nr. 84 Offset:2732 |
390 | |
391 | ,8,74,8,69,77,74,168,8,10,8,10,72,77,172,64,6,72,6,67,76,74,168,8,10,8,10,72,74,165 |
392 | |
393 | ,2 //Lied Nr. 85 Offset:2762 |
394 | |
395 | ,1,1,65,1,1,65,1,1,6,72,74,0,1,1,65,1,1,65,10,10,8,69,65,0,1,1,65,1,1,65,1,1,6,72,74,0,6,10,77,13,13,13,11,10,8,6,106,6 |
396 | |
397 | ,2 //Lied Nr. 86 Offset:2811 |
398 | |
399 | ,216,145,147,149,150,216,145,128,209,218,150,152,154,156,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,11,10,11,10,11,10,11,10,11,10,11,10,11,10 |
400 | |
401 | ,3 //Lied Nr. 87 Offset:2860 |
402 | |
403 | ,81,17,17,17,17,17,81,74,77,81,79,15,15,15,15,15,15,8,0,76,79,81,17,17,17,17,17,17,19,20,22,0,84,81,15,12,0,74,0,74 |
404 | |
405 | ,4 //Lied Nr. 88 Offset:2901 |
406 | |
407 | ,109,81,83,22,116,81,77,10,7,7,7,136,0,0,7,7,7,8,107,13,13,13,77 |
408 | |
409 | ,2 //Lied Nr. 89 Offset:2925 |
410 | |
411 | ,8,0,13,0,12,0,13,0,15,0,17,0,18,0,116,0,84,82,116,0,84,82,116,0,84,82,84,86,82,84,209,209,64,8,0,13,0,12,0,13,0,15,0,17,0,18,0,116,0,84,82,116,0,84,82,116,0,84,82,81,82,79,81,205 |
412 | |
413 | ,2 //Lied Nr. 90 Offset:2990 |
414 | |
415 | ,72,72,72,141,77,212,64,84,118,20,82,212,212 |
416 | |
417 | ,5 //Lied Nr. 91 Offset:3004 |
418 | |
419 | ,6,8,8,6,72,0,8,6,8,10,8,6,5,6,6,5,70,0,6,5,6,8,6,69,0,3,5,5,3,69,0,3,5,6,5,3,0,139 |
420 | |
421 | ,2 //Lied Nr. 92 Offset:3043 |
422 | |
423 | ,72,141,64,76,138,64,77,79,81,79,77,140,64,8,8,74,77,72,8,8,74,77,72,82,145,64,79,141 |
424 | |
425 | ,3 //Lied Nr. 93 Offset:3072 |
426 | |
427 | ,65,3,5,3,5,7,8,7,8,10,8,5,10,12,141,140 |
428 | |
429 | ,4 //Lied Nr. 94 Offset:3089 |
430 | |
431 | ,7,7,7,3,0,12,0,5,0,5,0,5,9,9,10,12,10,10,10,5,0,3,0,7,0,7,0,7,5,5,7,5 |
432 | |
433 | ,2 //Lied Nr. 95 Offset:3122 |
434 | |
435 | ,81,5,0,5,0,5,0,5,0,5,0,76,5,0,5,0,5,0,5,0,5,0,77,5,0,5,0,5,0,5,0,5,0,74,5,0,5,0,5,0,5,0,5,0,76,5,0,5,0,5,0,72,5,0,5,0,5,0,74,5,0,5,0,5,0,5,0,5,0,71,5,0,5,0,5,0,5,0,5,0,72,5,0,5,0,5,0,5,0,5,0,74,5,0,5,0,5,0,5,0,5,0,71,5,0,5,0,5,0,72,5,0,5,0,5,0,69 |
436 | |
437 | ,3 //Lied Nr. 96 Offset:3240 |
438 | |
439 | ,14,11,128,11,9,7,9,11,78,11,78,16,11,128,11,9,7,9,11,78,11,78,16,12,128,12,11,9,11,12,80,19,80,114,112,110,108,75,73 |
440 | |
441 | ,2 //Lied Nr. 97 Offset:3280 |
442 | |
443 | ,132,132,104,4,107,8,132,132,104,4,107,8,134,97,12,129,102,4,99,4,97,3,107,1,99,11,132,132,104,4,107,8,132,132,104,4,107,8,134,134,134,104,6,132,136,196 |
444 | |
445 | ,5 //Lied Nr. 98 Offset:3327 |
446 | |
447 | ,22,13,17,22,24,17,13,24,25,17,13,25,19,15,22,19,17,13,22,77,17,13,10,8,8,10,74 |
448 | |
449 | ,2 //Lied Nr. 99 Offset:3355 |
450 | |
451 | ,72,139,77,111,16,79,141,74,102,8,74,139,72,104,6,72,138,70,131,72,139,77,111,17,79,141,74,102,8,74,107,10,72,103,5,71,136 |
452 | |
453 | ,4 //Lied Nr. 100 Offset:3393 |
454 | |
455 | ,116,17,17,79,116,17,81,17,15,116,81,81,15,84,20,17,81,17,15,82,79,79,15,13,81,77,77,13,75,141 |
456 | |
457 | };
|
458 | |
459 | |
460 | |
461 | |
462 | uint16_t liedofs [] = { //Anfaenge der Lieder |
463 | 0 //Lied 1 |
464 | ,65 //Lied 2 |
465 | ,103 //Lied 3 |
466 | ,119 //Lied 4 |
467 | ,144 //Lied 5 |
468 | ,171 //Lied 6 |
469 | ,269 //Lied 7 |
470 | ,305 //Lied 8 |
471 | ,321 //Lied 9 |
472 | ,345 //Lied 10 |
473 | ,378 //Lied 11 |
474 | ,392 //Lied 12 |
475 | ,422 //Lied 13 |
476 | ,454 //Lied 14 |
477 | ,492 //Lied 15 |
478 | ,557 //Lied 16 |
479 | ,583 //Lied 17 |
480 | ,607 //Lied 18 |
481 | ,639 //Lied 19 |
482 | ,704 //Lied 20 |
483 | ,728 //Lied 21 |
484 | ,780 //Lied 22 |
485 | ,831 //Lied 23 |
486 | ,881 //Lied 24 |
487 | ,889 //Lied 25 |
488 | ,911 //Lied 26 |
489 | ,942 //Lied 27 |
490 | ,990 //Lied 28 |
491 | ,1010 //Lied 29 |
492 | ,1070 //Lied 30 |
493 | ,1106 //Lied 31 |
494 | ,1156 //Lied 32 |
495 | ,1173 //Lied 33 |
496 | ,1190 //Lied 34 |
497 | ,1214 //Lied 35 |
498 | ,1272 //Lied 36 |
499 | ,1293 //Lied 37 |
500 | ,1319 //Lied 38 |
501 | ,1342 //Lied 39 |
502 | ,1370 //Lied 40 |
503 | ,1395 //Lied 41 |
504 | ,1415 //Lied 42 |
505 | ,1427 //Lied 43 |
506 | ,1445 //Lied 44 |
507 | ,1463 //Lied 45 |
508 | ,1495 //Lied 46 |
509 | ,1512 //Lied 47 |
510 | ,1538 //Lied 48 |
511 | ,1566 //Lied 49 |
512 | ,1580 //Lied 50 |
513 | ,1604 //Lied 51 |
514 | ,1617 //Lied 52 |
515 | ,1627 //Lied 53 |
516 | ,1653 //Lied 54 |
517 | ,1681 //Lied 55 |
518 | ,1731 //Lied 56 |
519 | ,1744 //Lied 57 |
520 | ,1756 //Lied 58 |
521 | ,1805 //Lied 59 |
522 | ,1833 //Lied 60 |
523 | ,1857 //Lied 61 |
524 | ,1906 //Lied 62 |
525 | ,1933 //Lied 63 |
526 | ,1953 //Lied 64 |
527 | ,1966 //Lied 65 |
528 | ,2001 //Lied 66 |
529 | ,2030 //Lied 67 |
530 | ,2070 //Lied 68 |
531 | ,2081 //Lied 69 |
532 | ,2108 //Lied 70 |
533 | ,2125 //Lied 71 |
534 | ,2220 //Lied 72 |
535 | ,2245 //Lied 73 |
536 | ,2291 //Lied 74 |
537 | ,2310 //Lied 75 |
538 | ,2334 //Lied 76 |
539 | ,2370 //Lied 77 |
540 | ,2397 //Lied 78 |
541 | ,2445 //Lied 79 |
542 | ,2477 //Lied 80 |
543 | ,2547 //Lied 81 |
544 | ,2604 //Lied 82 |
545 | ,2645 //Lied 83 |
546 | ,2732 //Lied 84 |
547 | ,2762 //Lied 85 |
548 | ,2811 //Lied 86 |
549 | ,2860 //Lied 87 |
550 | ,2901 //Lied 88 |
551 | ,2925 //Lied 89 |
552 | ,2990 //Lied 90 |
553 | ,3004 //Lied 91 |
554 | ,3043 //Lied 92 |
555 | ,3072 //Lied 93 |
556 | ,3089 //Lied 94 |
557 | ,3122 //Lied 95 |
558 | ,3240 //Lied 96 |
559 | ,3280 //Lied 97 |
560 | ,3327 //Lied 98 |
561 | ,3355 //Lied 99 |
562 | ,3393 //Lied 100 |
563 | };
|
564 | |
565 | //Format Lied :
|
566 | |
567 | //1. Byte: speed 2 schnell, 3..5 normal
|
568 | //2. Byte - n Byte Noten
|
569 | |
570 | |
571 | //Aufbau eines Notenbytes:
|
572 | |
573 | //Bit
|
574 | // 7 6 5 4 3 2 1 0
|
575 | // |__|__| |__|__|__|__|_Tonhoehe ( 1..31 (C..G'') incl. aller Halbtonschritte
|
576 | // | ausser 31: G'' statt FIS''
|
577 | // | wenn 0, kein Ton sondern Pause
|
578 | // |
|
579 | // |___________________________________________Tonlaenge
|
580 | //
|
581 | // 7: 1/4.
|
582 | // 6: 1/4
|
583 | // 5: 1/8.
|
584 | // 4: 1/8
|
585 | // 3: 1/16.
|
586 | // 2: 1/16
|
587 | // 1: 1/32.
|
588 | // 0: 1/32
|
589 | // Ende Lied.h
|
590 | |
591 | |
592 | /*
|
593 | //Türklingel mit 100 Melodien M. Baudisch 12/2008
|
594 | */
|
595 | |
596 | |
597 | void setup() |
598 | {
|
599 | // put your setup code here, to run once:
|
600 | // Serial.begin(9600);
|
601 | // Serial.println("I\nprogram is up and running...");
|
602 | pinMode(BUTTONPIN,INPUT_PULLUP); |
603 | pinMode(SPEAKERPIN,OUTPUT); |
604 | jursTone(SPEAKERPIN,440,600); |
605 | }
|
606 | |
607 | void jursTone(const byte pin,const int frequency, const int duration) |
608 | {
|
609 | unsigned long startTime=millis(); |
610 | int halfPeriod=1000000L/frequency/2; |
611 | while(millis()-startTime<duration) |
612 | {
|
613 | digitalWrite(SPEAKERPIN,HIGH); |
614 | delayMicroseconds(halfPeriod); |
615 | digitalWrite(SPEAKERPIN,LOW); |
616 | delayMicroseconds(halfPeriod); |
617 | }
|
618 | }
|
619 | |
620 | |
621 | |
622 | |
623 | uint16_t liedcount; |
624 | uint16_t liedende; |
625 | uint8_t liednr=0; |
626 | byte lspeed=0; |
627 | uint8_t dauer; |
628 | uint8_t hoehe; |
629 | uint8_t note ; |
630 | |
631 | |
632 | void playlied(int liednr) |
633 | {
|
634 | // Serial.print("Melodie Nr.: ");Serial.println(liednr);
|
635 | if (liednr==MELODIES) liedende=sizeof(lied); |
636 | //bei letztem Lied ist Endwert Größe des Arrays
|
637 | else liedende=liedofs[liednr]; //ansonsten 1 Byte vor nächstem Lied |
638 | Serial.print(liedofs[liednr-1]);Serial.print(" ");Serial.println(liedende); |
639 | // liedcount=liedofs[liednr-1];
|
640 | lspeed= pgm_read_byte(&lied[liedcount]); |
641 | // Serial.print("Speed: ");Serial.print(lspeed);Serial.println();
|
642 | for (liedcount=liedofs[liednr-1]+1;liedcount<liedende;liedcount++) |
643 | {
|
644 | note=pgm_read_byte(&lied[liedcount]); //Note holen |
645 | Serial.println(note); |
646 | hoehe=note & 0x1f; //Tonhöhe ausmaskieren (5 Bit) |
647 | dauer= pgm_read_byte(&duration[note >> 5]); // 5 Bit nach rechts schieben und Zeit holen |
648 | if (hoehe) //wenn keine Pause, somdern ein Ton |
649 | {
|
650 | jursTone(SPEAKERPIN,pgm_read_word(&ton[hoehe-1]),dauer*lspeed*20); |
651 | delay(int(dauer)*int(lspeed)*int(20)); |
652 | }
|
653 | else // es ist nur eine Pause |
654 | delay(lspeed*dauer*20); |
655 | }
|
656 | }
|
657 | |
658 | |
659 | |
660 | |
661 | |
662 | |
663 | byte b,liedNummer; |
664 | bool buttonPressed() |
665 | {
|
666 | static byte oldState; |
667 | byte newState=digitalRead(BUTTONPIN); |
668 | if(newState!=oldState && newState==LOW) |
669 | {
|
670 | oldState=newState; |
671 | return true; |
672 | }
|
673 | oldState=newState; |
674 | return false; |
675 | }
|
676 | |
677 | |
678 | void loop() |
679 | |
680 | {
|
681 | if (buttonPressed()) |
682 | {
|
683 | randomSeed(micros()); |
684 | playlied(1+random(100)); |
685 | }
|
686 | |
687 | }
|
688 | // Ende des Arduino-Programms
|
Der Code verwendet nur weniger als eine handvoll Library-Funktionen und sollte daher auf jedem Arduino-kompatiblen Board mit zwei freien Pins laufen, einschließlich AtTiny85 Getestet habe ich auf Atmega328, das Kompilat ergibt ein 6784 Bytes großes Programm. Als Beschaltung wird ein Tastschalter an Pin-2 und ein Piezo-Lautsprecher an Pin-9 verwendet. (Diese Konstanten können im Code natürlich geändert werden. Die Testbeschaltung ist: - Tastschalter an Pin-2, schaltet gegen GND - Piezo-Lautsprecher zwischen Pin-9 und GND Zur Auswertung des Tastschalters wird im Programm der interne Pull-up Widerstand aktiviert Beim Drücken des Tastschalters wird jedesmal eine der 100 vorhandenen Melodien nach dem Zufallsprinzip ausgewählt und abgespielt. Die loop()-Funktion dazu lautet einfach:
1 | void loop() |
2 | |
3 | {
|
4 | if (buttonPressed()) |
5 | {
|
6 | randomSeed(micros()); |
7 | playlied(1+random(100)); |
8 | }
|
9 | |
10 | }
|
Der Zufallszahlengenerator wird jedsmal erst beim Drücken des Tastschalters neu initialisiert, und zwar mit dem Stand des Mikrosekundenzählers, um damit zu verhindern, dass jedesmal nach einem Neustart/Reset des Controllers dieselbe "zufällige Reihenfolge abgespielt wird, sondern die zufällige Melodie "wirklich zufällig" ausgewählt wird, im Moment des Tastendrucks. Ach ja, Nachtrag zu meinem Beitrag von gestern: Beim Testen des Codes habe ich heute noch eine weitere Melodie erkannt (aber ich kann die Nummer nicht sagen, da per Zufallsprinzip auf Tastendruck ausgewählt und abgespielt): - eine der Tonfolgen ist: In München steht ein Hofbräuhaus - oans - zwoa - gsuffa! Hinweise: Beim Neustart/Reset wird ein kurzer Kontroll-Piepser ausgegeben, danach ist der Tastschalter scharf geschaltet. Sobald der Tastschalter-Pin gegen GND geschlossen wird, spielt eine der Tonfolgen. Und"Serial" hat in dem Programm keine Funktion, weil in der setup() Funktion kein "Serial.begin(9600)" drinsteht. Ggf. im setup() ergänzen, oder alle Zeilen mit Ausgaben auf Serial ignorieren oder aus dem Programm herauslöschen.
Es gibt die Möglichkeit, so viel Code einfach als *.ino File anzuhängen. Dann erstellt dieses Form sogar automatisch einen Knopf neben dem File, der den Code direkt anzeigt. Also: Bitte verpacken!
Markus schrieb: > Es gibt die Möglichkeit, so viel Code einfach als *.ino File anzuhängen. > Dann erstellt dieses Form sogar automatisch einen Knopf neben dem File, > der den Code direkt anzeigt. > Also: Bitte verpacken! OK, also auf speziellen Wunsch von Markus nochmal als .ino Datei. Das nachträgliche Editieren meines Beitrags war leider nicht mehr möglich, weil Markus bereits eine Antwort gepostet hat, und damit verhindert, dass ich meinen letzten Beitrag nochmal bearbeiten konnte. Anyway. Viel Spass mit dm Code, wer immer ihn gebrauchen kann!
wenn es an der Stelle eine Möglichkeit gäbe für dreimal Daumen hoch täte ich sie hier einfügen Danke für deine Zeit und Mühe ich denke ich werde meine Frau heute Abend mit dem Gepiepse nerven irgendwo sollten noch ein paar Arduino Uno clones rumliegen
Super Sache!!! Ganz liebe Dank für Deine große Mühe! Ich hab natürlich auch gleich mal getestet und gespielt. Auf mein Uno mit Atmega328 gibts keine Probleme!! Läuft wie beschrieben. Jedoch krieg ich es nicht auf den 85. Fehlermeldung hier: Ich hab zwar deine Mitteilung bzgl der Seriel Zeilen gelesen, doch wenn ich die komplett rauslösche, kommt trotzdem diese Fehlermeldung. Ich weiß ich kann nerven, aber als µC Anfänger darf man das. Arduino: 1.6.1 (Windows XP), Platine: "ATtiny, ATtiny85, 8 MHz (internal)" sketch_apr25g.ino: In function 'void playlied(int)': sketch_apr25g.ino:637:3: error: 'Serial' was not declared in this scope Fehler beim Kompilieren. Dieser Report hätte mehr Informationen mit "Ausführliche Ausgabe während der Kompilierung" aktiviert in Datei > Einstellungen
Reiner schrieb: > > sketch_apr25g.ino:637:3: error: 'Serial' was not declared in this scope > > Fehler beim Kompilieren. Ich würde lieber nochmal im Code nach "Serial" suchen und alle Ausgaben auf Serial für den AtTiny entfernen, bevor er für den Tiny kompiliert wird. Mir ist beim Drüberschauen über den Code heute aber doch noch ein Bock aufgefallen, den ich geschossen habe: Die Noten werden viel zu stark im "Stakkato" gespielt, weil ich die Pause nach dem Spielen einer Note genau so lang mache wie die Spieldauer der Note. Es dürfte besser sein, die Pause zwischen den Noten deutlich kürzer zu machen als die Spieldauer der Note, zum Beispiel nur ein fünftel so lang:
1 | jursTone(SPEAKERPIN,pgm_read_word(&ton[hoehe-1]),dauer*lspeed*20); |
2 | delay(dauer*lspeed*4); // kurze Pause nach jedem Ton |
Einen Piano-Sound bekommt man mit einer Rechteckfrequenz natürlich nie, aber die Pausendauer nach jeder Note ist im geposteten Code wohl zu lang, die würde ich wohl von "*20" auf "*4" im delay() nach der Note reduzieren.
So liebe klingelgemeinde..... Ganz großen Dank an alle, insbesondere an Jürgen! Ich hab jetzt den 85Igel zum laufen bekommen. Danke danke danke.... Aber wenn ich ehrlich bin, ich trau mich ja kaum das hier zufragen, gibt's noch mehr was mich interessieren würde. Ich Häng noch an einer Sache mit 433mhz. Ich komm mit dem virtuelle wire nicht klar. Hab dazu schon viel gelesen aber ich steig nicht dahinter. Für heute reichts aber erstmal. Nochmal danke! In diesem Sinne schönen abend euch allen.
Soooo. Duten morgen zusammen. Werden wir mal das schei... Wetter nutzen (bei uns liegt Schnee und es schneit weiter) um noch bissel rum zu löten und krach zu machen. Ich erwähnte ja gestern schon, das ich noch an einem Projekt hänge mit 433MHz Funk. Soll später mal die Gartenbeleuchtung schalten. Nur schreit mich die IDE immer an das irgendwas mit der virtuell wire wäre. Ich weiß, das Forum hier geht ja ausschlieslich um die Sache mit der Melodieklingel, aber mir scheint, der liebe "Jürgen" hat noch viel mehr drauf als den Sketch gestern. Dafür aber noch mal tausend dank! das Teil ist mit ner kleinen Verstärkerstufe und nem 8Ohm / 4Watt Lautsprecher in ein Gehäuse "geflogen" und dat funzt!! Ich hab mich schon einige Tage durch Foren gekämpft, bin aber auch nicht schlauer als vorher. Hat vielleicht jemand ne Idee wo ich noch was lesen könnte dazu, oder hat gar der "Jürgen" eine zündende Idee? Den Sketch gibts ja zu hunderten im Internet, aber keiner davon funktioniert. Na mal schauen, ob ich hier ne vielversprechende Info / Antwort bekomme. Denn hier geht es wesentlich netter und freundlicheer zu als in manch anderen Foren. (Da macht "lernen" doch auch Spass. Gerade als Anfänger im Umgang mit programmieren und µC im allgemeinen, braucht man keine "unsinnigen" Antworten oder "dumme" Komntare. In diesem Sinne schönen Montag gewünscht. L.G. Reiner DE- SAC - Altenberg / Osterzgebirge
Sorry völlig im Tag vertan, das kommt davon wenn man nur zu Hause hockt. Schönen Mittwoch meine ich natürlich....
Moin, erstmal vielen Dank für dieses coole Projekt. Das passt perfekt für mein momentanes Vorhaben. Anlässlich eines Geburtstages möchte ich etwas ganz besonderes basteln und ein AVR soll "Happy Birtday" abspielen. Die Schaltung hab ich gerade eben mal schnell mit nem Mega8 auf dem Breadboard zusammengesteckt und den Code entsprechend modifiziert -Alles kein Problem - Da ich aber so unmusikalisch wie nur was bin, gelingt es mir nicht, dafür eine "Happy Birthday"-Melodie Bit-technisch zu komponieren. Hat da jemand zufällig schon mal das passende Array für erstellt oder könnte mir da einer helfen? Grüße Henning
z.B. hiermit solltest du das leicht selbst hinbekommen: https://www.irish-folk-songs.com/happy-birthday-tin-whistle-sheet-music.html#.W-kkGPkxnMg Viele Grüße, Egberto
Hallo Egberto, ich hatte immer vor deine Klingel mal für die Haustür zu nutzen, trotz mangelnder Polyphonie - heute war es dann soweit...nach 10min lief das ganze, 1h später hing es an der Wand. Mal den WAF abwarten, aber die Hoffnung stirbt zuletzt :) Einige der Melodien sind "etwas kurz" für die Ankündigung der Gäste...muss ich mal sehen, ob dich die mit etwas Handarbeit "auskommentieren" kann - oder hat das vll schon jmd getan bzw. sogar erweitert? Danke nochmals für das kurzweilige "Feierabendprojekt"! Klaus.
:
Bearbeitet durch User
Am einfachsen filterst du die ungewünschten Melodien nach dem Zufallsgenerator raus, dann brauchst du an den Tabellen (erstmal) nichts zu ändern. Grüße, Egberto
...mir fällt auf dass die Klingel sehr empfindlich ggü Störungen ist? Es gab schon einige Fehlauslösungen -> WAF nachts stark negativ :) Auf der Klingelleitung finden sich schwankende Phantomspgen (kapazitiv eingekoppelt?) von 2-8V AC, diese musste ich mit einem 1,2k parallel zum Optokoppler "killen". Zudem scheint es Probleme mit EMV und dem sehr empfindlichen Pin-Interrupt zu geben, der Lichttaster im Flur löst ab & an die Klingel aus. Daher: - 100ms delay eingefügt (sonst "weiterschlafen") - Optische Anteige (falls das Lied schon vorbei ist, blinkt die 20s weiter) Klaus.
Hier läuft die Klingel seit Jahren ohne Fehlauslösung. Nur ein paar Klingeltöne sind etwas kurz. Getriggert wird via Optokoppler vom AC-Klingelstrom und versorgt von der Gleichspannung der Wechselsprechanlage. Klaus R. schrieb: > Auf der Klingelleitung finden sich schwankende Phantomspgen (kapazitiv > eingekoppelt?) von 2-8V AC, diese musste ich mit einem 1,2k parallel zum > Optokoppler "killen". Da hat wohl jemand parallel zur Klingelleitung ein 230V-Kabel verlegt? Kannst Du abschätzen wie lang die Klingelleitung ist? > Zudem scheint es Probleme mit EMV und dem sehr > empfindlichen Pin-Interrupt zu geben, der Lichttaster im Flur löst ab & > an die Klingel aus. Neben der Softwarelösung hilft vmtl. auch eine kleine R-C-Kombination am Pin.
...ja, ich bin ach drauf und dran die (zu) kurzen Klingeltöne zu verlängern. Aber erstmal rausfinden, welche es sind und wo gespeichert...oder ich bin "faul" und wiederhole sie erstmal, bis sie mindestens 5s Abspielzeit erreichen (das geht dtl schneller). R/C = im fertigen Gerät rumlöten, delay = flexible Softwareanpassung über externen Anschluss flashen :) Es werden so 30m sein... Klaus.
Meinen Kollegen nerven eher die langen Klingeltöne (z.B. Griechischer Wein, Mission Impossible etc.) - die Geschmäcker sind halt verschieden. Aber alle mir bekannten Nachbauer sagen, es gibt Melodien, die hört man nach Jahren (gefühlt) zum 1. mal, aber das kann am Zufallsgenerator liegen, dessen Verteilung nun wirklich nicht gaussch (wie schreibt man das) ist. Schönen Abend, Egberto
Weihnachten ist durch, aber das nächste kommt bestimmt :-) Nochmal Danke an Egberto, für das nette Projekt! Hier ist eine Version, die den Waveform-Generator nach http://www.technoblogy.com/show?QVN verwendet. Damit klingen die Töne nicht so 'eckig', sondern schön 'soft'. Nachteilig ist die wesentlich geringere Lautstärke gegenüber der Ursprungsvariante mit Rechteckausgang. Wahlweise können auch ein Dreieck- oder eine Sägezahnsignal ausgegeben werden. Da kommen dann wieder - mehr oder weniger - harmonische Oberwellen ins Spiel (und es wird auch wieder etwas lauter). Genutzt wird die PWM von Timer 1, der von der internen High-Speed-PLL (64 MHz) getaktet wird. Die eigentliche Samplerate beträgt 20 kHz. Das ganze Projekt ist pinkompatibel zur Ursprungsvariante (PB1 = Lautsprecher, PB2 = Trigger). Nur in den ATtiny45 passt es nur rein, wenn man ein paar Melodien opfert. Im Anhang eine Variante für einen ATtiny85. Ich habe bei mir zwischen Portpin und 'Verstärker' noch ein Poti (1 kOhm) für die Lautstärkeregelung und einen Kondensator (1 µF), der die PWM etwas glättet, drin. Alternativ wäre zu überlegen, für die Ausgabe gleich einen LM386 (oder eines dieser günstigen DIY-Verstärkerboards aus China) vorzusehen.
Schöm und gut mit den runden Tönen. Ein Verstärker muss dann her. Leider kenne ich nur Verstärker mit einem 2-10mA Ruhestrom. Das würde eine Batterie schnell leer ziehen. Kann man nicht auf einem Ausgang ein H Signal geben, wenn der Chip aktiv ist? Damit könnte man mit einem Leistungsmosfet den Verstärker ein und aus schalten. Ich bin nicht firm in C-Programmierung und kriege das nicht hin.
:
Bearbeitet durch User
Jürgen F. schrieb: > Schön und gut mit den runden Tönen. Ich experimentiere gerade mit dem Wavetable Generator von elm-chan: http://elm-chan.org/works/mxb/report.html Mit Polyphonie klingt das echt nochmal um einiges besser. > Ein Verstärker muss dann her. Der komplementäre Emitterfolger eignet sich leider nicht für die Wavetable-PWM-Signale, da er zu nichtlinear ist. Die Schaltung von elm-chan verwendet einfach einen zweiten Portpin mit negiertem Ausgang: das ergibt den doppelten Spannungshub am Lautsprecher. > Leider kenne ich nur Verstärker mit einem > 2-10mA Ruhestrom. Das würde eine Batterie schnell leer ziehen. Kann man > nicht auf einem Ausgang ein H Signal geben, wenn der Chip aktiv ist? Ja, klar. > Damit könnte man mit einem Leistungsmosfet den Verstärker ein und aus > schalten. Welcher Pin soll es denn sein?
1 | * Funktion PIN PIN Funktion |
2 | * +--v--+ |
3 | * /RESET PB5 |1 8| VCC |
4 | * n.c. PB3 |2 7| PB2 SCK/PCINT2 /Taster + interner Pull-Up |
5 | * n.c. PB4 |3 6| PB1 MISO/OC1A Lautsprecher |
6 | * GND |4 5| PB0 MOSI |
7 | * +-----+ |
Hier nochmal der Schaltplan zur elm-chan Variante...
Na dann nimm den Pin 2 mit PB3. Da ja mit der Variante der Pin 3 mit PB 4 belegt ist.
Noch ein Nachtrag. Ich würde mich wirklich riesig freuen über den Aktiv-Signal an Pin 2.
Da gibt es die Stelle Soundon und Soundoff. Kann man darunter den Pin 2, für den Verstärker, ein und ausschalten? Wie lauten die Befehle? Da müsste auch ein Eintrag bei {Global defines} für PB3 gemacht werden.
Jürgen F. schrieb: > Da gibt es die Stelle Soundon und Soundoff. Ja, das ist die richtige Stelle:
1 | #define AMP_ON (PB3)
|
2 | #define SOUNDON set_bit( DDRB, SPEAKER); set_bit( PORTB, AMP_ON);
|
3 | #define SOUNDOFF clear_bit( DDRB, SPEAKER); clear_bit( PORTB, AMP_ON);
|
Dann muß noch der Port initialisiert werden (in setup):
1 | // Verstaerker: Ausgang
|
2 | set_bit( DDRB, AMP_ON); |
3 | clear_bit( PORTB, AMP_ON); |
Anbei noch der vollständige Quelltext und das hex-File.
Ich habe es hingekriegt. Dein HEX-File ging nicht. Ich habe 4 Einträge gemacht. Da muss man aufpassen. Denn Soundon und Soundoff sind 2 mal eingetragen. Erst hatte ich es so, dass bei jeder Noter der Verstärker ausging. Getest habe ich es mit einer LED, die flackerte dann. Also die 2 Einträge an der Stelle: speed = pgm_read_byte( &lied[ liedcount]); SOUNDON; DDRB |= (1 << PB3); //setzen PORTB |= (1 << PB3); liedcount++; Und am Ende: SOUNDOFF; // falls noch Ton an DDRB &= ~(1 << PB3); //löschen PORTB &= ~(1 << PB3); sleep_mode(); liednr = MyRandGet() + 1;
:
Bearbeitet durch User
Jürgen F. schrieb: > Ich habe es hingekriegt. Sehr fein! Was für einen Verstärker verwendest Du? > DDRB &= ~(1 << PB3); //löschen Hier muß man aufpassen. Da wird der Pin auf Eingang geschaltet und damit hochohmig. Die Spannung am Schalteingang des Verstärkers ist nicht mehr definiert und der Verstärker kann durch Störungen o.ä. unabsichtlich aktiviert werden. Außerdem verwende ich äußerst gerne sprechende Namen im Quelltext. Damit kommentiert sich der Code quasi von selbst:
1 | #define AMP_PIN (PB3)
|
2 | #define AMP_INIT set_bit( DDRB, AMP_PIN);
|
3 | #define AMP_ON set_bit( PORTB, AMP_PIN);
|
4 | #define AMP_OFF clear_bit( PORTB, AMP_PIN);
|
5 | |
6 | ...
|
7 | |
8 | void setup( void) |
9 | {
|
10 | |
11 | set_sleep_mode( SLEEP_MODE_PWR_DOWN); |
12 | |
13 | // Verstaerker: Ausgang
|
14 | AMP_INIT; |
15 | AMP_OFF; |
16 | |
17 | ...
|
18 | |
19 | speed = pgm_read_byte( &lied[ liedcount]); |
20 | AMP_ON; |
21 | SOUNDON; |
22 | liedcount++; |
23 | |
24 | ...
|
25 | |
26 | else
|
27 | {
|
28 | SOUNDOFF; // falls noch Ton an |
29 | AMP_OFF; |
30 | sleep_mode(); |
Jau, jez geht´s Danke Bernd. Deine Version ist natürlich schöner. Es waren ja meine erstem C Versuche. Ich schalte ein BC546 mit hohen Basiswiderstand, der ein P-Mosfet die 12Volt einschaltet. Der Verstärker wird ein TDA 2030 werden. Kann man als Modul bei Ebay erwerben. Probiert habe ich es nicht. Müsste aber so gehen. Am Gate werde ich auch noch Widerstand gegen 12V schalten, wegen halt des offenen Kollektor.
Hier die Schaltung für den Verstärker. Die Module von Ebay muss man umbauen wegen der starken Verstärkung. Ein Widerstand tauschen um Gain zu reduzieren.
Ok. In diesem Fall ist es kein Problem, wenn der Ausgang PB3 hochohmig ist. Wenn Du das Modul fertig hast, wäre es nett, den Ruhestrom (mit und ohne Abschaltung) zu ermitteln und hier mitzuteilen.
Ich habe noch so ein Verstärkermodul gefunden. Bernd schrieb: > Wenn Du das Modul fertig hast, wäre es nett, den Ruhestrom (mit und ohne > Abschaltung) zu ermitteln und hier mitzuteilen. Also mit Abschaltung ist der Strom unmessbar klein. Ohne Abschaltung liege ich bei 23mA! Der Mikrocontroller braucht 0,4µA Jetzt hat man eine 12V Battrie. Um auf 5V zu kommen könnte man ein Spannungsregler nehmen. Geht aber nicht, der braucht auch 5mA. Ich löse das so wie im Bild. Beim Verstärker müssen die Widerstände R4 und R5 im Verhältnis 1:4 sein. Somit erhält man eine Verstärkungsfaktor von 4. Man kann auch höheren Faktor probieren.
Ein besseres Bild. Also z.B. R4 auf 22k und R5 lassen.
:
Bearbeitet durch User
...besser du nimmst eines der Class D PAM8xxx Module vom Chinesen und versorgst alles mit 3,7V - wenn das vom Power nicht reicht, dann halt noch einen kleinen step-up auf 9...12V (den du ebenfalls über den Control pin ein/ausschaltest). Beides gibt's für ~1€ (!) beim Chinesen. TDAxxxx & gesplittete Batterien sind schon etwas "wenig zeitgemäß" :) Klaus.
Hier nun eine vierstimmige Version mit Wavetable und Hüllkurve! Neben diesem Projekt, wurden auch Ideen aus den folgenden Projekten genutzt: http://elm-chan.org/works/mxb/report.html http://www.technoblogy.com/show?20W6 Theorie Die Ursprungsversion aus dem Jahr 2008 hat Rechtecksignale als Töne ausgegeben, die zwar schön laut sind, aber auch nicht sehr harmonisch. In dieser Variante wird nach dem DDS-Prinzip eine Tabelle mit Samples (Wavetable) mit unterschiedlicher Schrittweite ausgelesen und über die High-Speed-PWM des ATtiny ausgegeben. Die High-Speed-PWM (hier 250 kHz) wirkt gewissermaßen als DAC. Auf den Tiefpass zum Glätten kann verzichtet werden, das übernimmt der Lautsprecher bzw. das Gehör. Nur durch Änderung der Wavetable lassen sich beliebige Signalformen, wie z.B. Sinus, Dreieck, Sägezahn und auch Rechteck erzeugen. Die Frequenz wird durch Änderung der Schrittweite angepasst. Im nächsten Schritt wird nun jedes Sample zusätzlich mit einem Lautstärkewert multipliziert. Die Lautstärkewerte kommen aus der Hüllkurventabelle. Außerdem wird bei der nächsten Note die Wiedergabe nicht einfach abgewürgt, sondern die neue Note wird im nächsten Kanal abgespielt, während die anderen Kanäle noch ausklingen. Das Resultat kann man sich in Klangbeispiel.mp3 anhören. Sample & Hüllkurve Als Sample habe ich ein lautes asymmetrisches Dreiecksignal mit einem leisen Dreiecksignal der dreifachen Frequenz kombiniert (Kurven.png, links oben). Die Hüllkurve (Kurven.png, rechts oben) orientiert sich am Klavierklang. Wer bessere Vorschläge hat: her damit, ich bin kein Musiker.... Hardware Es wird sowohl die Variante mit dem komplementären Emitterfolger (Ausgang an PB1, schematic__Klingel_original.png) als auch die Schaltung nach ELM ChaN (Lautsprecher + Vorwiderstand zwischen PB1 und PB4) unterstützt (schematic__elm_chan__mg.png). Letzteres spart zwei Transistoren und ist trotz Minimalismus genauso laut. Der Taster zum Triggern (low active) gehört immer noch an Pin PB2. Zusätzlich gibt es den Schaltausgang (high active) an Pin PB3 um einen externen Verstärker einzuschalten. Fuses Damit die Rechenleistung ausreicht, muß der Takt auf 16 MHz (PLL-CLK) erhöht werden. Das geht mit folgenden Einstellungen: low fuse: 0xC1 high fuse: 0xDF extended fuse: 0xFF Für Avrdude-Nutzer: -U lfuse:w:0xc1:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m Software Als Sampletakt wird 20 kHz genutzt. Das alte Sample wird zu Beginn der Interruptroutine ausgegeben, damit der Jitter reduziert wird. Anschließend startet die neue Berechnung. Die Zeit, die in der Interruptroutine benötigt wird, um für alle vier Kanäle die Hüllkurve mit der Samplekurve zu multiplizieren, variiert zwischen 23 und 45 µs. Pro Kanal werden max. ca. 12 µs zur Berechnung bnötigt. Die Auslastung liegt zwischen 45 und 90% und der kleine Tiny muß mal richtig was machen :-) Zum Vergleich: ELM ChaN hat bei seinem Projekt sechs Kanäle mit 32 kHz Samplerate und 80% Auslastung realisiert (4 µs pro Kanal). Hier kann man mit handoptimiertem AVR-Assembler Faktor 3 rausholen gegenüber mäßig optimiertem C-Code. Plopp Mit dem komplementären Emitterfolger ploppte es im Lautsprecher beim Ein- und Ausschalten. Daher wird die PWM langsam hoch- und runtergefahren. Lieder Außerdem gab es eine kleine Anpassung des kürzesten und des längsten Songs. Der griechische Wein (Nr. 71) sprudelt nur noch 8 statt 38 Sekunden und liegt nun mit im Mittelfeld (Stuecklaenge_Histogramm.png). Das kürzeste Stück (Nr. 40) wurde von 1,0 auf 1,3 Sekunden verlängert. Ausblick Jetzt müßten eigentlich noch die Noten umgestellt werden, weil sich Akkorde oder eine zweite Stimme oder gar ein zweites Instrument abbilden lassen. Die Rechnung mit der Hüllkurve kann man evtl. von Multiplikation auf schnelle Schiebeoperationen umstellen, um so mehr Zeit für eine höhere Samplerate oder weitere Stimmen zu bekommen. Viel Spaß mit dem Update! P.S.: Noch ein kleiner Fehler in der letzten Version (die ohne Hüllkurve): Die 64 MHz-PLL muß nach dem Aufwachen aus dem Sleep-Mode erst wieder aktiviert werden. Andernfalls ist der Takt für den Timer 1 nur 16 MHz, was zu einer niedrigen PWM-Frequenz (62,5 kHz) und zu hochfrequenten Interferenzen führt. Dafür reicht es nach dem sleep_mode() die folgende Zeile einzufügen:
1 | PLLCSR = 1<<PCKE | 1<<PLLE; |
Interessant! Kann man das ganze auch unter atmega328 verwenden? Vielen Dank
Stümper schrieb: > Interessant! Kann man das ganze auch unter atmega328 verwenden? Die PLL scheint es nur in den ATtiny25/45/85, ATtiny26 und AT90PWM2/AT90PWM3 zu geben. Und vielleicht noch in neueren Chips, für die meine Toolchain noch keine Includes hat. Wenn man statt der PWM einen ganzen 8-Bit-Port mit einem DAC08/DAC0800 oder R2R-DAC beschaltet, sollte man vergleichbare Ergebnisse erhalten. Der Schaltungsaufwand ist höher. Dafür kann man durch die schnellere HW-Multiplikation die Samplerate oder die Stimmenzahl steigern.
Schade. Die liegen hier noch reichlich herum ... :D Danke für die Info.
Hallo Forumgemeinschaft , ich möchte auch die Klingel mit Attiny45 aus dem ersten Beitrag nachbauen . Ich habe mich etwas eingelesen und bis der bestellte Controller kommt hätte ich noch eine Frage bezüglich der Beschaltung des Attiny : muss ich auch den Reset -Pin (1) per Widerstand auf Vcc legen oder wird das schon durch das Programm (HEX ) gemacht ? Vielen Dank Josef
Verzeiht wenn ich als Grinch rede: Wer von Euren Lieben verdient wirklich von so einer Quälmaschine heimgesucht zu werden? Was mich betrifft, würde es mir beim zweiten Anhören schon gewaltig auf die Nerven gehen. Also, wenn ihr Eure Mitmenschen gerne habt, tut es ihnen bitte nicht an. Vernichtet Quellen, Schaltpläne und Gerber Daten auf dem Scheiterhaufen um die Menschheit von diesen Ausgeburten zu bewahren. Naja, wenn das alles nicht zutreffen sollte, viel Freude damit! Hochachtungsvoll, Grinch
Grinch schrieb: > Also, wenn ihr Eure Mitmenschen gerne habt, tut es ihnen bitte nicht an. blah blah blah, kann ein Mod das Gesülze oben entfernen?
Josef B. schrieb: > muss ich auch den Reset -Pin (1) per Widerstand auf Vcc legen Die neueren Tinys haben den Widerstand schon intern verbaut, schaden tut es aber defintiv nicht. VG Paul
Vielen Dank Paul . Ich habe gestern noch die Leiterplatte mit EAGLE gemacht und habe schon praeventiv auch diesen Widerstand eingezeichnet. Ich denke so 10 k Ohm wuerden gehen , oder etwas kleiner ? Attiny-s sind auch angekommen,einer auch schon programmiert , hoffe dass es diese Woche noch klappt. Gruss aus dem Banat (Rumaenien ) Josef
:
Bearbeitet durch User
egberto schrieb: > Hardwareaufwand (ATTINY45, Batterie, PC-Lautsprecher, Kleinkram). Krandios! Danke Danke Danke! Bei mir wirds Weihnachten richtig festlig! hab alles in der Basteltruhe.
Schöne Sache. Habe die einfache Version der Melodieklingel nachgebaut. Mit dem polyphonen Programm hatte ich leider keinen Erfolg. Allen Danke für Ihre Beiträge. Hat mir Zeit erspart. Somit konnte ich mich der Hausklingelanlage widmen. Anbei poste ich mal die Schaltung für eine Funkklingel mit dem Funkmodul (RX + TX) von Qiachip RX480E. Die Herausforderung war, daß das Klingelsignal über den Bus von einer Siedle HTS811 Gegensprechanlage kommt. (Klemme Pin 7) Weiterhin kommt noch der Etagenruf (Klemme ERT) hinzu. Gemeinsame Masse ist (Klemme Pin 1). Es gibt sehr sehr ähnliche Anlagen (1+n System), wie HAT-402, Elcom 1308810. Diese Anlage hat einen Relaisausgang (5.1/6.1 potentialfreier Kontakt) für eine Zweitklingel. Über die Jumper JP3 und JP6 muß das Relais freigegeben werden. Wenn dies nicht funktioniert, dann kann analog meines Schaltplans die Schaltung angekoppelt werden. 3 -> ERT, 6 -> Bus (7), 5 -> Masse (1). THX
Kurzer Nachtrag: Nach Diode D2 und vor Diode D6, R2 und T2 fehlt noch ein Widerstand von 1k. Als Mosfet's gehen auch BSS 170 oder BSS 270.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.