Объявление

Внимание!
Данный форум предназначен только для радиолюбителей!
Никакие прочие объявления, реклама товаров либо услуг невозможны!


Любой спам на нашем форуме запрещён!
Разрешаются только ссылки по темам! 3а нарушения БАН.


Ардуино: вывод текста на ЖК дисплей 1602

Правила форума
Внимание! Любой спам на нашем форуме запрещён!
Коммерческая реклама сайтов, ссылки, спам запрещены. Так же запрещены ссылки на сайты в профилях новичков.
Бан без предупреждений.

Ардуино: вывод текста на ЖК дисплей 1602

Сообщение admin » 03 дек 2016, 13:43

Все давно привыкли, что у каждого электронного устройства есть экран, с помощью которого оно дает человеку всякую полезную информацию. MP3-плеер показывает название играемого трека, пульт квадрокоптера отображает полетную телеметрию, даже стиральная машина выводит на дисплей время до конца стирки, а на смартфоне вообще размещается целый рабочий стол персонального компьютера!

Скорее всего, вашему очередному устройству тоже не помешает какой-нибудь небольшой дисплейчик Попробуем сделать простые электронные часы! А в качестве табло используем распространенный и дешевый символьный ЖК дисплей 1602. Вот прямо такой, как на картинке:

Изображение

Кроме 16х2, достаточно популярным считается символьный дисплей 20х4 (четыре строки по 20 символов), а также графический дисплей с разрешением 128х64 точек. Вот они на картинках:

Изображение

Изображение

1. Подключение символьного ЖК дисплея 1602

У дисплея 1602 есть 16 выводов. Обычно они нумеруются слева-направо, если смотреть на него так как на картинке. Иногда выводы подписываются, типа: DB0, DB1, EN и т.п. А иногда просто указывают номер вывода. В любом случае, список выводов всегда одинаковый:

1 — «GND», земля (минус питания);
2 — «Vcc», питание +5В;
3 — «VEE», контраст;
4 — «RS», выбор регистра;
5 — «R/W», направление передачи данных (запись/чтение);
6 — «EN», синхронизация;
7-14 — «DB0», «DB1″, .., «DB7″- шина данных;
15 — анод подсветки (+5В);
16 — катод подсветки (земля).

Линии VEE, RS и четыре линии данных DB4, DB5, DB6, DB7 подключаем к цифровым выводам контроллера. Линию «R/W» подключим к «земле» контроллера (так как нам потребуется только функция записи в память дисплея). Подсветку пока подключать не будем, с этим, я полагаю, вы сами легко разберетесь

Принципиальная схема подключения дисплея к Ардуино Уно

[img]http://robotclass.ru/wp-content/uploads/2014/12/lcdx1potx1_схема-1024x896.png[/img]

Внешний вид макета

Изображение

На всякий случай еще и в виде таблички:ЖК дисплей 1602:
1 2 4 6 11 12 13 14 15 16
Ардуино Уно:
GND +5V 4 5 6 7 8 9 +5V GND

2. Программируем «Hello, world!»

Для работы с ЖК дисплеями различных размеров и типов, в редакторе Arduino IDE имеется специальная библиотека LiquidCrystal. Чтобы подключить библиотеку, запишем первой строчкой нашей программы следующее выражение:

Код: выделить все
#include <LiquidCrystal.h>


Далее, нам потребуется указать какие выводы Ардуино мы использовали для подключения дисплея. Эту информацию мы укажем при инициализации модуля:

Код: выделить все
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);


Здесь первые два аргумента — это выводы RS и EN, а оставшиеся четыре — линии шины данных DB4-DB7.

Далее, укажем размер дисплея с помощью команды «begin»:

Код: выделить все
lcd.begin(16, 2);


Напоминаю, в нашем дисплее имеется две строки, по 16 символов в каждой.

Наконец, для вывода текста нам понадобится простая функция «print». Вывод с помощью этой функции всем известной фразы будет выглядеть следующим образом:

Код: выделить все
lcd.print( "Hello, world!" );


Полностью программа будет выглядеть так:

Код: выделить все
#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

void setup(){
    lcd.begin(16, 2);
    lcd.print( "Hello, world!" );
}

