Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define pulseInPin A0 // select the input pin for the potentiometer
- #define PWMOutPin 3 //PWM pin
- #define dirR 4
- #define dirL 5
- int timeIn = 0; // variable to store the value coming from the sensor
- int timeMid = 1500;
- int offset = 50;
- int PWMval;
- void setup() {
- // declare the ledPin as an OUTPUT:
- pinMode(pulseInPin, INPUT);
- pinMode(PWMOutPin, OUTPUT);
- pinMode(dirL, OUTPUT);
- pinMode(dirR, OUTPUT);
- Serial.begin(9600);
- }
- void loop() {
- // read the value from the sensor:
- timeIn = pulseIn(pulseInPin, HIGH);
- if(timeIn > 2500) {timeIn = timeMid;}
- if(timeIn < 500) {timeIn = timeMid;}
- Serial.println(timeIn);
- if(timeIn > timeMid + offset)
- {
- fwd();
- }else if(timeIn < timeMid - offset)
- {
- rwd();
- }
- else {
- neutral();
- }
- }
- void fwd()
- {
- int timeCalc;
- digitalWrite(dirR, HIGH);
- digitalWrite(dirL, LOW);
- timeCalc = abs(timeIn - timeMid);
- PWMval = map(timeCalc, 0, 500, 0, 255);
- analogWrite(PWMOutPin, PWMval);
- }
- void rwd()
- {
- int timeCalc;
- digitalWrite(dirR, LOW);
- digitalWrite(dirL, HIGH);
- timeCalc = abs(timeIn - timeMid);
- PWMval = map(timeCalc, 0, 500, 0, 255);
- analogWrite(PWMOutPin, PWMval);
- }
- void neutral()
- {
- digitalWrite(dirR, LOW);
- digitalWrite(dirL, LOW);
- analogWrite(PWMOutPin, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement