Go Down

Topic: Leer cadena de números (Read 110 times) previous topic - next topic

EIVL14

Estoy en un pequeño proyecto, que únicamente consiste en que el usuario ingrese una cadena de 8 dígitos compuesta por números a travéz de consola (en este caso ceros y unos) y que cada dígito (0 ó 1) corresponda a un led, si el usuario ingresa 01001101 entonces que el led 1 permanezca apagado, el segundo encendido, el tercero apagado, el cuarto apagado, el quinto encendido y así sucesivamente con los demás leds dependiendo si el usuario ingresó un 1 o un 0, pero no consigo o no me queda muy claro como conseguir que Arduini lea cada dígito de la cadena por separado, se que debe de hacerse con un arreglo, pero no me queda muy claro como ¿alguna idea?

Lucario448

Lees caracter por caracter; y basado en este realizas la acción.

Se puede ejecutar en un ciclo for para así mantener una secuencia entre la posición del caracter y su respectivo pin (almacenado en un vector).
Por ejemplo: el caracter de la posición 3 (el cuarto) accionará el LED conectado al pin cuyo número está almacenado en la posición 3 del vector. Algo así como:

Code: [Select]
digitalWrite(pin[i], orden[i] - '0');


Ahora, hay que considerar cuándo terminar el ciclo; podría darse el caso en que la secuencia recibida tenga una longitud diferente a la cantidad de LEDs.
Y además, ¿cualquier caracter diferente de '0' encenderá el LED, o solo serán válidos el '0' y el '1'? La línea de código anterior utiliza el método más simple para convertir un caracter en un valor lógico o booleano; sin embargo, literalmente cualquier otro caracter diferente de '0' (valor decimal de 46) hará que encienda el LED (eso incluye a los de cambio de línea).

hypernovat

Hola EIVL14, bueno a mi se me ocurrio usar un display de 8x8 que viene con el integrado max7219 y uso la libreria LedControl, no se si se adapta a tu proyecto, pero retirando el display e investigando que pines encienden los 8 leds en linea conecte alli los leds y bueno te paso el codigo y puedes ver en youtube como funciona. Suerte.
Saludos.   
https://youtu.be/FcZwDBJSHko

Code: [Select]
#include "LedControl.h"
LedControl lc=LedControl(12,11,10,1);

unsigned long de=300;
 
void setup() {
    lc.shutdown(0,false);
    lc.setIntensity(0,15);
    lc.clearDisplay(0);
}

void enciendeLed() {

byte a[8]={B10000000,B01000000,B00100000,B00010000,B00001000,B00000100,B00000010,B00000001};

for(int i=0; i<8; i=i+1) {
lc.setRow(0,i,a[i]);
delay(de);
lc.clearDisplay(0); 
  }
}

void loop() {
  enciendeLed();
}

Go Up