Susan
Jump to navigation
Jump to search
Project Susan Release status: experimental [box doku] | |
---|---|
Description | Project Susan is a combination of highpass filters that are designed to light up based on the tone of Susans voice using 3 high pass filters |
Author(s) | Paul Adams |
Last Version | alpha |
- eagle file available here: Project Susan
- the eagle schematics read attiny13, but ignore this, i used the attiny85 but didn't have the part in eagle
Components
- 1 electret microphone (take from an old computer microphone)
- 1 ATtiny85
- 1 lm358p op-amp
- RGB LED
- resistors: 2x 220Ω 1x 330Ω 1x 10m Ω 1x 100k Ω 1x 1k Ω 1x 1m Ω, 1x 0.5M Ω 1x 21k Ω
- ceramic capacitors: 1x 105 (for decoupling), 3x 222p
- electrolytic capacitor: 1x 4.7uf 1x 2.2uF
- someones head
code
- most of the processing is done offchip, just needed a processor for the pwm and a little bit more filtering, attiny13 would have been good if you could get the PWM library on its 1k flash
- tiny_core for attiny85 @ 1Mhz internal oscillator
- you need to disable the reset pin since we need it (avrfuses on a mac)
unsigned int r,g,b = 0; unsigned int sensorPin1 = 0; //PB5 unsigned int sensorPin2 = 3; //PB3 unsigned int sensorPin3 = 1; //PB2 unsigned int outred = PB4; unsigned int outgreen = PB0; unsigned int outblue = PB1; unsigned int levels = 100; void setup() { pinMode(outred, OUTPUT); pinMode(outgreen, OUTPUT); pinMode(outblue, OUTPUT); analogReference(0); } void loop() { red(analogRead(sensorPin1)); green(analogRead(sensorPin2)); blue(analogRead(sensorPin3)); delay(30); } void red(int value) { if (value > 120) { r = levels; } if (r > 0) { r--; } analogWrite(outred, map(r, 0, levels, 0, 255) ); } void green(int value) { if (value > 120) { g = levels; } if (g > 0) { g--; } analogWrite(outgreen, map(g, 0, levels, 0, 255) ); } void blue(int value) { if (value > 20) { b = levels; } if (b > 0) { b--; } analogWrite(outblue, map(b, 0, levels, 0, 255) ); }