EE 2305 – Introduction to C Programming
Hardware Project 03
Digital VU Meter
Project Features: Analog Input and Digital Output.
Program an Arduino board to accept an analog input voltage and display the magnitude of the
voltage using a 10 LED display.
Input voltage = 0% of maximum (all LEDS off)
Input voltage = 30% of maximum
Input voltage = 70% of maximum
Document your program and include the following sections. Provide a brief description of the
system and how you are designing it to operate.
A. Hardware Diagram:
Provide a hardware diagram of the components.
Arduino UNO 13
12
3.3V ~ 11
5V ~ 10
Power
Digital Input / Output
Gnd ~9
Gnd 8
Vin 7
~6
A0 ~5
Analog Input
A1 4
A2 ~3
A3 2
A4 TX 1
A5 RX 0
1
B. Program Flowchart:
Draw a flowchart of the program.
Record voltage
Display percent of maximum
voltage
2
C. Arduino Source Code
Insert the Arduino Source Code into the document.
const int td = 10;
double v;
int R1 = 2;
int R2 = 3;
int Y1 = 4;
int Y2 = 5;
int Y3 = 6;
int G1 = 7;
int G2 = 8;
int G3 = 9;
int G4 = 10;
int G5 = 11;
double m = 1000; //maximum value for voltage
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
v = analogRead(A0);
Serial.print(v);
Serial.print('\n');
delay(td);
if (v < (m * 0.1))
{
digitalWrite(R1, LOW);
digitalWrite(R2, LOW);
digitalWrite(Y1, LOW);
digitalWrite(Y2, LOW);
digitalWrite(Y3, LOW);
3
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.2))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, LOW);
digitalWrite(Y1, LOW);
digitalWrite(Y2, LOW);
digitalWrite(Y3, LOW);
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.3))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, LOW);
digitalWrite(Y2, LOW);
digitalWrite(Y3, LOW);
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.4))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, LOW);
digitalWrite(Y3, LOW);
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
4
else if (v < (m * 0.5))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, LOW);
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.6))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, HIGH);
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.7))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(G2, LOW);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.8))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
5
digitalWrite(Y3, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(G3, LOW);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < (m * 0.9))
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(G3, HIGH);
digitalWrite(G4, LOW);
digitalWrite(G5, LOW);
}
else if (v < 1000)
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(G3, HIGH);
digitalWrite(G4, HIGH);
digitalWrite(G5, LOW);
}
else
{
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(Y1, HIGH);
digitalWrite(Y2, HIGH);
digitalWrite(Y3, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(G3, HIGH);
digitalWrite(G4, HIGH);
digitalWrite(G5, HIGH);
6
}
}
D. Demonstration Video
Record and upload a video demonstrating the operation of the circuit.
https://youtu.be/a_1nOKje0k4
Save the document as a PDF file and submit the PDF document to Blackboard.