Post by Admin on May 26, 2016 13:51:30 GMT
Hey People,hope u're done till lesson 3 by now.If not,u can still try this one out,it's fun.
-->>[Making a Light Theremin using an Arduino,an LDR and a piezo buzzer]
This project uses an LDR/photocell(Light Detecting Resistor/light senor/super cheap in the market) and a piezo buzzer(sort of a speaker generating different frequencies) to make weird frequency sounds by moving your hand/anyObject over the LDR and varying the intensity of light.
-->>So,How to proceed?
Use about a 1 kΩ resistor when you hook up the LDR. Feel free to experiment with other resistance values to see what happens.
What you're doing is with the LDR,u're generating random serial values which are being forwarded to the buzzer/speaker as frequencies.Again,u can check these values in the serial monitor of ur Arduino and the conversion to the frequency can be understood by code.
Once u've done the set up as shown in the Circuit Below,
Move your hand up and down over the top of the LDR and have fun watching how the sound changes!
The Creative people of u can heck even make your own music with such a system,for this is just another Musical instrument.
PS:U can use Thermistor readings too(lesson 3) instead of LDR's as analog input,that would make the sounds temperature dependent(exciting,isn't it,sounds changing with change in temperature)
-->>Reference Circuit Diagram:
Again,this is very much Basic.
So,no need for questions on it.Just follow the ideal code(or u can simply write your own code & try experimenting)
Here's the ideal Arduino code. And obviously, you can adjust the values, especially MIN_FREQ and MAX_FREQ values.
-->>Code:
int SPEAKER = 8;//Digital pin 8(Incorrect in the circuit diagram) to the buzzer and the other buzzer wire to Gnd
int LIGHTSENSOR = 0;// Analog pin for LDR
// Typical LDR values for daytime
// 1k resistor:
// min 15, max 100.
#define MIN_SIGNAL 15 /* 100 */
#define MAX_SIGNAL 100 /* 1024 */
// What frequencies should we allow (in Hertz)?
// Typical human hearing is 20 Hz to 20,000 Hz,
// but our piezo buzzers can't reproduce such a wide range.
// 100 to 10k or so is usually okay.
#define MIN_FREQ 100
#define MAX_FREQ 8000
// How many samples should we read from the sensor each time?
// The sensor is noisy, so there will be a lot of spurious readings.
#define NUM_SAMPLES 15
// To monitor the output from the sensor (so you can calibrate MAX_SIGNAL and MIN_SIGNAL)
#define SERIAL_DEBUG 1
void setup()
{
pinMode(SPEAKER, OUTPUT);
#ifdef SERIAL_DEBUG
Serial.begin(9600);
#endif
}
void loop()
{
// Set the frequency according to the light value read off analog pin 0.
// Average 5 reads
int lightsensor = 0;
int Amplify=0;
for (int i=1; i < NUM_SAMPLES; ++i)
lightsensor += analogRead(LIGHTSENSOR);
lightsensor /= NUM_SAMPLES;
unsigned int freq = map(lightsensor,
MIN_SIGNAL, MAX_SIGNAL,
MIN_FREQ, MAX_FREQ);
Amplify=freq/4;
tone(SPEAKER, Amplify);
#ifdef SERIAL_DEBUG
Serial.print("Read ");
Serial.print(lightsensor);//Monitor LDR serial Input
Serial.print(" -> ");
Serial.println(freq);//Monitor frequency
delay(500);
#endif
}
Signing off,
Until the next Lesson.
-->>[Making a Light Theremin using an Arduino,an LDR and a piezo buzzer]
This project uses an LDR/photocell(Light Detecting Resistor/light senor/super cheap in the market) and a piezo buzzer(sort of a speaker generating different frequencies) to make weird frequency sounds by moving your hand/anyObject over the LDR and varying the intensity of light.
-->>So,How to proceed?
Use about a 1 kΩ resistor when you hook up the LDR. Feel free to experiment with other resistance values to see what happens.
What you're doing is with the LDR,u're generating random serial values which are being forwarded to the buzzer/speaker as frequencies.Again,u can check these values in the serial monitor of ur Arduino and the conversion to the frequency can be understood by code.
Once u've done the set up as shown in the Circuit Below,
Move your hand up and down over the top of the LDR and have fun watching how the sound changes!
The Creative people of u can heck even make your own music with such a system,for this is just another Musical instrument.
PS:U can use Thermistor readings too(lesson 3) instead of LDR's as analog input,that would make the sounds temperature dependent(exciting,isn't it,sounds changing with change in temperature)
-->>Reference Circuit Diagram:
Again,this is very much Basic.
So,no need for questions on it.Just follow the ideal code(or u can simply write your own code & try experimenting)
Here's the ideal Arduino code. And obviously, you can adjust the values, especially MIN_FREQ and MAX_FREQ values.
-->>Code:
int SPEAKER = 8;//Digital pin 8(Incorrect in the circuit diagram) to the buzzer and the other buzzer wire to Gnd
int LIGHTSENSOR = 0;// Analog pin for LDR
// Typical LDR values for daytime
// 1k resistor:
// min 15, max 100.
#define MIN_SIGNAL 15 /* 100 */
#define MAX_SIGNAL 100 /* 1024 */
// What frequencies should we allow (in Hertz)?
// Typical human hearing is 20 Hz to 20,000 Hz,
// but our piezo buzzers can't reproduce such a wide range.
// 100 to 10k or so is usually okay.
#define MIN_FREQ 100
#define MAX_FREQ 8000
// How many samples should we read from the sensor each time?
// The sensor is noisy, so there will be a lot of spurious readings.
#define NUM_SAMPLES 15
// To monitor the output from the sensor (so you can calibrate MAX_SIGNAL and MIN_SIGNAL)
#define SERIAL_DEBUG 1
void setup()
{
pinMode(SPEAKER, OUTPUT);
#ifdef SERIAL_DEBUG
Serial.begin(9600);
#endif
}
void loop()
{
// Set the frequency according to the light value read off analog pin 0.
// Average 5 reads
int lightsensor = 0;
int Amplify=0;
for (int i=1; i < NUM_SAMPLES; ++i)
lightsensor += analogRead(LIGHTSENSOR);
lightsensor /= NUM_SAMPLES;
unsigned int freq = map(lightsensor,
MIN_SIGNAL, MAX_SIGNAL,
MIN_FREQ, MAX_FREQ);
Amplify=freq/4;
tone(SPEAKER, Amplify);
#ifdef SERIAL_DEBUG
Serial.print("Read ");
Serial.print(lightsensor);//Monitor LDR serial Input
Serial.print(" -> ");
Serial.println(freq);//Monitor frequency
delay(500);
#endif
}
Signing off,
Until the next Lesson.