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);
    } 
  }
} 
 
		 
			 
 
		
 
 
 
			 
			 :
 : 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		