Arduino LCD1602. Вывод цифр вместо текста
Подключаю LCD1602 Без I2C к Arduino Uno
Со схемой нет проблем, всё работает, но я хочу вывести символ + текст. В данный момент получается вывести символ, но вместо текста выводится набор цифр. В чем проблема, подскажите?
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
byte customChar[] = {
B00101,
B00100,
B11111,
B00100,
B00100,
B00100,
B00100,
B00111
};
void setup()
{
lcd.createChar(0, customChar);
lcd.begin(16, 2);
lcd.write(byte(0));
lcd.setCursor(2, 0);
lcd.print('Hello World!');
}
void loop()
{
}
Вывод:
t° 25633
Ответы (1 шт):
lcd.print('Hello World!');
В С++ строковые литералы должны заключаться в двойные кавычки: lcd.print("Hello World!");
Символ в одинарных кавычках компилятором воспринимается как одиночный символ, что в С++ вообще-то целое число, а не строка. В более поздних версиях С++ добавили возможность указывать не один символ, а несколько, которые вместе вмещаются в Int. У Arduino int — это два байта. Компилятор взял из вашей строки последние 2 байта, и преобразовал в число.
"Hello World!" — массив char[13] = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x00} (символ 0 добавляется автоматически компилятором)
'Hello World!' — целое число 0x48656C6C6F20576F726C6421, обрезанное до размера int, то есть 0x6421 = 25633.