Hallo Leidensgenossen.. ;-) Ich möchte mir gerne eine Sound to Light steuerung bauen. Ich wollte eine Microphonvorstufe an einem Atmega8 anschließen an den A/D eingängen. Dann einige Lauflichter Programieren und diese dann über die Impulse des Mikrophonverstärkers komplett beeinflussen. Die Empfindlichkeit des Mikrophones, die Laufgeschwindigkeit und einen Farbwechsler für RGB LED´s ebenfalls steuern können. Zum einen die Laufgeschwindigkeit per taster sowie auch den Farbwechsel mit direktanwahl mit Tastern und dann die Lauflichter und Farbwechsel etc per tastendruck dem eingang des Mikrophones zuordnen. Das die Steuerung sehr Komfortabel wird. Allerdings reichen meine Programierkenntnisse NOCH nicht dafür aus, um alles komplett selbst zu erstellen. Zumindest die Mikrophonabfrage bekomme ich nicht selbst hin. Wäre nett, wenn mir jemand zumindest dabei helfen könnte den A/D eingang eines AVR´s so zu Programieren, sodass ich damit zumindest Programmteile beeinflussen könnte...den Rest würde ich bestimmt schon dann irgendwie hinbekommen. Übrigens ich Programiere mit BASCOM... in C und anderen Compillern habe ich null ahnung. Danke schonmal im Vorraus.
>Allerdings reichen meine Programierkenntnisse NOCH nicht dafür aus, um >alles komplett selbst zu erstellen. Dann vergiß es einfach. Oder Du nimmst das "NOCH" ernst und lernst dazu.
Hi Das NOCH bezieht sich dadrauf, das ich nicht weiß, wie der Code aussehen muß um die Daten des Mikrophones auszuwerten, um damit dann die Programmierung und Programmabfolge zu beeinflussen. Lauflichter oder Tastenabfragen und kleinere Programme sind kein Problem für mich. Aber ich Dachte eigentlich, das dieses Forum explizit für solche Fragen konzipiert wurde. Denn wenn ich keinerlei Fragen etc. hätte und alles selbst könnte, dan bräuchte ich das Forum ja eigentlich nicht. Oder ?
Vermutlich ist das nicht ganz so einfach, was Du da vorhast. Man könnte einen Tiefpass nehmen und einen Trigger dahinter schalten, mit dem Du dann einen digitalen Eingang Deines µCs steuert. Dann hättest Du quasi eine Art Beat-Signal. Wenn Du aber eine Lichtorgel haben möchtest (also Licht abhängig von der Frequenz steuern), dann solltest Du vielleicht doch komplett auf eine andere Technologie umsteigen.
Danke für deine Antwort. Ich habe mir gedacht, da das Signal durch den A/D Wandler ja nun 256 Schritte haben wird (War mir zumindest so) das ich diese Schritte dann gewissen Frequenzen zuordne, die dann eventuell noch Leistungsabhängig sind. Dann bei einer gewissen Signalstärke und einer bestimmten Frequenz dann bestimmte Lauflichteffekte oder gewisse Flashfunktionen ausführen lasse. Wobei dann, wenn andere Frequenzen in anderen Signalstärken vorhanden sind, das dann eine art Peaklevel an den Ausgängen liegen. Dazu müßte ich dann gewisse Vorraussetzungen vorab in den Speicher schreiben, die dann immer abgerufen werden, falls diese dann mit den Istwerten übereinstimmen. Sofern ich mich da jetzt nicht total verhaspelt habe.
Nicht ganz. Die ADC-Stufen entsprächen eher der Lautstärke (auch wenn das doch noch ein wenig komplizierter ist), die Frequenz ergäbe sich erst, wenn man mehrere Abtastwerte pro Zeiteinheit (Stichwort Sampling) hätte und auch dann erst durch etwas aufwändigere Berechnungen, die sicher mit dem Controller so nicht zu realisieren sind. Du könntest z.B. einen Teil einer konventionellen Lichtorgel verwenden, d.h. das Signal rein analog in Frequenzanteile (mittels Bandpässen o.ä.) aufteilen und diese Signale, wenn sie dann eine bestimmte Schwelle (im Prinzip Lautstärke) überschreiten als digitales 'Beat'-Signal in den Controller jagen.
Das mit den Frequenzen und der Intensität lässt sich ja ohne weiteres Extern beschalten...ok. einfache Hoch , Tief und Bandpässe sind kein Problem für mich (bin Elektroniker) Nur das mit der Umsetzung in Bascom, das dann die Signale dementsprechend ausgewertet werden können, macht mir kleinere Probleme.
Mit Bascom kenne ich mich leider auch nicht aus, so dass ich hier nicht von großer Hilfe bin. Ich persönliche arbeite lieber mit C oder Assembler.
Hallo, falls die Signal vieleich schon digital vorlägen ginge das vieleicht mit dem AVR soviel ich weiß gab es hier im forum schonmal einen der ne FET mit ordentlicher updatefrquenz mit dem AVR geschafft hat. Gruß Peter
Man könnte auch IIR-Filter bzw. Biquads für die Bandpässe nehmen aber vermutlich ist die Abtastfrequenz des ADCs nicht hoch genug, habe aber das Datenblatt gerade nicht zur Hand.
Das gabs schonmal. (Beitrag "Re: Drei Frequenzbereiche mit FFT bestimmen") In C hab ich mal irgendwann sowas anefangen. Basiert auf der FFT Bibliothek von Chan. Mit BASCOM wird das wohl eher bäh. Einfacher wäre es z.B. 4 Bandpässe zu nehmen und die dann auf ADC-Eingänge zu legen. Falls man nur den Beat erkennen will, kann man sich mal die Schaltung vom ELV Beatcounter angucken (auf deren Website erhältlich). Die ist allerdings nicht gerade eine Offenbahrung. Erkennt mal was und dann wieder nix. Oder macht mal vier impulse für eine Beat. Also eher mäßig und nur mit nachgeschaltetem Programm brauchbar. Allerdings würde ich die Beats dann eher mit Stochastischen Methoden verarbeiten. Könnte man eventuell mit einem Poissonprozess modellieren und die Varianz verwenden, um zu erkennen, ob das, was da reinkommt, brauchbar ist. Der AVR-ADC kann durchaus recht hohe Sampleraten erreichen (>22kS/sec), allerdings geht irgendwann die Auflösung flöten und man hat vielleicht noch 6 Bits, die nicht einfach nur rauschen.
Hier hast Du ein Beispiel samt Fehlervermeidung zum Abfragen der ADCs in BASCOM. Ich würde aber auch mit externen Hoch- und Tiefpässen arbeiten (schon um Lautstärke und Frequenz einfach auseinanderzuhalten) Beitrag "Re: Mega8 ADC Meßproblem"
Danke für eure Antworten. Ich werde es nachher gleich mal ausprobieren. Mal sehen, ob dann alles so läuft, wie ich es mir Denke, bin da doch guter Dinge. Werde dann ersteinmal die Externen Filter aufbauen (Hoch , Tief und Bandpässe) Und mich dann an die Programierung setzen. Ergebnisse werde ich dann hier kundtun. Fals jemand doch noch die eine oder andere Idee haben sollte, wie man das ganze dann eventuell etwas einfacher machen könnte, einfach posten.
hinter die Pässe dann trigger. Die Trigger dann auf Ports des AVR und diese dann zyklisch abfragen währ mal n brauchbarer anfang
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.