I am planning for a project that uses Serial communications through an HC12 wireless serial module and an Arduino Uno on a RC car and controller. I have written some code and I would like some more eyes to look it over and point out any problems. I am gonna use the following code for the Arduino on the Car(receiver)
#include <SoftwareSerial.h>
#include <Servo.h>
#define relay 8
#define ESC 9
Servo steering;
SoftwareSerial HC12(2,3);
void setup() {
HC12.begin(9600);
Serial.begin(9600);
steering.attach(10);
steering.write(90);
delay(100);
}
void loop() {
if(HC12.available()>0){
char val=HC12.read();
switch (val){
case 'a':
{
analogWrite(ESC,250);
digitalWrite(relay, HIGH);
break;
}
case 'b':
{
analogWrite(ESC, 204);
digitalWrite(relay, HIGH);
break;
}
case 'c':
{
analogWrite(ESC,153);
digitalWrite(relay,HIGH);
break;
}
case 'd':
{
analogWrite(ESC,102);
digitalWrite(relay,HIGH);
break;
}
case 'e':
{
analogWrite(ESC,51);
digitalWrite(relay,HIGH);
break;
}
case 'f':
{
analogWrite(ESC,0);
digitalWrite(relay,LOW);
break;
}
case 'g':
{
analogWrite(ESC,51);
digitalWrite(relay,LOW);
break;
}
case 'h':
{
analogWrite(ESC,102);
digitalWrite(relay,LOW);
break;
}
case 'i':
{
analogWrite(ESC,153);
digitalWrite(relay,LOW);
break;
}
case 'j':
{
analogWrite(ESC,204);
digitalWrite(relay,LOW);
break;
}
case 'k':
{
analogWrite(ESC,255);
digitalWrite(relay,LOW);
break;
}
case 'l':
{
steering.write(0);
break;
}
case 'm':
{
steering.write(25);
break;
}
case 'n':
{
steering.write(50);
break;
}
case 'o':
{
steering.write(75);
break;
}
case 'p':
{
steering.write(100);
break;
}
case 'q':
{
steering.write(125);
break;
}
case 'r':
{
steering.write(150);
break;
}
}
}
}
And the following code for the controller(sender)
#include <SoftwareSerial.h>
SoftwareSerial HC12(2,3);
#define xpin 4
#define ypin 5
void setup() {
HC12.begin(9600);
Serial.begin(9600);
}
void loop() {
int val1=analogRead(xpin);
int val2=analogRead(ypin);
int xval=map(val1,0,1023,-3,3);
int yval=map(val2,0,1023,-5,5);
switch(xval){
case -3:
{
HC12.write('l');
break;
}
case -2:
{
HC12.write('m');
break;
}
case -1:
{
HC12.write('n');
break;
}
case 0:
{
HC12.write('o');
break;
}
case 1:
{
HC12.write('p');
break;
}
case 2:
{
HC12.write('q');
break;
}
case 3:
{
HC12.write('r');
break;
}
}
switch(yval){
case -5:
{
HC12.write('a');
break;
}
case -4:
{
HC12.write('b');
break;
}
case -3:
{
HC12.write('c');
break;
}
case -2:
{
HC12.write('d');
break;
}
case -1:
{
HC12.write('e');
break;
}
case 0:
{
HC12.write('f');
break;
}
case 1:
{
HC12.write('g');
break;
}
case 2:
{
HC12.write('h');
break;
}
case 3:
{
HC12.write('i');
break;
}
case 4:
{
HC12.write('j');
break;
}
case 5:
{
HC12.write('k');
break;
}
}
delay(100);
Serial.println(millis());
}
The RC car already has a steering servo and a motor that I am planning on driving with a homemade h bridge motor driver(that is why there is a analog.Write to the the electronics speed controller or ESC, that will be my motor driver). Let me know what you think. Thanks!