void loop(){
}


Загружаем её на Ардуино Уно, и смотрим что творится на дисплее. Может быть три основных ситуации

1) На дисплее отобразится надпись «Hello, world!». Значит вы все правильно подключили, и контраст каким-то чудесным образом оказался изначально правильно настроен. Радуемся, и переходим к следующей главе.

2) На дисплее отобразится целый ряд черных прямоугольников — требуется настройка контраста! Именно для этого мы добавили в цепь потенциометр с ручкой. Крутим его от одного края, до другого, до момента пока на дисплее не появится четкая надпись.

3) Два ряда черных прямоугольников. Скорее всего, вы что-то напутали при подключении. Проверьте трижды все провода. Если не найдете ошибку — попросите кота проверить!
3. Программируем часы

Теперь когда дисплей точно работает, попробуем превратить наше нехитрое устройство в настоящие электронные часы.

Внимание! Для вывода времени нам потребуется библиотека «Time» http://www.pjrc.com/teensy/td_libs_Time.html. Если она еще не установлена, то можно скачать архив по ссылке. Подключим ее:

Код: выделить все
#include <Time.h>


Затем установим текущие дату и время с помощью функции «setTime»:
Код: выделить все
setTime( 23, 59, 59, 12, 31, 2015 );


Здесь все понятно: часы, минуты, секунды, месяц, число, год.

Для вывода даты используем кучу функции:
year() — вернет нам год;
month() — месяц;
day() - день;
hour() - час;
minute() — вернет минуту;
second() - секунду.

Теперь обратим внимание вот на какой факт. Если посчитать количество символов в типовой записи даты: «31.12.2015 23:59:59″, получим 19. А у нас всего 16! Не влазит, однако, в одну строчку.

Решить проблему можно еще одной полезной функцией — «setCursor». Эта функция устанавливает курсор в нужную позицию. Например:

Код: выделить все
lcd.setCursor(0,1);


Установит курсор в начало второй строчки. Курсор — это место символа, с которого начнется вывод текста следующей командой «print». Воспользуемся этой функцией для вывода даты в первой строчке, а времени во второй.

С выводом даты и времени теперь все ясно. Остались рутинные вещи. Например, после каждого заполнения дисплея, мы будем его чистить функцией «clear()»:
Код: выделить все
lcd.clear();


А еще нам нет смысла выводить данные на дисплей чаще чем раз в секунду, поэтому между двумя итерациями сделаем паузу в 1000 миллисекунд.

Итак, сложив все вместе, получим такую программу:

Код: выделить все
#include <Time.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

void setup(){
    lcd.begin(16, 2);
    setTime(7,0,0,1,10,2015); // 7 утра, десятого января 2015 года
}

void loop(){
    lcd.clear();
    lcd.print( day() );
    lcd.print( "." );
    lcd.print( month() );
    lcd.print( "." );
    lcd.print( year() );

    lcd.setCursor(0, 1);
    lcd.print( hour() );
    lcd.print( ":" );
    lcd.print( minute() );
    lcd.print( ":" );
    lcd.print( second() );

    delay(1000);
}


Загружаем скетч на Ардуино Уно, и наблюдаем за ходом часиков! Для того чтобы закрепить полученные знания, рекомендую прокачать наши часы до полноценного будильника. Всего-то на всего потребуется добавить пару кнопок и зуммер
admin
Администратор
 
Сообщений: 56
Зарегистрирован: 27 ноя 2016, 18:21
ТегиАрдуино: вывод текста на ЖК дисплей 1602

Ардуино вывод текста на ЖК дисплей 1602

Сообщение Brainurilk » 30 мар 2017, 07:40

Добрый день
Есть таблица, состоящая из одного столбца. Например:

Столбец1
txt1
txt2
...
txtN

В PDF-формуляре необходимо представить записи данной таблицы в виде текста, т.е.:
txt1 txt2 ... txtN.

Подскажите, пожалуйста, как это можно реализовать именно в самом PDF-формуляре?

Заранее благодарна

.
Brainurilk
 
Сообщений: 1
Зарегистрирован: 22 мар 2017, 12:58
Откуда: Cook Islands


Вернуться в Для новичков. Азы.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
/