54 lines
		
	
	
	
		
			783 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
	
		
			783 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | byte foo; | ||
|  | int bar; | ||
|  | byte mul; | ||
|  | byte cnt; | ||
|  | float wow; | ||
|  | boolean b; | ||
|  | int inv; | ||
|  | 
 | ||
|  | #define WOW_FACTOR 512 | ||
|  | #define WOW_LIMIT 4 | ||
|  | 
 | ||
|  | void setup() { | ||
|  |     pinMode(8, OUTPUT); | ||
|  |     cnt = 0; | ||
|  |     mul = 1; | ||
|  |     wow = WOW_FACTOR; | ||
|  |     inv = 1; | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | void loop() { | ||
|  |    | ||
|  |   if( cnt == 0 ) { | ||
|  |     mul = random(6)+1; | ||
|  |     cnt = 25; | ||
|  |   } | ||
|  |    | ||
|  |   cnt--; | ||
|  |    | ||
|  |   foo = random(5*mul)+2; | ||
|  |    | ||
|  |   for(bar = 0; bar < (255-(foo*20)); bar++) { | ||
|  |      | ||
|  |      | ||
|  |     if( inv == 1 ) | ||
|  |       wow /= 2; | ||
|  |     else | ||
|  |       wow *= 2; | ||
|  |        | ||
|  |     if( wow < WOW_LIMIT || wow > WOW_FACTOR ) { | ||
|  |       inv = inv == 1 ? -1 : 1; | ||
|  |     } | ||
|  |      | ||
|  |     digitalWrite(8, b = !b); | ||
|  |     delayMicroseconds((WOW_FACTOR+(wow*inv))*foo+(bar*2*b)); | ||
|  |      | ||
|  |     // NOISE | ||
|  |     if( random(10) == 0 ) { | ||
|  |       digitalWrite(8, b = !b); delayMicroseconds(4500); digitalWrite(8, b = !b); | ||
|  |     }  | ||
|  |   } | ||
|  | } |