Potentiometer (0-1023) to Binary conversion (0-255) printed to 8 LEDs
Arduino Uno with 10K potentiometer wired to A0.
I was interested in creating an Analog to Digital Audio Frequency Generator for a science museum exhibit. We thought it would be interesting for visitors to see how you would proportion a potentiometer voltage to digital 0's and 1's and produce audio frequencies of a specific range. I had no luck with any of the internet suggestions that I could find. When I discovered a solution that works I thought I would share the solution and maybe spare others the headaches that I encountered.
The following code worked for me:
void setup() {
pinMode(4, OUTPUT); //Speaker Amp for Tone Sounds (10K Resistor)
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
int freq = sensorValue;
sensorValue = map(sensorValue, 0, 1023, 0, 255); //Map Potentiometer range to 8 bit binary range
freq = map(freq, 0, 1023, 200, 2000); //Map Potentiometer range to frequency range
Serial.print("Decimal = ");
Serial.print(sensorValue);
Serial.print("\t Binary = ");
Serial.println(sensorValue, BIN);
if (sensorValue >= 0 && sensorValue <= 1023) {
digitalWrite(5, (sensorValue & 1));
digitalWrite(6, (sensorValue & 2));
digitalWrite(7, (sensorValue & 4));
digitalWrite(8, (sensorValue & 8));
digitalWrite(9, (sensorValue & 16));
digitalWrite(10, (sensorValue & 32));
digitalWrite(11, (sensorValue & 64));
digitalWrite(12, (sensorValue & 128));
}
tone(4, freq); //tone (pin, frequency)
delay(20);
}