Buenos dias, es mi primer post luego de leer mucho información durante bastante años, me declaro mas especialista en hardware que en software pero aun asi hay pequeños programas que yo mismo puedo hacer, sin embargo tengo una duda que no he logrado solucionar:
Tengo este codigo el cual lee 8 entradas y escribe 8 salidas en función de la entrada, y eso funciona bien, no hay problema con ello, el tema es que necesito que cuando se lea una entrada por ejemplo la 1, se escriba la salida 1 y la 2, si leo la 2 que se escriba la 3 y la 4, si se lee la 3 que se escriba la 4 y la 5, es decir por cada entrada que leo debe escribir dos salidas no solo una, pense en algo como modificar la parte que dice:
LED a algo como * *LED[i && i+1* * ....pero la verdad no se como hacerlo, y que lo que he intentado no resulta. * *for(i = 0; i < N_CHANNELS; i++) { if(digitalRead(b[i])) { pixels.setPixelColor(LED[i], pixels.Color(R, G, B)); pixels.show(); } else //if(digitalRead(b[i]));// && sequence==0) { pixels.setPixelColor(LED[i], pixels.Color(R_OFF, G_OFF, B_OFF)); pixels.show();* *
Estimado, lo he solucionado, lamentablemente la idea que me diste no me sirvio, pero al parecer me abrio el camino para la solucion, lo que hice fue:
Duplicar los canales de entrada y salida, antes tenia 7 y ahora pase a 14 canales, y en los canales de entrada como seguían siendo 7 (recordar que con 7 entradas quería manejar 14 salidas a modo de pares), direccione los canales en pares es decir, el canal 1 y 2 = 1, canal 3 y 4 = 2..... y asi sucesivamente, y a la salida automáticamente se encendían dos led con una activación de entrada, incluso no hubo necesidad de usar el LED[i+1]
Moderador:
Por favor no repitas lo que otra persona te dice. Ya se lee en el post correspondiente.
Menciona a la persona por su nick y nada mas.
Usa quote o cita para resaltar un párrafo. Cuando resaltas todo es cuando cometes la falta.
Gracias.
Esta claro que parte de la idea de @gonpezzi te sirvió y de hecho te inspiró pero solo le falto un detalle.
Y es cuando tu entrada se aproxima al limite de entradas disponibles o sea 8.
Veamos que pasa cuando tu entrada fuera 5, debes activar salidas 6 y 7
Y cuando sea 6, las saldias 7 y 8? Error. 7 y 0 es lo correcto supongo.
Y cuando sea 7, o sea el final del loop? Las salidas 0 y 1
Entonces lo que falló es que las salidas deben ajustarse a módulo 8
@surbyte, como comente arriba no sirve sumar uno a la variable i, lo probé y no responde como debería, fue en ese instante donde se me ocurrió duplicar los canales y donde obtuve buenos resultados, quizás no es la forma mas elegante, pero sirvió, tb creo que cometí un error al describir lo que necesitaba, y por lo mismo lo volveré a comentar, yo necesitaba por ejemplo 4 inputs y 8 outputs basadas en este codigo.
pero que al activar la input 1 activara las salidas 1 y 2, al activar la input 2 activara la 3 y 4, al activar la input 3 activara la 5 y 6...... asi sucesivamente.
Ahh bueno, no consideré que sumar 1 estaba mal, pero era tan simple como pensar un instante
con la entrada 1 quieres salidas 1 y 2
con la entrada 2 queires salidas 2 y 3
con la entrada 7 quieres salidas 7 y 0