Go Down

Topic: error definicion de funcion no permitida con una matriz como parametro (Read 340 times) previous topic - next topic

bumbleby

Hize un programa en atmel studio para arduino uno que consiste en generar una serie de fibonaci y mostrarla en 3 displays haciendo una multiplexacion por division de tiempo y me compilo perfectamente incluso lo simule en proteus y me funciono correctamente pero al pasarlo a arduino no me reconoce una de las funciones que es de este tipo " void display(int NUM[])" una funcion con una matriz como parametro estuve buscando por si era una libreria lo que me estaba faltando agregar a arduino pero aun no me reconoce la funcion incluso agrege la libreria "#include <conio.h>" se me borro el error de que no me reconocia mi funcion pero ahora no me quiere compilar me sale "Error compiling for board Arduino/Genuino Uno." ayuda porfavor
 

aca esta el codigo completo pero la unica funcion que no reconoce es "void display"


Code: [Select]

 #define F_CPU 16000000


void loop()
{
  DDRD = 0b11111111;
  DDRC = 0b00111;
  int ii=0;
  int jj=0;
  int kk=0;
  int ll=0;
  int AA[2];
  int i = 0;
  int j = 0;
  int b = 0 ;
  int c = 0;
  int aa=0;
  int bb=1;
  int zz;
  int max=16;
  int cont;

  const int A[]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00001111,0b01111111,0b01100111};
  const int B[]={0b000110,0b000101,0b000011};
 
  void display(int NUM[])
  {
    kk= NUM[0];
    jj= NUM[1];
    ii= NUM[2];
    for(ll=0;ll<33;ll+=1)
    {
      PORTD=A[kk];
      PORTC=B[0];
      delay(10);
      PORTC = 0b11111111;
      PORTD=A[jj];
      PORTC=B[1];
      delay(10);
      PORTC = 0b11111111;
      PORTD=A[ii];
      PORTC=B[2];
      delay(10);
      PORTC = 0b11111111;
    }
    return;
  }
 
 
  void separar(int numero1)
  {
    while (numero1>=10)
    {
      j=numero1;
      numero1=j/10;
      b=numero1*10;
      c=j-b;
      AA[i]=c;
      i++;
    }
    AA[i] = numero1;
    return;
  }

 
 
  while(1)
  {
   
   
    for (cont=1;cont<max;cont++)
    {
      separar(aa);
      display(AA);
      zz=aa+bb;
      aa=bb;
      bb=zz;
    }

   
   
  }
}

surbyte

Primer error no tienes setup()
La estructura de Arduino es

Code: [Select]
void setup() {}

void loop() {}


no se usa loop()

y luego un while(1)

verifica con esta versión pero como no esta documentado el código supuse algunas cosas.

Code: [Select]
int ii    = 0;
int jj    = 0;
int kk    = 0;
int ll    = 0;
int AA[2];
int i     = 0;
int j     = 0;
int b     = 0 ;
int c     = 0;
int aa    = 0;
int bb    = 1;
int zz;
int max   = 16;
int cont;

const int A[] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00001111,0b01111111,0b01100111};
const int B[] = {0b000110,0b000101,0b000011};

void display(int NUM[]) {
  kk = NUM[0];
  jj = NUM[1];
  ii = NUM[2];
  for (ll=0;ll<33;ll+=1)  {
      PORTD=A[kk];
      PORTC=B[0];
      delay(10);
      PORTC = 0b11111111;
      PORTD=A[jj];
      PORTC=B[1];
      delay(10);
      PORTC = 0b11111111;
      PORTD=A[ii];
      PORTC=B[2];
      delay(10);
      PORTC = 0b11111111;
  }
}
  
void separar(int numero1) {
  while (numero1>=10)  {
    j = numero1;
    numero1 = j/10;
    b = numero1*10;
    c = j-b;
    AA[i] = c;
    i++;
  }
  AA[i] = numero1;
}

void setup() {
  DDRD      = 0b11111111;
  DDRC      = 0b00111;
}

void loop() {  
  for (cont=1;cont<max;cont++) {
      separar(aa);
      display(AA);
      zz=aa+bb;
      aa=bb;
      bb=zz;
  }    
}


Esto que acabo de dejarte es estilo Arduino.

Tu código luce mas como un programa estilo C clásico asi que en lugar de loop() usa main() y debería funcionar compilado en Visual Studio.

Go Up