protosupplies.com
const int BTN_NONE = 0;
const int BTN_FORWARD = 1;
const int BTN_STOP = 2;
const int BTN_REVERSE = 3;
const int BTN_HALF_SPEED = 4;
const int BTN_FULL_SPEED = 5;
int const M1_DIR = 4;
int const M1_EN = 5;
int const M2_EN = 6;
int const M2_DIR = 7;
int key_Pressed = BTN_NONE;
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
delay(1000);
Serial.println("Press S1 = Forward");
Serial.println("Press S2 = Stop");
Serial.println("Press S3 = Reverse");
Serial.println("Press S4 = 50% Speed");
Serial.println("Press S5 = 100% Speed");
}
void loop()
{
key_Pressed = Read_Buttons();
switch (key_Pressed)
{
case BTN_FORWARD:
{
digitalWrite(M1_DIR, HIGH);
digitalWrite(M2_DIR, HIGH);
Serial.println("Motors = Forward");
break;
}
case BTN_STOP:
{
digitalWrite(M1_EN,LOW);
digitalWrite(M2_EN,LOW);
Serial.println("Motors = Stop");
break;
}
case BTN_REVERSE:
{
digitalWrite(M1_DIR, LOW);
digitalWrite(M2_DIR, LOW);
Serial.println("Motors = Reverse");
break;
}
case BTN_HALF_SPEED:
{
analogWrite(M1_EN, 128);
analogWrite(M2_EN, 128);
Serial.println("Motors = 50% Speed");
break;
}
case BTN_FULL_SPEED:
{
digitalWrite(M1_EN, HIGH);
digitalWrite(M2_EN, HIGH);
Serial.println("Motors = Full Speed");
}
case BTN_NONE:
{
break;
}
}
if(key_Pressed != BTN_NONE)
{
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
}
}
int Read_Buttons()
{
int adc_key_in = analogRead(A0);
if (adc_key_in >= 1000) return BTN_NONE;
if (adc_key_in < 30) return BTN_FORWARD;
if (adc_key_in < 200) return BTN_STOP;
if (adc_key_in < 500) return BTN_REVERSE;
if (adc_key_in < 700) return BTN_HALF_SPEED;
if (adc_key_in < 990) return BTN_FULL_SPEED;
return BTN_NONE;
}