Go Down

Topic: erro: expected initializer before 'void'.... alguém me ajuda? (Read 740 times) previous topic - next topic

bruguink

vou deixar aki o programa que estou a desenvolver, no qual me aparece esse tal erro que falei no titulo do topico.
alguma ajuda ou dica seria bem vinda...

Code: [Select]
#include <Wire.h>

byte fecth_humidity_temperature(unsigned int *p_Humidity, unsigned int *p_Temperature);
void print_float(float f, int num_digits)

#define TRUE 1
#define FALSE 0

void setup(void)
{
  Serial.begin(9600);
  Wire.begin();
  //pinMode(4, OUTPUT);
  //digitalWrite(4, HIGH);
  delay(5000);
  Serial.println("<<<<<<<<<<<<<<<");
}

void loop(void)
{
  byte _status;
  unsigned int H_dat, T_dat;
  float RH, T_C;
 
  while(1)
  {
      _status = fecth_humidity_temperature(&H_dat, &T_dat);
 
    switch(_status)
    {
    case 0: Serial.println("Normal.");
            break;
    case 1: Serial.println("Stale Data.");
            break;
    case 2: Serial.println("In command mode.");
            break;
    default: Serial.println("Diagonostic.");
    }
 
 
    RH = (float) H_dat * 6.10e-3;// equação para calcular humidade relativa
    T_C = (float) T_dat * 1.007e-2 -40.0;// eq. para calcular temperatura
 
    print_float (RH,1);
    Serial.print("  ");
    print_float (T_C, 2);
    Serial.println();
    delay(1000);
  }
}

byte fetch_humidity_temperature(unsigned int *p_H_dat, unsigned int *p_T_dat)
{
    byte address, Hum_H, Hum_L, Temp_H, Temp_L, _status;
    unsigned int H_dat, T_dat;
    address = 0x27;
    Wire.beginTransmission( address);
    Wire.endTransmission();
    delay(100);
   
    Wire.requestFrom((int)address, (int) 4);// pedido de 4 bytes a partir do dispositivo slave com endereço "address"
    Hum_H =Wire.read();
    Hum_L =Wire.read();
    Temp_H =Wire.read();
    Temp_L =Wire.read();
    Wire.endTransmission();
   
   
    _status = (Hum_H >> 6) & 0x03;
    Hum_H = Hum_H & 0x3f;
    H_dat = (((unsigned int) Hum_H) <<8) | Hum_L;
    T_dat = (((unsigned int) Temp_H) <<8) | Temp_L;
    T_dat = T_dat / 4;
    *p_H_dat = H_dat;
    *p_T_dat = T_dat;
    return(_status);
}

void print_float( float f, int num_digits)
{
    int f_int;
    int pows_of_ten[4] = {1, 10, 100, 1000};
    int multiplier, whole, fract, d, n;
   
    multiplier = pows_of_ten[num_digits];
    if (f < 0.0)
    {
        f = -f;
        Serial.print("-");
    }
    whole = (int) f;
    fract = (int) (multiplier * (f- (float)whole));
   
    Serial.print(whole);
    Serial.print(".");
   
    for (n=num_digits-1; n>=0; n--)
    {
      d = fract / pows_of_ten[n];
      Serial.print(d);
      fract = fract % pows_of_ten[n];
    }
}
 

fabio_h

#1
Apr 17, 2013, 05:14 pm Last Edit: Apr 17, 2013, 05:25 pm by fabiohbm007 Reason: 1
Resolvido!
Code: [Select]
#include <Wire.h>

#define TRUE 1
#define FALSE 0

void setup()
{
 Serial.begin(9600);
 Wire.begin();
 //pinMode(4, OUTPUT);
 //digitalWrite(4, HIGH);
 delay(5000);
 Serial.println("<<<<<<<<<<<<<<<");
}

void loop(void)
{
 byte _status;
 unsigned int H_dat, T_dat;
 float RH, T_C;
 
 while(1)
 {
     _status = fetch_humidity_temperature(&H_dat, &T_dat);
 
   switch(_status)
   {
   case 0: Serial.println("Normal.");
           break;
   case 1: Serial.println("Stale Data.");
           break;
   case 2: Serial.println("In command mode.");
           break;
   default: Serial.println("Diagonostic.");
   }
 
 
   RH = (float) H_dat * 6.10e-3;// equação para calcular humidade relativa
   T_C = (float) T_dat * 1.007e-2 -40.0;// eq. para calcular temperatura
 
   print_float (RH,1);
   Serial.print("  ");
   print_float (T_C, 2);
   Serial.println();
   delay(1000);
 }
}

byte fetch_humidity_temperature(unsigned int *p_H_dat, unsigned int *p_T_dat)
{
   byte address, Hum_H, Hum_L, Temp_H, Temp_L, _status;
   unsigned int H_dat, T_dat;
   address = 0x27;
   Wire.beginTransmission( address);
   Wire.endTransmission();
   delay(100);
   
   Wire.requestFrom((int)address, (int) 4);// pedido de 4 bytes a partir do dispositivo slave com endereço "address"
   Hum_H =Wire.read();
   Hum_L =Wire.read();
   Temp_H =Wire.read();
   Temp_L =Wire.read();
   Wire.endTransmission();
   
   
   _status = (Hum_H >> 6) & 0x03;
   Hum_H = Hum_H & 0x3f;
   H_dat = (((unsigned int) Hum_H) <<8) | Hum_L;
   T_dat = (((unsigned int) Temp_H) <<8) | Temp_L;
   T_dat = T_dat / 4;
   *p_H_dat = H_dat;
   *p_T_dat = T_dat;
   return(_status);
}

void print_float( float f, int num_digits)
{
   int f_int;
   int pows_of_ten[4] = {1, 10, 100, 1000};
   int multiplier, whole, fract, d, n;
   
   multiplier = pows_of_ten[num_digits];
   if (f < 0.0)
   {
       f = -f;
       Serial.print("-");
   }
   whole = (int) f;
   fract = (int) (multiplier * (f- (float)whole));
   
   Serial.print(whole);
   Serial.print(".");
   
   for (n=num_digits-1; n>=0; n--)
   {
     d = fract / pows_of_ten[n];
     Serial.print(d);
     fract = fract % pows_of_ten[n];
   }
}

bruguink

valeu....já tinha reparado que uma dessas dessa linhas estava a mais...e afinal eram as duas...obrigado

bubulindo


Resolvido!


Portanto, em caso de erro apaga-se até dar certo?

O erro que vias acontecia porque não tinhas um ponto e virgula (;) em frente a esta linha:
Code: [Select]
void print_float(float f, int num_digits)

Se colocares um ponto e virgula garanto-te que funciona e não precisas de apagar código.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

bruguink

bubulindo...eu também reparei nesse pormenor, realmente deixou de dar esse erro...mas depois compilei com esse ";" e dava-me erro no compilador devido á linha de codigo
Code: [Select]
byte fecth_humidity_temperature(unsigned int *p_Humidity, unsigned int *p_Temperature);

eliminando essas duas linhas e testando o sensor, trabalhou bem..

abraço

Go Up