Speed Control
Speed Control
h>
#include <LiquidCrystal_I2C.h>
#include <HCSR04.h>
UltraSonicDistanceSensor distanceSensor(D5, D6);
LiquidCrystal_I2C lcd(0x27,16,2);
#define pwm_mot D4
#define m11 D7
#define m12 D8
#define push_sw D3
#define acc_pot A0
void forward();
void stp();
void setup()
{
Serial.begin(9600);
lcd.begin();
pinMode(acc_pot,INPUT);
pinMode(pwm_mot,OUTPUT);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(push_sw,INPUT_PULLUP);
digitalWrite(m11,LOW);digitalWrite(m12,LOW);
analogWrite(pwm_mot,1023);
}
void loop()
{
timer();
if (digitalRead(push_sw)==0 && moving==0) { delay(300); moving=1; }
else if(digitalRead(push_sw)==0 && moving==1) { delay(300); moving=0; }
if(moving==1) { forward(); } else if (moving==0) { stp(); }
dis=distanceSensor.measureDistanceCm();if(dis<2){dis=2;}else if(dis>100)
{dis=100;}
if (dis<10){lcd.setCursor(3, 0);lcd.print(" ");}
else if(dis<100){lcd.setCursor(4, 0);lcd.print(" ");}
lcd.setCursor(2, 0);lcd.print(dis);
pot_read = analogRead(acc_pot);
if(pot_read>speed_lim){pot_read=speed_lim;}
acc = map(pot_read, 0, 1023, 0, 100);
if (acc<10) {lcd.setCursor(13, 0);lcd.print(" "); }
else if(acc<100){lcd.setCursor(14, 0); lcd.print(" "); }
lcd.setCursor(12, 0); lcd.print(acc);
analogWrite(pwm_mot,pot_read);
delay(50);
Serial.print("moving:");Serial.print(moving);Serial.print("
acc:");Serial.println(acc);
void timer()
{ unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis1) >= interval1) // check for
rollover delay 1
{
sec++;sec1++;
previousMillis1 = currentMillis;
}
}
void forward()
{
lcd.setCursor(5,1); lcd.print("RUN");
digitalWrite(m11,HIGH);digitalWrite(m12,LOW);
}
void stp()
{
lcd.setCursor(5,1); lcd.print("STP");
digitalWrite(m11,LOW); digitalWrite(m12,LOW);
}