He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español@Eithan.
En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.
Y el uso de "&" simple es una operación "AND" de bits. supongo que deberías cambiarlo por "&&" que es un "AND" pero de valor lógico y no de bits.
Saludos.
Hola! El problema en tu código está en la línea que dice if(i==array(2,3,6,7,10,11,14,15)). La función array no es una función válida en C/C++, y tampoco estás utilizando la sintaxis adecuada para acceder a los elementos de un arreglo.
Para comprobar si i está en el arreglo array, necesitas recorrer el arreglo y comparar cada elemento con i. Aquí tienes una manera de hacerlo:
int pin1 = 4;
int pin2 = 5;
int pin3 = 6;
int pin4 = 7;
int i;
int array[8] = {2, 3, 6, 7, 10, 11, 14, 15};
void setup() {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
}
void loop() {
for (i = 0; i <= 15; i++) {
// PIN4
if (i > 7)
digitalWrite(pin4, HIGH);
else
digitalWrite(pin4, LOW);
// PIN3
if ((i > 3 & i < 8) || i > 11)
digitalWrite(pin3, HIGH);
else
digitalWrite(pin3, LOW);
// PIN2
bool foundInArray = false;
for (int j = 0; j < 8; j++) {
if (i == array[j]) {
foundInArray = true;
break;
}
}
if (foundInArray)
digitalWrite(pin2, HIGH);
else
digitalWrite(pin2, LOW);
// PIN1
if ((i % 2) > 0)
digitalWrite(pin1, HIGH);
else
digitalWrite(pin1, LOW);
}
}
Este código debería cumplir con tu objetivo. Recuerda que estás recorriendo el bucle de 0 a 15, y en cada iteración estás configurando los pines de acuerdo con algunas condiciones específicas. Si necesitas más ayuda o tienes alguna otra pregunta, ¡no dudes en preguntar!