Hello
A friend of mine have made a car module with an Arduino that have previously worked. I have connected the arduino to a joystick, trying to program the arduino so that the joystick controls the car. The joystick works, and sends the information back that is needed. I also have an ultrasonic sensor on it, which also works.However the car does not move no matter what I do. I do not know what is the issue, please help!
#define FR 9 //turn right side wheels forward
#define BR 10//turn rights side wheels backwards
//Joystick control
#define xAxis A4
#define yAxis A5
//
#define FL 5//turn left side wheels forward
#define BL 6//turn left side wheels backward
//
#define HC_SR04_VCC 0
#define HC_SR04_TRIGGER A1
#define HC_SR04_ECHO A2
#define HC_SR04_GND 0
int Xval,Yval,Dis;
void setup(){
pinMode(12, INPUT_PULLUP);
pinMode(HC_SR04_VCC, OUTPUT);
digitalWrite(HC_SR04_VCC, HIGH);
pinMode(HC_SR04_GND, OUTPUT);
digitalWrite(HC_SR04_GND, LOW);
pinMode(HC_SR04_TRIGGER, OUTPUT);
pinMode(HC_SR04_ECHO, INPUT);
pinMode(xAxis,INPUT);
pinMode(yAxis,INPUT);
delay(5000);
pinMode(FR,OUTPUT);
pinMode(BR,OUTPUT);
pinMode(FL,OUTPUT);
pinMode(BL,OUTPUT);
Serial.begin(9600);
}
void loop(){
controll();
}
void controll(){
FindVal();
go();
dis();
if(Dis<15){
Serial.print("WARNING, SHORT DISTANCE");
Serial.print(Dis);
Serial.println("cm");
}
else{
Serial.print("distance is");
Serial.print(Dis);
Serial.println("cm");
}
}
void FindVal(){
Xval=map(analogRead(xAxis),0,1023,-255,255);
Yval=map(analogRead(yAxis),0,1023,-255,255);
Serial.print(Xval);
Serial.print(";");
Serial.println(Yval);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void go(){
int lf,rf,lb,rb;
if(Xval<0){
lb=Xval;
rb=0;
lf=0;
rf=Xval;
}
else if(Xval==0){
lb=0;
rb=0;
lf=0;
rf=0;
}
else if(Xval>0){
lb=0;
rb=Xval;
lf=Xval;
rf=0;
}
lb=lb+Yval;
rb=rb+Yval;
lf=lf+Yval;
rf=rf+Yval;
if(lb<5){
lb=0;
}
if(rb<5){
rb=0;
}
if(lf<5){
lf=0;
}
if(rf<5){
rf=0;
}
analogWrite(FR,rf);
analogWrite(BR,rb);
analogWrite(FL,lf);
analogWrite(BL,lb);
}
//////////////////////////////////////////////////////////////////////////////
void dis(){//works
long duration, inches, cm;
pinMode(HC_SR04_TRIGGER, OUTPUT);
digitalWrite(HC_SR04_TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(HC_SR04_TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(HC_SR04_TRIGGER, LOW);
pinMode(HC_SR04_ECHO, INPUT);
duration = pulseIn(HC_SR04_ECHO, HIGH);
cm = microsecondsToCentimeters(duration);
Dis=cm;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}