Error de programación

Me aparece este error:

**In function 'void loop()':**
**31:36: error: 'array' cannot be used as a function**

Editado por Moderador

Y no se que hacer, si me pueden ayudar porfa (soy nuevo aun), el código es este:

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
    if(i==array(2,3,6,7,10,11,14,15))
      digitalWrite(pin2,HIGH);
    else
      digitalWrite(pin2,LOW);
    
    //PIN1
    if((i%2)>0)
      digitalWrite(pin1,HIGH);
    else
      digitalWrite(pin1,LOW);
  }
}

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.

De antemano, muchas gracias por cooperar.

No puedes hacer esto

if(i==array(2,3,6,7,10,11,14,15))

Debes reemplazarlo por otro lazo for() en el que se compara i con cada item de array[].

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.

Más o menos a que te refieres... porque lo que entiendo es que en vez de

if(i==array(2,3,6,7,10,11,14,15))

seria:

for(i=2; i<=15; i++)

asi seria?

Tienes un array con 8 valores y quieres saber si el valor i coincide con un valor dentro del array entonces tienes que recorrerlo.

for(i=0; i<=15; i++) {
// instrucciones de tu código
  bool encontrado = false;
  for (int j = 0; j < 8; j++) {
    if (array[j] == i) {
      encontrado = true;
      break;
    }
  }
  if (encontrado) {
    digitalWrite(pin2,HIGH); 
  } else {
    digitalWrite(pin2,LOW);
  }
// resto del código

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!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.