Estou tendo um problema com o seguinte código, ele deveria enviar os dados lido pelo sensor de temperatura por meio de comunicação serial, no entanto não estou conseguindo localizar/corrigir o erro indicado quando o código é verificado pela IDE do Arduino.

#include <FloatToString.h>
#include "DHT.h"
#define DHTTYPE DHT11
#define DHTPIN 3

DHT dht(DHTPIN, DHTTYPE);
int led = 2; // Pino do led branco
char comando = '0';
char buffer[25];

void setup() {
  Serial.begin(9600); // inicializa a comunicação serial na velocidade 9600
  pinMode(led, OUTPUT); //<-l
  digitalWrite(led, LOW); //<-l
  dht.begin();
}

void loop() {
  int estadoLed = 0;
  char c = Serial.read();
  if (c != NULL) {
    if (c != comando) {
      comando = c;
    }
  }
  float u = dht.readHumidity();
  float t = dht.readTemperature();
  Serial.print(comando);
  if (comando == '1'){  // se na serial receber o caracter 'a'
    if ( estadoLed = 0) {
      estadoLed = 1;
      digitalWrite(led, HIGH);
    }
    Serial.write('t');
    Serial.write((floatToString(buffer,t, 2)));
    Serial.write('u');
    Serial.write((floatToString(buffer,u, 2)));
  }
  else { // se na serial receber o caracter 'a'
    if ( estadoLed = 1) {
      estadoLed = 0;
      digitalWrite(led, LOW);
    }
  }
delay(2000);
}

Exibições: 5122

Responder esta

Respostas a este tópico

Oi LOS, boa tarde,

só faltou você dizer qual é o erro.

Rui

Faltou mesmo citar os erros,

Arduino: 1.6.5 (Windows 7), Placa:"Arduino/Genuino Uno"

In file included from sketch_oct26a.ino:1:0:
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:2:1: error: expected unqualified-id before '<' token
 <!-- saved from url=(0072)http://playground.arduino.cc/Main/FloatToString?action=sourceblock&... -->
 ^
