Hi there,
Im new to the forum! i wanted to know if you could help me out with this one!
Im trying to control a RC car using arduino ethernet (the final idea would be that the car itself would have an access point on it and the arduino ethernet connected to it)
I bought a 4WD chasis and i decided to use the two motors in the front to make the car go forward and the two on the back to make the car go backwards, that way i dont have to mess myself up with electronics so that motors can spin clockwise and anti-clockwise , at least not in the first version of the code.
The problem is that the values im giving to the pin are not reflected, i mean, i tell the car to go forward but when i see whats happening with the dc motors on the back, they are spinning two. I checked my methods and they seem to be right.
Any idea would help a lot !!
Thanks!
The code:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192 ,168 ,1 ,9 };
byte gateway[] = { 192 ,168 ,1 ,1 };
byte subnet[] = { 255 ,255 ,255 ,0 };
EthernetServer server(80);
EthernetClient client;
String readString = String(40);
int pindelanteroderecho = 8;
int pindelanteroizquierdo = 9;
int pintraseroderecho = 10;
int pintraseroizquierdo = 11;
int delanteroderecho,delanteroizquierdo,traseroderecho,traseroizquierdo;
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
pinMode(pindelanteroderecho, OUTPUT);
pinMode(pindelanteroizquierdo, OUTPUT);
pinMode(pintraseroderecho, OUTPUT);
pinMode(pintraseroizquierdo, OUTPUT);
Serial.begin(9600);
}
void loop(){
client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 40)
{
readString = readString + c;
}
if (c == '\n') {
if(readString.indexOf("GET /?main") >= 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("access-control-allow-origin: *");
client.println("Cache-Control: no-cache, must-revalidate");
client.println("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'></script>");
client.println("<script type='text/javascript'>");
client.println("function revisar() {");
client.println("var vectorx,vectory; ");
client.println("window.ondevicemotion = function(event) {");
client.println("var accelerationX = event.accelerationIncludingGravity.x;");
client.println("var accelerationY = event.accelerationIncludingGravity.y; ");
client.println("if(Math.abs(accelerationX) < 2) {");
client.println("document.getElementById('estado').innerHTML = 'Quieto';");
client.println("vectorx = 0;");
client.println("}");
client.println("else {");
client.println("vectorx = Math.ceil(accelerationX);");
client.println("if(accelerationX>0) {");
client.println("document.getElementById('estado').innerHTML = 'Avanzando a:'+vectorx;");
client.println("}");
client.println("else {");
client.println("document.getElementById('estado').innerHTML = 'Retrocediendo a'+vectorx;");
client.println("}");
client.println("}");
client.println("if(Math.abs(accelerationY) < 2) {");
client.println("document.getElementById('giro').innerHTML = 'Ningun lado';");
client.println("vectory = 0;");
client.println("}");
client.println("else {");
client.println("vectory = Math.ceil(accelerationY);");
client.println("if(accelerationY>0) {");
client.println("document.getElementById('giro').innerHTML = 'Izquierda a:'+vectory;");
client.println("}");
client.println("else {");
client.println("document.getElementById('giro').innerHTML = 'Derecha a:'+vectory;");
client.println("}");
client.println("}");
client.println("} ");
client.println("scaleAndSend(vectorx,vectory);");
client.println("}");
client.println("function scaleAndSend(x,y) {");
// 9 - 255
// int - x
client.println("if(y>0) {");
client.println("var newY = (y*255)/9;");
client.println("}");
client.println("else {");
client.println("var newY = ((Math.abs(y)*255)/9) + 255;");
client.println("}");
client.println("if(x>0) {");
client.println("var newX = (x*255)/9;");
client.println("$.get('http://192.168.1.6/?adelante=1&x='+newX+'&y='+newY , function(data) {});");
client.println("}");
client.println("else {");
client.println("var newX = ((Math.abs(x)*255)/9);");
client.println("$.get('http://192.168.1.6/?atras=1&x='+newX+'&y='+newY , function(data) {});");
client.println("}");
client.println("}");
client.println("setInterval(function(){revisar()}, 200);");
client.println("</script>");
client.println("</head>");
client.println("<body>");
client.println("<div id='costados'>");
client.println("<div id='cual' style='font-size:30px;'>Estoy girando a: </div>");
client.println("<div id='giro' style='font-size:30px;'></div>");
client.println("</div>");
client.println("<div id='avance'>");
client.println("<div id='adonde' style='font-size:30px;'>Estoy: </div>");
client.println("<div id='estado' style='font-size:30px;'></div>");
client.println("</div>");
client.println("</body>");
client.println("</html>");
}
if(readString.indexOf("GET /?adelante=1") >=0)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("access-control-allow-origin: *");
client.println("Cache-Control: no-cache, must-revalidate");
client.println("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
String url = readString;
int primerAnd = url.indexOf("&");
int segundoAnd = url.indexOf("&",primerAnd+1);
int x = url.substring(primerAnd+3,segundoAnd).toInt();
int y = url.substring(segundoAnd+3,url.length()).toInt();
int velocidadyderecha;
int velocidadyizquierda;
if(y>255) {
velocidadyderecha= y-255;
velocidadyizquierda = 0;
}
else {
velocidadyderecha= 0;
velocidadyizquierda = y;
}
client.println(url);
client.println(x);
client.println(velocidadyderecha);
client.println(velocidadyizquierda);
adelante(x,velocidadyderecha,velocidadyizquierda);
}
if(readString.indexOf("GET /?atras=1") >=0)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("access-control-allow-origin: *");
client.println("Cache-Control: no-cache, must-revalidate");
client.println("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
String url = readString;
int primerAnd = url.indexOf("&");
int segundoAnd = url.indexOf("&",primerAnd+1);
int x = url.substring(primerAnd+3,segundoAnd).toInt();
int y = url.substring(segundoAnd+3,url.length()).toInt();
int velocidadyderecha;
int velocidadyizquierda;
if(y>255) {
velocidadyderecha= y-255;
velocidadyizquierda = 0;
}
else {
velocidadyderecha= 0;
velocidadyizquierda = y;
}
client.println(url);
client.println(x);
client.println(velocidadyderecha);
client.println(velocidadyizquierda);
adelante(x,velocidadyderecha,velocidadyizquierda);
}
if(readString.indexOf("GET /?check=1") >=0)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("access-control-allow-origin: *");
client.println("Cache-Control: no-cache, must-revalidate");
client.println("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head>");
client.println("<body>");
client.println("Motor delantero derecho: ");
client.println(pulseIn(pindelanteroderecho,HIGH));
client.println("Motor delantero izquierdo: ");
client.println(pulseIn(pindelanteroizquierdo,HIGH));
client.println("Motor trasero derecho: ");
client.println(pulseIn(pintraseroderecho,HIGH));
client.println("Motor trasero izquierdo: ");
client.println(pulseIn(pintraseroizquierdo,HIGH));
client.println("</body>");
client.println("<html>");
}
readString="";
client.stop();
}
}
}
}
else {
client.stop();
}
}