Forum: Mikrocontroller und Digitale Elektronik Sound to Light in Bascom Programieren


von Andreas W. (Firma: Lichtpunkt-LED) (andy01)


Lesenswert?

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.

von Jack B. (jackbraun)


Lesenswert?

>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.

von Andreas W. (Firma: Lichtpunkt-LED) (andy01)


Lesenswert?

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 ?

von Florian (Gast)


Lesenswert?

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.

von Andreas W. (Firma: Lichtpunkt-LED) (andy01)


Lesenswert?

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.

von Florian (Gast)


Lesenswert?

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.

von Andreas W. (Firma: Lichtpunkt-LED) (andy01)


Lesenswert?

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.

von Florian (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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

von Florian (Gast)


Lesenswert?

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.

von Andreas L. (andi84)


Lesenswert?

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.

von Carsten P. (papa_of_t)


Lesenswert?

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"

von Andreas W. (Firma: Lichtpunkt-LED) (andy01)


Lesenswert?

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.

von Marko (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.