Arduino Polska Forum

Pełna wersja: LCDWIKI i wyświetlanie float
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Dzień dobry,

Bardzo proszę o podpowiedź bo już zaczynam wątpić we własny intelekt. Korzystam z Arduino Mega 2560 i shieldu 3.5" TFTLCD na ILI9486 (dwa rzędy pinów na końcu). Zdecydowałem się na bibliotekę LCDWIKI. 

Za nic nie chce ruszyć mi funkcja Print_Number_Float

Kod:
#include <LCDWIKI_GUI.h> //Core graphics library

#include <LCDWIKI_KBV.h> //Hardware-specific library

LCDWIKI_KBV mylcd(ILI9486,40,38,39,44,41);

#include <DHT.h>

#define  BLACK  0x0000
#define BLUE    0x001F
#define RED    0xF800
#define GREEN  0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE  0xFFFF

#define SENSOR_1 8
#define SENSOR_1_Type DHT22
#define SENSOR_2 9
#define SENSOR_2_Type DHT22

float hum1, temp1, hum1_tmp, temp1_tmp;

DHT dht_1(SENSOR_1, SENSOR_1_Type);

void setup(void)
{
  Serial.begin(9600);
  Serial.print("TERRA");

  dht_1.begin();

  mylcd.Init_LCD();
  mylcd.Fill_Screen(BLACK);
  mylcd.Set_Rotation(1);
  mylcd.Set_Draw_color(WHITE);
  mylcd.Fill_Round_Rectangle(1, 1, 180, 90, 5); 
  mylcd.Set_Text_Mode(0);
  mylcd.Set_Text_colour(BLACK);
  mylcd.Set_Text_Back_colour(WHITE);
  mylcd.Set_Text_Size(2);

  mylcd.Print_String("Temp1:", 15, 10);
  mylcd.Print_String("Wilg1:", 15, 30);
}

void loop() {

{
  hum1 = dht_1.readHumidity();
  temp1 = dht_1.readTemperature();
  Serial.print(hum1);
  Serial.print(temp1);
}
  if (temp1 == temp1_tmp)
 
  {
    goto wilgotnosc;
  }
  else
  {

    mylcd.Print_Number_Float(temp1, 2, 100, 10, ".", 5,"");
  temp1_tmp = temp1;

  }

  if (hum1 == hum1_tmp)
  {
    goto koniec;
  }
  else
  {
wilgotnosc:

      mylcd.Print_Number_Float(hum1, 2, 100, 30, ".", 5,"" );
hum1_tmp = hum1;

  }
  koniec: 
  delay(2000);

Nie wyświetla wartości czujnika, jak włączyłem serial port to staje po pierwszym "wydruku", pętli nie wykonuje. Błędy to:

Kod:
C:\Users\Cezary\Documents\Arduino\sss\sss.ino: In function 'void loop()':
C:\Users\Cezary\Documents\Arduino\sss\sss.ino:63:54: warning: invalid conversion from 'const char*' to 'uint8_t {aka unsigned char}' [-fpermissive]
      mylcd.Print_Number_Float(temp1,2,100,10,".",5,"");
                                                      ^
In file included from C:\Users\Cezary\Documents\Arduino\sss\sss.ino:1:0:
C:\Users\Cezary\Documents\Arduino\libraries\LCDWIKI_GUI/LCDWIKI_GUI.h:83:7: note:   initializing argument 5 of 'void LCDWIKI_GUI::Print_Number_Float(double, uint8_t, int16_t, int16_t, uint8_t, int16_t, uint8_t)'
  void Print_Number_Float(double num, uint8_t dec, int16_t x, int16_t y, uint8_t divider, int16_t length, uint8_t filler);
       ^~~~~~~~~~~~~~~~~~
C:\Users\Cezary\Documents\Arduino\sss\sss.ino:63:54: warning: invalid conversion from 'const char*' to 'uint8_t {aka unsigned char}' [-fpermissive]
      mylcd.Print_Number_Float(temp1,2,100,10,".",5,"");
                                                      ^
In file included from C:\Users\Cezary\Documents\Arduino\sss\sss.ino:1:0:
C:\Users\Cezary\Documents\Arduino\libraries\LCDWIKI_GUI/LCDWIKI_GUI.h:83:7: note:   initializing argument 7 of 'void LCDWIKI_GUI::Print_Number_Float(double, uint8_t, int16_t, int16_t, uint8_t, int16_t, uint8_t)'
  void Print_Number_Float(double num, uint8_t dec, int16_t x, int16_t y, uint8_t divider, int16_t length, uint8_t filler);
       ^~~~~~~~~~~~~~~~~~
C:\Users\Cezary\Documents\Arduino\sss\sss.ino:76:54: warning: invalid conversion from 'const char*' to 'uint8_t {aka unsigned char}' [-fpermissive]
       mylcd.Print_Number_Float(hum1,2,100,30,".",5,"");
                                                      ^
In file included from C:\Users\Cezary\Documents\Arduino\sss\sss.ino:1:0:
C:\Users\Cezary\Documents\Arduino\libraries\LCDWIKI_GUI/LCDWIKI_GUI.h:83:7: note:   initializing argument 5 of 'void LCDWIKI_GUI::Print_Number_Float(double, uint8_t, int16_t, int16_t, uint8_t, int16_t, uint8_t)'
  void Print_Number_Float(double num, uint8_t dec, int16_t x, int16_t y, uint8_t divider, int16_t length, uint8_t filler);
       ^~~~~~~~~~~~~~~~~~
C:\Users\Cezary\Documents\Arduino\sss\sss.ino:76:54: warning: invalid conversion from 'const char*' to 'uint8_t {aka unsigned char}' [-fpermissive]
       mylcd.Print_Number_Float(hum1,2,100,30,".",5,"");
                                                      ^
In file included from C:\Users\Cezary\Documents\Arduino\sss\sss.ino:1:0:
C:\Users\Cezary\Documents\Arduino\libraries\LCDWIKI_GUI/LCDWIKI_GUI.h:83:7: note:   initializing argument 7 of 'void LCDWIKI_GUI::Print_Number_Float(double, uint8_t, int16_t, int16_t, uint8_t, int16_t, uint8_t)'
  void Print_Number_Float(double num, uint8_t dec, int16_t x, int16_t y, uint8_t divider, int16_t length, uint8_t filler);

Jeśli ktoś ma doświadczenie z tym ekranem bardzo proszę o pomoc. Undecided
PS Przepraszam za bałagan w kodzie, dopiero zaczynam.
W przykładzie masz mylcd.Print_Number_Float(01234.56789, 2, 0, 8, '.', 0, ' ');
Ty używasz cudzysłowu zamiast apostrofu.
Nie używam tej biblioteki, kiedyś dawno sprawdzałem jakiś LCD i użyłem MCUFRIEND_kbv , nie pamiętam takiej gimnastyki z liczbami float.
Tak, to było aż tak banalne. Wstyd mi.
Dziękuję bardzo za pomoc.