ok gracias, basicamente estoy probando el con delay ya lo hice funcionar, ahora estoy con millis(), que me funciona bastante bien.
int pin;
int matriz[]{8,9,10,11,12};
int cont = 5;
int timer=150;
unsigned long inicia=0;
int estado=0;
void setup(){
for (int pin=0; pin<=cont; pin++){
pinMode (matriz[pin], OUTPUT);
}
randomSeed(analogRead(0));
}
void loop () {
unsigned long currentmillis = millis();
if(currentmillis - inicia >=timer){
inicia = currentmillis;
if (estado==0){
estado = 1;}
else estado =0;
int rnd = random(8, 13);
digitalWrite(rnd,estado);
}
}
Claro, eso es para hacer cambios de estado aleatorios, pero...
Lo que tu proponias al principio es:
Me voy a un pin aleatorio - Encender - Delay - Apagar - Delay y vuelta a empezar en otro pin aleatorio diferente.
Lo que propones ahora es:
Me voy a un pin aleatorio - lo cambio de estado - me voy a otro pin aleatorio - lo cambio de estado
me voy a otro pin aleatorio - lo cambio de estado - me voy a otro pin aleatorio - lo cambio de estado ...
int pin;
int cont = 5;
int matriz[cont][2] = {8, 0},
{9, 0},
{10, 0},
{11, 0},
{12, 0};
int timer = 150;
unsigned long inicia=0;
bool estado = 0;
void setup(){
for (int pin = 0; pin <= cont; pin++){
pinMode (matriz[pin][0], OUTPUT);
}
randomSeed(analogRead(0));
}
void loop () {
unsigned long currentmillis = millis();
if (currentmillis - inicia >=timer) {
inicia = currentmillis;
int rnd = random(0, cont-1);
matriz_estado[rnd][1] = !matriz_estado[rnd][1]; // cambio el estado de ese led
digitalWrite(matriz[rnd][0], matriz_estado[rnd][1]);
}
}
he puesto en una matriz las dos cosas, por un lado el pin que puede ser cualquiera no necesariamente correlativo y ademas el estado
Entonces cuando cambies el estado de algo será de ESE pin
int pin;
int cont = 6;
int matriz[6][2] = { //puse un 6 porque con la variable cont me daba error, y el seis para que me llegue al pin 12, lo importante que voy aprendiendo dia a dia y eso me alegra.
{8, 0},
{9, 0},
{10, 0},
{11, 0},
{12, 0}
};
int timer = 150;
unsigned long inicia=0;
bool estado = 0;
void setup(){
for (int pin = 0; pin <= cont; pin++){
pinMode (matriz[pin][0], OUTPUT);
}
randomSeed(analogRead(0));
}
void loop () {
unsigned long currentmillis = millis();
if (currentmillis - inicia >=timer) {
inicia = currentmillis;
int rnd = random(0, cont-1);
matriz[rnd][1] = !matriz[rnd][1]; // cambio el estado de ese led
digitalWrite(matriz[rnd][0], matriz[rnd][1]);
}
}
int rnd = random(0, cont-1); ACA LO PONE HIGH O LOW??
matriz[rnd][1] = !matriz[rnd][1]; // cambio el estado de ese led
digitalWrite(matriz[rnd][0], matriz[rnd][1]); de donde o como hace el random con los pines porque yo usaba int rnd = random(6, 13);
int rnd = random(0, cont-1); ACA LO PONE HIGH O LOW??
En tu código cont vale 5 de modo que cont-1 vale 4
random(0, 4) establece un valor aleatorio entre 0 y 4.
Con ese valor elijo que estado cambiaré y con que pin trabajo.
matriz[rnd][1] = !matriz[rnd][1]; // cambio el estado de ese led
Aquí puede lucir confuso pero es una matriz de la que solo pienso en la parte de la matriz que apunta al estado [1]. Recuerda que tiene dos dimensiones la [0] y la [1].
La [0] tiene todos los pines y la [1] los estados de esos pines.
Lo demas ya lo conoces. es como
estado = !estado;
el valor que tenga el elemento de la matriz se invierte y ese valor queda almacenado.
digitalWrite(matriz[rnd][0], matriz[rnd][1]);
y aca juego con las dos variables con el pin que corresponde al valor de rnd y con su estado.
pinMode (matriz[pin][0], OUTPUT), esto lo tomo del setup, el [0], apunta a la zona de la matriz de los numeros de los pin? si quisiera que todos los pin inicien a pagados desde el setup?
digitalWrite(matriz[rnd][0], matriz[rnd][1]) aca no se como lee los pines ya que no tengo un random para ellos, solo veo el random(0, (cont-1)), low o high, y de donde sava el random(8,12) que serian los numeros de los pines.
Adrian_E:
esto lo tomo del setup, el [.0], apunta a la zona de la matriz de los numeros de los pin? si quisiera que todos los pin inicien a pagados desde el setup?
Claro cuando tienes una matrix X filas Y columnas, en este caso es 5 filas y 2 columnas.
Cada elemento es identificado por ambas coordenadas.