Developing for Arduino
13 October 2011

Arduino и LiquidCrystal

Библиотека LiquidCrystal позволяет вам управлять ЖК-дисплями, совместимыми с драйвером Hitachi HD44780. Есть много их, обычно 16-пиновых, разновидностей.
Эта схема выводит «hello, habr!» на ЖК-дисплей и показывает время в секундах, после сброса.





Нам понадобится:
  • Arduino Board
  • LCD-дисплей (совместимый с драйвером Hitachi HD44780)
  • Макетная плата
  • Конденсатор 100 мкФ
  • Соединительные провода


Контрастность LCD зависит от величины напряжения, которое подается на вход управления. Чем больше напряжение, тем меньше контрастность и наоборот. Напряжение должно быть около 0.5-1 В, но еще зависит от окружающей температуры. В нашем примере значение PWM установлено на 50, что обеспечивает уровень выходного напряжения около 1 В. Соответственно вы можете увеличивать или уменьшать данное значение для получения необходимого уровня контрастности.

Используя один из выходом PWM с конденсатором, мы будем управлять контрастностью с программы, где «жестко» будет прописано значение. Вывод 9 Arduino, который используется как PWM, соединен к пином управления контрастностью Vo LCD. Конденсатор 100 мкФ, соединен между выходом PWM и общим.

Ниже показана распиновка LCD-Arduino:



И собственно код:

/*
  Схема подключения:
 * LCD RS пин к цифр. выходу 12
 * LCD Enable пин к цифр. выходу 11
 * LCD R/W к Общему
 * LCD VO пин (пин 3) к PWM-выходу 9
 * LCD D4 пин к цифр. выходу 5
 * LCD D5 пин к цифр. выходу 4
 * LCD D6 пин к цифр. выходу 3
 * LCD D7 пин к цифр. выходу 2
 
 */
 
#include <liquidcrystal.h>  // подключаем библиотеку
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // инициализация библиотеки с перечнем задействованных выводов
 
void setup() {
  pinMode(9, OUTPUT); 
  analogWrite(9, 50);   // устанавливаем PWM выход  
  lcd.begin(16, 2);     // устанавливаем кол-во столбцов и строк
  lcd.print("hello, habr!");  // вывод сообщения на LCD
}
 
void loop() {
  // устанавливаем курсор в 0-ом столбце, 1 строка (начинается с 0)
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000); // вывод числа секунд после сброса
}
</liquidcrystal.h>


UPD: меня задрала вся эта игра. Как там? «мопед не мой...» — это не моя статья, мне ардуино нафиг не нужен, а закинул статью я от своего имени воооот этого img33.imageshack.us/img33/7060/selection001l.png человека. Он сильно хотел на хабр и хотел написать статью, а я ему за это инвайт бы дал. Т.ч. прошу все вопросы к нему… в общем, хотите минусуйте, но не засирайте мне почту коментами.

-13
13.8k 17
Comments 22
Top of the day