Тема: LCD Keypad Shield
Приобрел данное устройство, но возникли вопросы:
1. где более подробно прочитать про библиотеку для устройства?
2. как создавать меню для данного устройства?
Из примеров приведенных в библиотеке многое не понятно.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум freeduino.ru → Технические вопросы → LCD Keypad Shield
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Приобрел данное устройство, но возникли вопросы:
1. где более подробно прочитать про библиотеку для устройства?
2. как создавать меню для данного устройства?
Из примеров приведенных в библиотеке многое не понятно.
Вот кусочек скетча, где видно, как можно перехватить и обработать нажатие кнопки
void loop() {
uint8_t i_1, i_2;
clock();
if (lcd.KeyPressed()==KEY_ENTER)
{
while (lcd.KeyPressed()!=0);
i_2=Menu_Backlight.Choice();
lcd.Backlight(i_2);
lcd.clear();
}
}
Вот еще
//Небольшой легкий пример использования LCD Keypad Shield в качестве простых часов с управлением подсветкой ЖК.
//В качестве, собственно, часов используется микросхема DS1307 подключенная по схеме с arduino.org
/*
LiquidCrystal_MCP23x17 Library - Hello World
see http://freeduino.ru for details
sample is based on original Arduino LiquidCrystal sample
with only difference, that we use MCP23x17-based shield
for interfacing with LCD display
*/
//include base class code
#include <MCP23x17.h>
////For SPI version of shield we include SPI.h and MCP23S17.h:
//#include <SPI.h>
//#include <MCP23S17.h>
//For I2C version of shield we include Wire.h and MCP23017.h:
#include <Wire.h>
#include <MCP23017.h>
#include <DS1307.h>
//include the library code
#include <LiquidCrystal_MCP23x17.h>
//menu
char *MenuItems_Backlight[] = {
"Backlight OFF",
"Backlight ON"
};
////For SPI version of shield we create CMCP23S17 object:
//CMCP23S17 MCP;
//For I2C version of shield we create CMCP20S17 object:
CMCP23017 MCP;
//LCD object
LiquidCrystal_MCP23x17 lcd;
//Menu objects
LCDMenu Menu_Backlight;
void setup() {
// //For SPI version of shield we configure SPI bus, and MCP object with CS line (10) and address (0)
// SPI.begin();
// MCP.init(10, 0);
//For I2C version of shield we configure I2C bus, and MCP object with address (0)
Wire.begin(); //TWBR = 12; // <- uncomment this for 400kHz I2C
MCP.init(0);
//here we configure LCD object to work through specified MCP object
lcd.init(MCP);
//...and turn off backlight
lcd.Backlight(0);
//...all the following code will be the same for original LiquidCrystal library and MCP23x17-based
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
//lcd.print("hello, world!");
Menu_Backlight.init(lcd, MenuItems_Backlight, 2);
//clock для первого запуска часов раскомментируйте, установите время, затем закомментируйте обратно, иначе часы будут установлены в эти значения каждый раз
// RTC.stop();
// RTC.set(DS1307_SEC,1); //set the seconds
// RTC.set(DS1307_MIN,51); //set the minutes
// RTC.set(DS1307_HR,15); //set the hours
// RTC.set(DS1307_DOW,1); //set the day of the week
// RTC.set(DS1307_DATE,14); //set the date
// RTC.set(DS1307_MTH,5); //set the month
// RTC.set(DS1307_YR,12); //set the year
// RTC.start();
}
void clock(){
// вывод даты в верхнюю строку.
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 0);
lcd.print(RTC.get(DS1307_DATE,false))+lcd.print(".")+lcd.print(RTC.get(DS1307_MTH,false))+lcd.print(".")+lcd.print(RTC.get(DS1307_YR,true));
lcd.setCursor(0, 1);
//Добавляем ноль перед цифрой минут, секунд, что бы было удобнее смотреть
lcd.print(RTC.get(DS1307_HR,true))+lcd.print(":");
if (RTC.get(DS1307_MIN,false)<10)
{lcd.print("0")+lcd.print(RTC.get(DS1307_MIN,true))+lcd.print(":");} else {lcd.print(RTC.get(DS1307_MIN,true))+lcd.print(":");}
if (RTC.get(DS1307_SEC,false)<10)
{lcd.print("0")+lcd.print(RTC.get(DS1307_SEC,false));}
else { lcd.print(RTC.get(DS1307_SEC,false));}
}
void loop() {
uint8_t i_2;
clock();// подпрограмма вывода времени,
if (lcd.KeyPressed()==KEY_ENTER) //при нажатии кнопки enter вызываем меню управления подсветкой
{
while (lcd.KeyPressed()!=0);
i_2=Menu_Backlight.Choice();
lcd.Backlight(i_2);
lcd.clear();
}
}
Добрый день!
Спрошу в этой теме.
Имеется модуль LCD версия SPI.
При попытке компиляции примера HelloWorld_SPI выдаются ошибки:
Arduino: 1.5.7 (Windows 7), Board: "Arduino Uno"
Build options changed, rebuilding all
D:\Arduino-My\Sketchbook\libraries\LiquidCrystal_MCP23x17\LiquidCrystal_MCP23x17.cpp:25:15: error: 'prog_uchar' does not name a type
PROGMEM const prog_uchar _utf8_ru_table[] =
^
In file included from D:\arduino-1.5.7\hardware\arduino\avr\cores\arduino/WString.h:29:0,
from D:\arduino-1.5.7\hardware\arduino\avr\cores\arduino/Print.h:26,
from D:\Arduino-My\Sketchbook\libraries\LiquidCrystal_MCP23x17/LiquidCrystal_MCP23x17.h:11,
from D:\Arduino-My\Sketchbook\libraries\LiquidCrystal_MCP23x17\LiquidCrystal_MCP23x17.cpp:7:
D:\Arduino-My\Sketchbook\libraries\LiquidCrystal_MCP23x17\LiquidCrystal_MCP23x17.cpp: In member function 'virtual size_t LiquidCrystal_MCP23x17::write(uint8_t)':
D:\Arduino-My\Sketchbook\libraries\LiquidCrystal_MCP23x17\LiquidCrystal_MCP23x17.cpp:345:34: error: '_utf8_ru_table' was not declared in this scope
value = pgm_read_byte_near(_utf8_ru_table + _utf8_ru_hi_bit + value);
^
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Что нужно поправить?
Нашел решение сам. Может еще кому пригодится.
В файле библиотеки дисплея LiquidCrystal_MCP23x17.cpp находим строку:
PROGMEM const prog_uchar _utf8_ru_table[] =
и меняем на:
PROGMEM const unsigned char _utf8_ru_table[] =
Перезапускаем Arduino IDE. Все должно заработать.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум freeduino.ru → Технические вопросы → LCD Keypad Shield
Форум работает на PunBB, при поддержке Informer Technologies, Inc