No, devo solo impostare correttamente i collegamenti alla scheda
Ho modificato qualche virgola.
#include <SoftwareSerial.h>
#define RxD 10
#define TxD 11
int recvChar;
const int motor_forw_back1 = 5;
const int motor_forw_back2 = 6;
const int motor_left_right1 = 9;
const int motor_left_right2 = 10;
const int bat_Voltmeter_pin = A0;
float R1 = 4610.0;
float R2 = 4650.0;
int pwm_percent;
int pwm_value;
int pwm_steer;
int pwm_steer_delay;
unsigned long echo_millis, current_millis;
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
Serial.begin(38400);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
pinMode(3,OUTPUT);
pinMode(motor_forw_back1, OUTPUT);
digitalWrite(motor_forw_back1,LOW);
pinMode(motor_forw_back2, OUTPUT);
digitalWrite(motor_forw_back2,LOW);
pinMode(motor_left_right1, OUTPUT);
digitalWrite(motor_left_right1,LOW);
pinMode(motor_left_right2, OUTPUT);
digitalWrite(motor_left_right2,LOW);
pinMode(bat_Voltmeter_pin,INPUT);
pwm_percent = 60;
pwm_value = (int)((255 * pwm_percent)/100);
pwm_steer = 150;
pwm_steer_delay = 120;
echo_millis=0;
current_millis=0;
blueToothSerial.begin(38400);
}
void loop()
{
current_millis = millis();
if (current_millis-echo_millis > 4000) {
//recvChar=0;
echo_millis = current_millis;
Serial.println("Remote Control out of range...");
digitalWrite(motor_forw_back1,HIGH);
digitalWrite(motor_forw_back2,HIGH);
digitalWrite(motor_left_right1,HIGH);
digitalWrite(motor_left_right2,HIGH);
}
if (blueToothSerial.available()){
recvChar = blueToothSerial.read();
//Serial.print(recvChar);
switch(recvChar){
case 0:
// ALL STOP
digitalWrite(motor_forw_back1,HIGH);
digitalWrite(motor_forw_back2,HIGH);
digitalWrite(motor_left_right1,HIGH);
digitalWrite(motor_left_right2,HIGH);
Serial.println("Stop - Straight");
break;
case 1:
// FORWARD
digitalWrite(motor_forw_back1,LOW);
analogWrite(motor_forw_back2,pwm_value);
digitalWrite(motor_left_right1,HIGH);
digitalWrite(motor_left_right2,HIGH);
Serial.print("Forward - Straight @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 2:
// BACKWARD
digitalWrite(motor_forw_back2,LOW);
analogWrite(motor_forw_back1,pwm_value);
digitalWrite(motor_left_right1,HIGH);
digitalWrite(motor_left_right2,HIGH);
Serial.print("Backward - Straight @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 4:
// FORWARD - LEFT
digitalWrite(motor_forw_back1,LOW);
analogWrite(motor_forw_back2,pwm_value);
digitalWrite(motor_left_right2,LOW);
digitalWrite(motor_left_right1,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right1,pwm_steer);
Serial.print("Forward - Left @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 7:
// FORWARD - RIGHT
digitalWrite(motor_forw_back1,LOW);
analogWrite(motor_forw_back2,pwm_value);
digitalWrite(motor_left_right1,LOW);
digitalWrite(motor_left_right2,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right2,pwm_steer);
Serial.print("Forward - Right @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 5:
// BACKWARD - LEFT
digitalWrite(motor_forw_back2,LOW);
analogWrite(motor_forw_back1,pwm_value);
digitalWrite(motor_left_right2,LOW);
digitalWrite(motor_left_right1,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right1,pwm_steer);
Serial.print("Backward - Left @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 8:
// BACKWARD - RIGHT
digitalWrite(motor_forw_back2,LOW);
analogWrite(motor_forw_back1,pwm_value);
digitalWrite(motor_left_right1,LOW);
digitalWrite(motor_left_right2,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right2,pwm_steer);
Serial.print("Backward - Right @ ");
Serial.print(pwm_percent);
Serial.println("%");
break;
case 3:
// STOP - LEFT
digitalWrite(motor_forw_back1,HIGH);
digitalWrite(motor_forw_back2,HIGH);
digitalWrite(motor_left_right2,LOW);
digitalWrite(motor_left_right1,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right1,pwm_steer);
Serial.println("Stop - Left");
break;
case 6:
// STOP - RIGHT
digitalWrite(motor_forw_back1,HIGH);
digitalWrite(motor_forw_back2,HIGH);
digitalWrite(motor_left_right1,LOW);
digitalWrite(motor_left_right2,HIGH);
delay(pwm_steer_delay);
analogWrite(motor_left_right2,pwm_steer);
Serial.println("Stop - Right");
break;
case 10:
// 1st gear set pwm to 50%
pwm_percent=50;
pwm_value=int((255*pwm_percent)/100);
break;
case 20:
// 2st gear set pwm to 75%
pwm_percent=75;
pwm_value=int((255*pwm_percent)/100);
break;
case 30:
// 3st gear set pwm to 100%
pwm_percent=100;
pwm_value=int((255*pwm_percent)/100);
break;
case 66:
//check Battery Voltage and Send it & check remote control if in range
echo_millis=millis();
bat_Voltmeter();
break;
case 254:
//Bluetooth disconnect
digitalWrite(motor_forw_back1,HIGH);
digitalWrite(motor_forw_back2,HIGH);
digitalWrite(motor_left_right1,HIGH);
digitalWrite(motor_left_right2,HIGH);
Serial.println("Stop - Straight");
break;
default:
break;
}
}
} // End Loop
//-----------------------------------------------------//
void bat_Voltmeter()
{
float bat_volt_read = 0.0;
for(int i=0;i<30;i++){
bat_volt_read += (analogRead(bat_Voltmeter_pin) * 5.0 / 1024.0);
}
bat_volt_read=bat_volt_read/30;
float bat_Volt = bat_volt_read / (R2/(R1 + R2));
Serial.println(bat_Volt,2);
int int_bat_volt = (int)bat_Volt;
int flt_bat_volt=(int)((bat_Volt-float(int_bat_volt))*100);
blueToothSerial.flush();
blueToothSerial.write(flt_bat_volt);
blueToothSerial.write(int_bat_volt);
}