Buenos dias.
Primero de todo soy nuevo en todo el tema de programar arduinos, pero llevo un mes mirando tutoriales, etc.
El problema es que hice un programa para el control básico de una maquina instalada en mi universidad vía puerto serie. El programa funciona sin ningún problema y conseguimos un control vía serie de la maquina.
Claro, el siguiente paso era conseguir comunicarnos con la maquina va wifi para poder controlarla en cualquier parte de la universidad sin necesidad de estar fisicamente en el laboratorio.
Para ello se nos ocurrio que con un arduino uno wifi con el modulo ya incorporado seria una buena idea.
El arduino ya esta conectado a la red de la universidad y he creado una IP por la cual pudo comunicarme por la wifi console. Arduino - Home este es el tutorial utilizado.
Por lo que tengo entendido el programa por serie no me funciona porque tengo que cambiar los comandos serie por wifi para poder controlar la maquina por la wifi console pero llevo casi un mes y no consigo nada solo cambiar el programa sin sentido.
Adjunto el programa via serial. Solo con saber si es posible lo que digo o si voy mal encaminado ya seria de mucha ayuda.
Muchas gracias!!
Código:
// Definición de las salidas de las electroválvulas
const int electro_presion = 7;
const int electro_avance = 8;
const int electro_retroceso = 4 ;
const int motor = 12;
// Constantes para la comunicación puerto serie
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
void setup() {
// Definición del tipo de salidas
pinMode(motor, OUTPUT);
pinMode(electro_presion, OUTPUT);
pinMode(electro_avance, OUTPUT);
pinMode(electro_retroceso, OUTPUT);
// Paro de las salidas
paro();
// initialize serial:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
// Lectura de comandos a través del puerto serie
if (stringComplete) {
inputString.trim();
Serial.println(inputString);
// Maniobra
if (inputString == "marcha"){
digitalWrite(motor, HIGH);
Serial.println("marcha maniobra");
} else if (inputString == "paro"){
paro();
Serial.println("paro");
}else if (inputString == "presion"){
digitalWrite(electro_presion, HIGH);
Serial.println("marcha presion");
}else if (inputString == "avance"){
digitalWrite(electro_retroceso, LOW);
delay(100);
digitalWrite(motor, HIGH);
delay(100);
digitalWrite(electro_avance, HIGH);
delay(100);
digitalWrite(electro_presion, HIGH);
Serial.println("avance");
} else if (inputString == "retroceso"){
digitalWrite(electro_avance, LOW);
delay(100);
digitalWrite(motor, HIGH);
delay(100);
digitalWrite(electro_retroceso, HIGH);
delay(100);
digitalWrite(electro_presion, HIGH);
Serial.println("retroceso");
} else if (inputString == "test"){
digitalWrite(electro_avance, LOW);
delay(100);
digitalWrite(motor, HIGH);
delay(100);
digitalWrite(electro_retroceso, HIGH);
delay(100);
digitalWrite(electro_presion, HIGH);
Serial.println("realizando ensayo");
} else {
Serial.println(inputString+=" comando no reconocido");
}
// clear the string:
inputString = "";
stringComplete = false;
}}
// Definición de la función de paro de la máquina
void paro(){
digitalWrite(electro_presion, LOW);
delay(200);
digitalWrite(electro_avance, LOW);
delay(200);
digitalWrite(electro_retroceso, LOW);
delay(200);
digitalWrite(motor, LOW);
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
else{
// add it to the inputString:
inputString += inChar;
}
}
}
control_banco_traccion.ino (2.89 KB)