Hola buenas tardes, soy nuevo en ésto de arduino, tengo un problema con una parte de mi código.
Tengo arduino UNO, conectados 4 leds, mi proyecto es de hacerlos prender y apagar en diferente órden, todo bien, pero en un método que me piden no se como hacerlo por más que busque. Es uno llamado "Flash" que es para que los 4 LEDs se apaguen y se prendan medio segundo, pero sin parar. Espero me puedan ayudar, muchas gracias.
Adrián Félix
/*
blinkSerial2.ino
Este programa hace que el led de status del Arduino UNO o un led
conectado entre el pin 13 y tierra, se encienda o apague
controlado
por comandos recibidos por el puerto serie
*/
#include <string.h>
int led [] = {10, 11, 12, 13};
/*const unsigned int PIN_LED = 13;
const unsigned int PIN_LED2 = 12;
const unsigned int PIN_LED3 = 11;
const unsigned int PIN_LED4 = 10;*/
const unsigned int BAUD_RATE = 9600;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(led[i], OUTPUT);
}
/*pinMode(PIN_LED, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
pinMode(PIN_LED3, OUTPUT);
pinMode(PIN_LED4, OUTPUT);*/
// Establece la velocidad de transmisión del puerto serie al
// valor BAUD_RATE
Serial.begin(BAUD_RATE);
}
void loop() {
char comando[6];
// Si hay caracteres disponibles para lectura en el puerto serie
if (Serial.available() > 0) {
// Lee a lo mas 5 caracteres del puerto serie o hasta que se
// presione la tecla Enter y los guarda en el arreglo
// comando.
int n = Serial.readBytesUntil('\n', comando, 5);
// Todas las cadenas en C/C++ terminan en el carácter de fin
// de cadena, ‘\n’.
comando[n] = '\0';
// Escribe el comando al puerto serie
Serial.println(comando);
// Si se lee el comando "on"
if (!strcmp(comando, "on")) {
// Enciende el led conectado al pin PIN_LED
for (int y = 4; y >= 0; y--) {
digitalWrite(led[y], HIGH);
}
// Escribe al puerto serie
Serial.println("LEDs encendidos");
}
else
// Si se lee el comando "off"
if (!strcmp(comando, "off")) {
// Apaga el led conectado al pin PIN_LED
for (int y = 4; y >= 0; y--) {
digitalWrite(led[y], LOW);
}
// Escribe al puerto serie
Serial.println("LEDs apagados");
} else
// Si se lee el comando "ltr"
if (!strcmp(comando, "ltr")) {
for (int y = 4; y >= 0; y--) {
delay(20);
digitalWrite(led[y], LOW);
delay(20);
}
for (int y = 3; y >= 0 && y <= 20; y--) {
digitalWrite(led[y], HIGH);
delay(500);
digitalWrite(led[y], LOW);
delay(500);
}
//"left-to-right”, produce un corrimiento de un LED de izquierda a derecha.
Serial.println("LEDs left to rigth");
} else
// Si se lee el comando "rtl"
if (!strcmp(comando, "rtl")) {
while (1) {
for (int y = 4; y >= 0; y--) {
delay(20);
digitalWrite(led[y], LOW);
delay(20);
}
for (int y = 0; y < 4; y++)
{
digitalWrite(led[y], HIGH);
delay(500);
digitalWrite(led[y], LOW);
delay(500);
}
//“right-to-left”, produce un corrimiento de un LED de derecha a izquierda.
Serial.println("LEDs right to left");
break;
}
} else
// Si se lee el comando "flash"
if (!strcmp(comando, "flash")) {
for (int n = 0; n < 4; n++) {
digitalWrite(led[n], HIGH);
}
delay(1000); // Wait for 1000 millisecond(s)
for (int n = 0; n < 4; n++) {
digitalWrite(led[n], LOW);
}
delay(1000); // Wait for 1000 millisecond(s)
}
else {
// Escribe al puerto serie
Serial.print("Comando desconocido: ");
Serial.println(comando);
}
}
}