NicolasK
|||||
Hallo an alle,
ich habe endlich angefangen das in diesem, von mir gehijackten, fred:
viewtopic.php?f=13&t=98768
beschriebene Klangobjekt zu bauen.
Nachdem ich mir eine ganze nacht(tatsächlich ca 8stunden(incl nebenher surfen und kurz essen) um die ohren gehauen habe um ein arduino programm
zusammen zu klauen welches 6 pins mit rauschen belegt und dieses, für jeden einzeln, random an und wieder abschaltet, habe ich mit dem bau der Verstärkerschaltung begonnen.
https://cdn-reichelt.de/documents/daten ... XX_STM.pdf seite 4
An dieser stelle Herzlichen dank an Nordcore, dubmatze, hesspet und humax5600 die mich mit tips und anleitung versorgt haben.
unten seht ihr den breadboardaufbau der schaltung.
ich möchte versuchen das ganze in seinen schritten zu dokumentieren, bis am ende das große schwarze rechteck mit seinen 50 kleinen lautsprecherndie hinter stoff rauskommt.
da im andern fred interesse am fortgang (und den sich ergebenden Problemen) bekundet wurde, hab ich hier schon eins, bzw eine frage:
wenn ich den Lautsprecher (25w, 8Ω) direkt an den arduino hänge rauscht es laut und ordentlich. am ende der verstärkerschaltung krächzt und kratzt es nur.
wenn ich am poti drehe wird es nur irgendwann aus.
liegt das vielleicht am nicht stabilisierten netzteil das etwas mehr als 12V (12.38v) liefert?
oder daran dass an dem 5v anschluss auch etwas mehr, 5.24v liefert?
EDIT: das problem ist gelöst, es lag an der nicht gesetzten verbidung zu tp1.
aber jetzt gibt es einen ekligen sinus auf den speakern, wohl das hier:
viewtopic.php?f=13&t=98768&start=50#p1139526
also mehr experimente in die richtung.
hier, für die die es interessiert, der arduino code:
ich habe endlich angefangen das in diesem, von mir gehijackten, fred:
viewtopic.php?f=13&t=98768
beschriebene Klangobjekt zu bauen.
Nachdem ich mir eine ganze nacht(tatsächlich ca 8stunden(incl nebenher surfen und kurz essen) um die ohren gehauen habe um ein arduino programm
zusammen zu klauen welches 6 pins mit rauschen belegt und dieses, für jeden einzeln, random an und wieder abschaltet, habe ich mit dem bau der Verstärkerschaltung begonnen.
https://cdn-reichelt.de/documents/daten ... XX_STM.pdf seite 4
An dieser stelle Herzlichen dank an Nordcore, dubmatze, hesspet und humax5600 die mich mit tips und anleitung versorgt haben.
unten seht ihr den breadboardaufbau der schaltung.
ich möchte versuchen das ganze in seinen schritten zu dokumentieren, bis am ende das große schwarze rechteck mit seinen 50 kleinen lautsprecherndie hinter stoff rauskommt.
da im andern fred interesse am fortgang (und den sich ergebenden Problemen) bekundet wurde, hab ich hier schon eins, bzw eine frage:
wenn ich den Lautsprecher (25w, 8Ω) direkt an den arduino hänge rauscht es laut und ordentlich. am ende der verstärkerschaltung krächzt und kratzt es nur.
wenn ich am poti drehe wird es nur irgendwann aus.
liegt das vielleicht am nicht stabilisierten netzteil das etwas mehr als 12V (12.38v) liefert?
oder daran dass an dem 5v anschluss auch etwas mehr, 5.24v liefert?
EDIT: das problem ist gelöst, es lag an der nicht gesetzten verbidung zu tp1.
aber jetzt gibt es einen ekligen sinus auf den speakern, wohl das hier:
viewtopic.php?f=13&t=98768&start=50#p1139526
also mehr experimente in die richtung.
hier, für die die es interessiert, der arduino code:
Code:
/* Pseudo-Random Bit Sequence Generator 2009-11-25 */
/* Copyright (c) 2009 John Honniball, Dorkbot Bristol */
// also used code from and inspired by:
// SeveralThingsAtTheSameTimeRev1.ino
// by arduino-forum member: Robin2
//http://forum.arduino.cc/index.php?topic=223286.0
//___________________________________________________________________
// Konstanten:
// 5 Pins die das Rauschen ausgeben sollen
const int speakerPin2 = 2;
const int speakerPin3 = 3;
const int speakerPin4 = 4;
const int speakerPin5 = 5;
const int speakerPin6 = 6;
unsigned long int reg;
// Variablen:
int anAus2 = 0; //wie drüben onboardledstate
long zeitAn2 = 600;
long zeitAus2 = 400;
int anAus3 = 0; //wie drüben onboardledstate
long zeitAn3 = 600;
long zeitAus3 = 400;
int anAus4 = 0; //wie drüben onboardledstate
long zeitAn4 = 620;
long zeitAus4 = 430;
int anAus5 = 0; //wie drüben onboardledstate
long zeitAn5 = 500;
long zeitAus5 = 500;
int anAus6 = 0; //wie drüben onboardledstate
long zeitAn6 = 600;
long zeitAus6 = 400;
/* Init Zeiten für an und Aus, sollen behandelt werden wie in original Patch
die entsprechenden Blink konstanten */
unsigned long jetztZeit = 0;
unsigned long vorherigeRauschZeit2 = 0;
unsigned long vorherigeRauschZeit3 = 0;
unsigned long vorherigeRauschZeit4 = 0;
unsigned long vorherigeRauschZeit5 = 0;
unsigned long vorherigeRauschZeit6 = 0;
void setup ()
{
// Serial setup for debugging only; slows down the program far too much
// for audible white noise
Serial.begin (9600);
// Connect a piezo sounder between Ground and this pin
pinMode (speakerPin2, OUTPUT);
pinMode (speakerPin3, OUTPUT);
pinMode (speakerPin4, OUTPUT);
pinMode (speakerPin5, OUTPUT);
pinMode (speakerPin6, OUTPUT);
// Arbitrary inital value; must not be zero
reg = 0x55aa55aaL;
}
void loop()
{
jaNein2();
jaNein3();
jaNein4();
jaNein5();
jaNein6();
jetztZeit = millis();
unsigned long int newr;
unsigned char lobit;
unsigned char b31, b29, b25, b24;
// Extract four chosen bits from the 32-bit register
b31 = (reg & (1L << 31)) >> 31;
b29 = (reg & (1L << 29)) >> 29;
b25 = (reg & (1L << 25)) >> 25;
b24 = (reg & (1L << 24)) >> 24;
// EXOR the four bits together
lobit = b31 ^ b29 ^ b25 ^ b24;
// Shift and incorporate new bit at bit position 0
newr = (reg << 1) | lobit;
// Replace register with new value
reg = newr;
// Drive speaker pin from bit 0 of 'reg'
digitalWrite (speakerPin2, (reg & 1)*anAus2);
digitalWrite (speakerPin3, (reg & 1)*anAus3);
digitalWrite (speakerPin4, (reg & 1)*anAus4);
digitalWrite (speakerPin5, (reg & 1)*anAus5);
digitalWrite (speakerPin6, (reg & 1)*anAus6);
delayMicroseconds (50);
}
void jaNein2()
{
if (anAus2 == 0)
{
// wenn aus, warten bis zeit abgelaufen ist
if (jetztZeit - vorherigeRauschZeit2 >= zeitAus2)
{
// time is up, so change the state to HIGH
anAus2 = 1;
// and save the time when we made the change
vorherigeRauschZeit2 += zeitAus2;
zeitAus2 = random ( 50, 2200);
}
}
else { // i.e. if onBoardLedState is HIGH
// if the Led is on, we must wait for the duration to expire before turning it off
if (jetztZeit - vorherigeRauschZeit2 >= zeitAn2)
{
// time is up, so change the state to LOW
anAus2 = 0;
// and save the time when we made the change
vorherigeRauschZeit2 += zeitAn2;
zeitAn2 = random ( 50, 2200);
}
}
}
void jaNein3()
{
if (anAus3 == 0)
{
// wenn aus, warten bis zeit abgelaufen ist
if (jetztZeit - vorherigeRauschZeit3 >= zeitAus3)
{
// time is up, so change the state to HIGH
anAus3 = 1;
// and save the time when we made the change
vorherigeRauschZeit3 += zeitAus3;
zeitAus3 = random ( 50, 2200);
}
}
else { // i.e. if onBoardLedState is HIGH
// if the Led is on, we must wait for the duration to expire before turning it off
if (jetztZeit - vorherigeRauschZeit3 >= zeitAn3)
{
// time is up, so change the state to LOW
anAus3 = 0;
// and save the time when we made the change
vorherigeRauschZeit3 += zeitAn3;
zeitAn3 = random ( 50, 2200);
}
}
}
void jaNein4()
{
if (anAus4 == 0)
{
if (jetztZeit - vorherigeRauschZeit4 >= zeitAus4)
{
anAus4 = 1;
vorherigeRauschZeit4 += zeitAus4;
zeitAus4 = random ( 50, 2200);
}
}
else {
if (jetztZeit - vorherigeRauschZeit4 >= zeitAn4)
{
anAus4 = 0;
vorherigeRauschZeit4 += zeitAn4;
zeitAn4 = random ( 50, 2200);
}
}
}
void jaNein5()
{
if (anAus5 == 0)
{
if (jetztZeit - vorherigeRauschZeit5 >= zeitAus5)
{
anAus5 = 1;
vorherigeRauschZeit5 += zeitAus5;
zeitAus5 = random ( 50, 2200);
}
}
else {
if (jetztZeit - vorherigeRauschZeit5 >= zeitAn5)
{
anAus5 = 0;
vorherigeRauschZeit5 += zeitAn5;
zeitAn5 = random ( 50, 2200);
}
}
}
void jaNein6()
{
if (anAus6 == 0)
{
if (jetztZeit - vorherigeRauschZeit6 >= zeitAus6)
{
anAus6 = 1;
vorherigeRauschZeit6 += zeitAus6;
zeitAus6 = random ( 50, 2200);
}
}
else {
if (jetztZeit - vorherigeRauschZeit6 >= zeitAn6)
{
anAus6 = 0;
vorherigeRauschZeit6 += zeitAn6;
zeitAn6 = random ( 50, 2200);
}
}
}