Hola:
En cuanto puedas, haces un ejemplo de una función que guarde los Km en la EEPROM. Ottra función en leerlo.
En Arduino desde que detecte que se conecta C#, envía los datos de Km y lo muestra en pantalla.
Así voy haciendo experimentos.
Voy haber los archivos que me enviaste.
No estoy usando módulo wifi, solo por cable USB directamente. Esta tarde voy a comprar el transformador para alimentar ARduino que ya no funciona. Solo desde el USB y no me deja hacer las pruebas que quiero realmente.
/*
* Aquí detecta si el USB está conectado y lo muestra en el LCD 16x2.
* Si el USB está conectado al PC, en el LCD indica si haz ejecutado
* C# en el PC o lo cierras.
*/
#include <LiquidCrystal.h>
// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
// LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Pin 10 para saber que es luz de fondo.
const byte LuzFondo = 10;
char caracter;
String comando;
// Funciones.
void deteccionUSB()
{
lcd.setCursor(0, 0); // Línea 1 del LCD.
lcd.print(F("USB detectado. "));
}
void setup()
{
Serial.begin(9600); // Puerto serie 9600 baudios.
lcd.begin(16, 2); // Formato de pantalla.
lcd.clear(); // Borra la pantalla y su posición superior izquierda.
lcd.print(F(" Arduino "));// Muestra título en la LCD.
//delay(1000); // Retardo de 1 segundo.
// Espere a que se conecte el puerto serie. Necesario USB nativo.
while (!Serial);
// Envía un OK para confirmar.
// Serial.println("OK");
// Llama una función.
deteccionUSB();
// O ejecutas alguna función dentro del propio Arduino.
// Función aquí.
}
void loop()
{
/*
Voy leyendo carácter a carácter lo que se recibe por el canal serie
(mientras llegue algún dato allí), y los voy concatenando uno tras otro
en una cadena. En la práctica, si usamos el "Serial monitor" el bucle while
acabará cuando pulsamos Enter. El delay es conveniente para no saturar el
canal serie y que la concatenación se haga de forma ordenada.
*/
while (Serial.available() > 0)
{
caracter = Serial.read();
comando.concat(caracter);
delay(10);
}
/*
Una vez ya tengo la cadena "acabada", compruebo su valor y hago que
la placa Arduino reacciones según sea este. Aquí podríamos hacer lo
que quisiéramos: si el comando es "tal", enciende un Led, si es cual,
mueve un motor... y así.
*/
// Si los carácteres es recibido y verdadero.
// ¿USB conectado?
if (comando.equals(F("USB_DETECTADO")) == true) // Sí. Se ejecuta las instrucciones.
{
Serial.write("C# detectado. "); // Envía este mensaje al PC.
lcd.setCursor(0, 1); // Línea 2 del LCD.
lcd.print(F("C# detectado. ")); // Mostrar en el LCD.
}
// ¿Haz cerrado C# desde el PC?
if (comando.equals(F("CERRADO")) == true) // Sí.
{
Serial.write("SIN CONEXION USB"); // Envía este mensaje al PC.
lcd.setCursor(0, 1); // Línea 2 del LCD.
lcd.print(F("Sin conexion. ")); // Mostrar en el LCD.
}
// Limpiamos la cadena para volver a recibir el siguiente comando.
comando = "";
}
Gracias.