hi:
I want to run on and off the LED 13 including "Arduino UNO R3" with a button and sending characters through serial or USB port.
EEPROM is also used to make it on or off the power loss.
This is the code but does not work.
#include <EEPROM.h>
char caracter;
String comando;
int pinLed = 13; // Declaramos la variable pin del Led.
int Direccion = 0;
byte Dato;
byte Dato2;
// Variables pra el pulsador.
int estadoActual1=0;
int estadoActual2=0;
int estadoUltimo=0;
int contador=0;
void setup()
{
pinMode(pinLed, OUTPUT); // Inicializa el pin del LED como salida:
Serial.begin(115200); // Puerto serie 115200 baudios.
delay(200); // Retardo 0,2 segundos.
Serial.println(EEPROM.read(Direccion),DEC); // Imprime en pantalla la dirección en decimal.
Dato2 = EEPROM.read(Direccion); // Lee la dirección y lo almacena en la variable Dato2.
// Lee los datos almacenados en al EEPROM al iniciar el programa.
switch (Dato2)
{
case B0:
digitalWrite(pinLed, HIGH); // Enciende el Led.
break;
case B1:
digitalWrite(pinLed, LOW); // Apaga el Led.
break;
}
}
void loop()
{
/* Leyendo carácter a carácter lo que se resive por el canal del puerto serie
y los voy concatenando uno tras otro en una cedena. */
while (Serial.available()>0)
{
caracter= Serial.read();
comando.concat(caracter);
delay(10);
}
// Si los carácteres es recibido y verdadero.
if (comando.equals("Led13_ON") == true)
{
digitalWrite(pinLed, HIGH); // Enciende el Led.
Serial.println("El comando es Led13_ON"); // Muestra este mensaje en pantalla.
Dato = B0; // Dato binario se almacena en la variable Dato.
EEPROM.write(Direccion, Dato); // Escribe dirección y dato en la EEPROM.
}
// Si los carácteres es recibido y verdadero.
if (comando.equals("Led13_OFF")== true)
{
digitalWrite(pinLed, LOW); // Apaga el Led.
Serial.println("El comando es Led13_OFF"); // Muestra este mensaje en pantalla.
Dato = B1; // Dato binario se almacena en la variable Dato.
EEPROM.write(Direccion, Dato); // Escribe dirección y dato en la EEPROM.
}
// Limpiamos la cadena para volver a recibir el siguiente comando.
comando="";
// Pulsador.
estadoActual1=digitalRead(8);
delay(10);
estadoActual2=digitalRead(8);
if (estadoActual1 == estadoActual2)
{
if (estadoActual1 != estadoUltimo)
{
if (estadoActual1 == HIGH)
{
contador = contador + 1;
Serial.print ("Ésta es la pulsación nº ");
Serial.println(contador);
}
}
}
estadoUltimo= estadoActual1;
if (contador % 2 == 0 ) {
digitalWrite(pinLed, LOW);
} else {
digitalWrite(pinLed, HIGH);
}
}
Greeting.