Всем привет. Народ, скомпилируйте у себя код Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); lcd.print("Hi"); } void loop() { } Это ардуино уно + LCd 16x2 . Одна и таже библиотека , но в версии 1.8.1 - выводится только 1 символ- первый и все, а версии 1.0.5-r2 полностью - все ок. Что не так???
В исходнике библиотеки должно быть такое: Код (C++): inline size_t LiquidCrystal_I2C::write(uint8_t value) { send(value, Rs); return 1; } return 1 должен быть. Если там return 0 - поменяй. Когда-то давно была такая проблема
Сможете помочь исправить ? Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <lib_bl999.h> static BL999Info info; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd Serial.begin(115200); //set digital pin to read info from bl999_set_rx_pin(2); //start reading data from sensor bl999_rx_start(); // Print a message to the LCD. lcd.backlight(); } void loop() { bl999_wait_rx(); //read message to info and if check sum correct - outputs it to the serial port if (bl999_get_message(info)) { lcd.print("Temperature: " + String(info.temperature / 10.0)); lcd.print("Humidity: " + String(info.humidity) + "%"); } } sketch_dec15a.ino: In function 'void loop()': sketch_dec15a:35: error: call of overloaded 'String(double)' is ambiguous C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:70: note: candidates are: String::String(long unsigned int, unsigned char) C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:69: note: String::String(long int, unsigned char) C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:68: note: String::String(unsigned int, unsigned char) C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:67: note: String::String(int, unsigned char) C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:66: note: String::String(unsigned char, unsigned char) C:\arduino-1.0.5-r2\hardware\arduino\cores\arduino/WString.h:65: note: String::String(char)
У String нет конструктора для типа double, вот что вам пишут. Вместо вот этого: Код (C++): lcd.print("Temperature: " + String(info.temperature / 10.0)); lcd.print("Humidity: " + String(info.humidity) + "%"); Попробуйте так: Код (C++): String s1 = (info.temperature / 10.0); String s2 = info.humidity); lcd.print("Temperature: " + s1); lcd.print("Humidity: " + s2 + "%"); Хотя, конечно, дичь так с памятью обходиться
sketch_dec15a.ino: In function 'void loop()': sketch_dec15a:32: error: conversion from 'double' to non-scalar type 'String' requested sketch_dec15a:33: error: invalid conversion from 'byte' to 'const char*' sketch_dec15a:33: error: initializing argument 1 of 'String::String(const char*)'
Спасибо, даже не знаю, собираются ли такой косяк исправлять - у меня этих arduino IDE очень много. И каждый раз компилить то там, то сям это ппц (((( СПАСИБО помогло.
Данный код заработал как надо , в новой IDe, благодаря вашей подсказке- спасибо. Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <lib_bl999.h> static BL999Info info; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd Serial.begin(115200); //set digital pin to read info from bl999_set_rx_pin(2); //start reading data from sensor bl999_rx_start(); // Print a message to the LCD. lcd.backlight(); } void loop() { bl999_wait_rx(); //read message to info and if check sum correct - outputs it to the serial port if (bl999_get_message(info)) { lcd.print("Temperature: " + String(info.temperature / 10.0)); lcd.print("Humidity: " + String(info.humidity) + "%"); } }