In file included from C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:12:0,
                 from sketch_oct26a.ino:1:
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:151:61: error: 'size_t' has not been declared
 extern void *bsearch(const void *__key, const void *__base, size_t __nmemb,
                                                             ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:152:8: error: 'size_t' has not been declared
        size_t __size, int (*__compar)(const void *, const void *));
        ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:183:33: error: 'size_t' has not been declared
 extern void qsort(void *__base, size_t __nmemb, size_t __size,
                                 ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:183:49: error: 'size_t' has not been declared
 extern void qsort(void *__base, size_t __nmemb, size_t __size,
                                                 ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:298:21: error: 'size_t' was not declared in this scope
 extern void *malloc(size_t __size) __ATTR_MALLOC__;
                     ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:310:8: error: 'size_t' does not name a type
 extern size_t __malloc_margin;
        ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:327:21: error: 'size_t' was not declared in this scope
 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
                     ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:327:36: error: 'size_t' was not declared in this scope
 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
                                    ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:327:51: error: expression list treated as compound expression in initializer [-fpermissive]
 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
                                                   ^
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:346:35: error: 'size_t' has not been declared
 extern void *realloc(void *__ptr, size_t __size) __ATTR_MALLOC__;
                                   ^
In file included from sketch_oct26a.ino:1:0:
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h: In function 'char* floatToString(char*, float, int, int, bool)':
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:29:16: error: 'lt' was not declared in this scope
     if (value &lt; 0)
                ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:29:18: error: expected ')' before ';' token
     if (value &lt; 0)
                  ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:29:21: error: expected ';' before ')' token
     if (value &lt; 0)
                     ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:32:20: error: 'lt' was not declared in this scope
     for (i = 0; i &lt; places; i++)
                    ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:32:30: error: expected ')' before ';' token
     for (i = 0; i &lt; places; i++)
                              ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:32:35: error: expected ';' before ')' token
     for (i = 0; i &lt; places; i++)
                                   ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:38:16: error: 'lt' was not declared in this scope
     if (value &lt; 0)
                ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:38:18: error: expected ')' before ';' token
     if (value &lt; 0)
                  ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:38:21: error: expected ';' before ')' token
     if (value &lt; 0)
                     ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:40:27: error: 'lt' was not declared in this scope
     while ((tens * 10.0) &lt;= tempfloat) {
                           ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:40:29: error: expected ')' before ';' token
     while ((tens * 10.0) &lt;= tempfloat) {
                             ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:40:30: error: expected primary-expression before '=' token
     while ((tens * 10.0) &lt;= tempfloat) {
                              ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:40:41: error: expected ';' before ')' token
     while ((tens * 10.0) &lt;= tempfloat) {
                                         ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:45:20: error: 'gt' was not declared in this scope
     if (tenscount &gt; 0)
                    ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:45:22: error: expected ')' before ';' token
     if (tenscount &gt; 0)
                      ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:45:25: error: expected ';' before ')' token
     if (tenscount &gt; 0)
                         ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:47:5: error: 'else' without a previous 'if'
     else
     ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:50:16: error: 'lt' was not declared in this scope
     if (value &lt; 0)
                ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:50:18: error: expected ')' before ';' token
     if (value &lt; 0)
                  ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:50:21: error: expected ';' before ')' token
     if (value &lt; 0)
                     ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:55:19: error: 'gt' was not declared in this scope
     if (minwidth &gt; charcount){        
                   ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:55:21: error: expected ')' before ';' token
     if (minwidth &gt; charcount){        
                     ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:55:32: error: expected ';' before ')' token
     if (minwidth &gt; charcount){        
                                ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:60:16: error: 'gt' was not declared in this scope
     if (extra &gt; 0 and rightjustify) {
                ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:60:18: error: expected ')' before ';' token
     if (extra &gt; 0 and rightjustify) {
                  ^
C:\Program Files (x86)\Arduino\libraries\FloatToString/FloatToString.h:60:38: error: expected ';' before ')' token
     if (extra &gt; 0 and rightjustify) {
                                      ^
sketch_oct26a:46: error: expected '}' at end of input
expected '}' at end of input

  Este relatório deveria ter mais informações
  "Mostrar saída verbosa durante a compilação"
  habilitado em Arquivo > Preferências.

Já tentei analisar o relatório de erros mas não consegui identificar qual a causa

Erro na biblioteca FloatToString, procura outra, pois está está detonada, tente usar um método para transformar de float para string, mais acha que é preciso fazer isso ? mostra direto na serial.

Eu já troquei a biblioteca, vou tentar achar uma nova. Já fiz o teste sem efetuar a conversação mas ele da problema na hora do envio dos dados. Qual outro método você indicaria para a conversação? 

Arrumei os erros que estava tendo, depois de muita pesquisa percebi que estava errando por estar tentando complicar onde não deveria, em vez de converter achei uma maneira de enviar a variável diretamente para a comunicação serial, caso alguém precise segue o código.

#include "DHT.h"  // definiçoes do DHT11
#define DHTTYPE DHT11
#define DHTPIN 3
DHT dht(DHTPIN, DHTTYPE);

int led = 2; // pino do led

char comando = '0'; // variaveis de controle
int estadoLed = 0;

void setup() {
  Serial.begin(9600); // inicializaçao comunicacao serial

  pinMode(led, OUTPUT); // inicializaçao led
  digitalWrite(led, LOW);

  dht.begin();// inicializaçao DHT11
}

void loop() {

  char c = Serial.read(); //leitura dos dados recebidos

  if ((c == '0' || c == '1') && (c != comando)) {
    comando = c;
    Serial.print(comando); // comparaçao e filtragem dos dados recebidos
  }

  float u = dht.readHumidity(); // leitura e impresao dos dados do DHT11
  float t = dht.readTemperature();

  if (comando == '1') { // verificaçao do comando

    if ( estadoLed == 0) {
      estadoLed = 1; // controle do led
      digitalWrite(led, HIGH);
    }

    Serial.write('t'); // envio dos dados
    Serial.print(t,BIN);
    delay(1000);
    Serial.write('u');
    Serial.print(u,BIN);
  }

  else if (comando == '0') {
    if ( estadoLed == 1) {
      estadoLed = 0;
      digitalWrite(led, LOW);
    }
    Serial.write('0');
  }
  delay(1000);
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço