I am using GSM module with arduino and also drive motors of robot. so I want to calculate how much distance covered by robot linearly and print that distance in message which will send through GSM module.
i tried this formula in void loop
pathcovered = 23.14radius*rps of motor
but its not working. plz help me.
my code is
#define trigPin 12 // output for sensor
#define echoPin 2 // input for sensor
#define leftmotor 5
#define rightmotor 6
#define led 13
#define rxPin 0
#define txPin 1
#define ldr1 4
#define ldr2 7
#include <SoftwareSerial.h>
#include <string.h>
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(leftmotor, OUTPUT);
pinMode(rightmotor, OUTPUT);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(led, OUTPUT);
pinMode(ldr1, INPUT);
pinMode(ldr2, INPUT);
}
void loop() {
int time_request;
unsigned long int time, duration, distance, pathcover;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
pathcover = 23.14radius*time_request;
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance <=20)
{
Serial.print(distance);
Serial.println(" cm");
Serial.print(pathcover);
Serial.println(" m");
digitalWrite(leftmotor, LOW);
digitalWrite(rightmotor, LOW);
digitalWrite(led, HIGH);
delay(8000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance <=20)
{
Serial.print(distance);
Serial.println(" cm");
Serial.println(“AT”);
delay(2000);
Serial.println(“AT+CMGF=1”);
delay(1500);
Serial.print(“AT+CMGS=”);
delay(2000);
Serial.print((char)34);
Serial.print("+919096532386");
delay(4000);
Serial.println((char)34);
delay(2000);
Serial.println(“Obstacle detected on “-pathcover-” m from start point”);
delay(10000);
Serial.println((char)26);
return;
}
}
else {
Serial.println(“Out of range”);
digitalWrite(leftmotor, HIGH);
digitalWrite(rightmotor, HIGH);
digitalWrite(led, LOW);
}
delay(500);
}