22-12-2020, 18:57
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
Nie wyświetla wartości czujnika, jak włączyłem serial port to staje po pierwszym "wydruku", pętli nie wykonuje. Błędy to:
Jeśli ktoś ma doświadczenie z tym ekranem bardzo proszę o pomoc.
PS Przepraszam za bałagan w kodzie, dopiero zaczynam.
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.
PS Przepraszam za bałagan w kodzie, dopiero zaczynam.