I am very new to Arduino, and programming in general. First year electrical engineering student trying to get ahead of my class.
I am trying to incrementally speed up an electric motor then slow it down while having six leds indicate the speed. When the motor is stopped, zero leds are on; motor speed reaches stage one, led one comes on; stage two, leds one and two are both on; .... ; when it is at full speed (stage 6), all six leds are.
Here's the mess I came up with after researching/working for several hours. It works the way I want it to but I feel like I am missing something that would make this easier. Please excuse the noobishness.
//Define Pins
int motorPin = 3;
int ledPin1 = 12;
int ledPin2 = 11;
int ledPin3 = 10;
int ledPin4 = 9;
int ledPin5 = 8;
int ledPin6 = 7;
void setup()
{
pinMode (motorPin, OUTPUT);
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
pinMode (ledPin3, OUTPUT);
pinMode (ledPin4, OUTPUT);
pinMode (ledPin5, OUTPUT);
pinMode (ledPin6, OUTPUT);
}
void loop()
{
//Stage 1
for (int i=120; i<=140; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin1, HIGH);
delay(100);
}
//Stage 2
for (int i=140; i<=160; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin2, HIGH);
delay(100);
}
//Stage 3
for (int i=160; i<=180; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin3, HIGH);
delay(100);
}
//Stage 4
for (int i=180; i<=200; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin4, HIGH);
delay(100);
}
//Stage 5
for (int i=200; i<=220; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin5, HIGH);
delay(100);
}
//Stage 6
for (int i=240; i<=255; i++)
{
analogWrite(motorPin, i);
digitalWrite(ledPin6, HIGH);
//Hold at Max Speed
delay(300);
}
//Decrese
for (int i=255; i>=240; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin6, LOW);
delay(100);
}
//Decrease to Stage 5
for (int i=240; i>=220; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin5, LOW);
delay(100);
}
//Decrease to Stage 4
for (int i=220; i>=200; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin4, LOW);
delay(100);
}
//Decrease to Stage 3
for (int i=200; i>=180; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin3, LOW);
delay(100);
}
//Decrease to Stage 2
for (int i=180; i>=160; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin2, LOW);
delay(100);
}
//Decrease to Stage 1
for (int i=160; i>=120; i--)
{
analogWrite(motorPin, i);
digitalWrite(ledPin2, LOW);
delay(50);
}
digitalWrite(ledPin1, LOW);
delay(500);
}