реклама:

Подключение LCD дисплея. Часть 7.

Можно немного отдохнуть

Вы уже подключили Arduino и он выполнил вашу первую команду. Теперь, если вы этого еще не успели сделать, необходимо заказать все необходимые детали, которые были описаны выше.

Дальше, шаг за шагом, нам предстоит кропотливый труд – мы будем подключать к нашему Arduino все больше и больше модулей, пока он не превратиться в наш контроллер. После добавления каждого нового устройства будет даваться пример с описанием, который необходимо открыть и загрузить в вашу плату. Выполнение этого примера поможет вам понять, правильно ли вы сделали подключение. Если нет – то ошибка будет крыться в перепутанных проводах и контактах платы или устройства. Других ошибок просто не может быть. Если пример выполнился успешно, согласно описанию, то можно переходить к подключению следующего устройства.

Подключение LCD дисплея

Начнем с самого сложного – это дисплей. Не имеет значения какого размера дисплейчик вы себе взяли 16х02 или 20х04 – подключаются они одинаково, а контроллер поддерживает оба дисплея. Для подключения нам понадобится 12 проводов.

Если вы осилите подключение этих 12 проводов – то радости вашей не будет предела, а все остальные подключения окажуться сущим пустяком! Будьте предельно внимательны.

Если смотреть на дисплей «нормально» то его выводы будут сверху, нумерация слева на право от 1 до 16.

LCD дисплей для Arduino 1602

Вот таблица соответсвия контактов дисплея и платы arduino:

Контакты LCD дисплея Контакты Arduino
1GND (земля)
25V
3GND
439
5GND
641
7нет
8нет
9нет
10нет
1143
1245
1347
1449
153, яркость
16GND

Вот схема подключения дисплея:

Подключение LCD дисплея для Arduino 1602

Еще одной загвоздкой является то, что плата дисплея содержит в себе «отверстия» вместо обычных штырьков, что не дает возможности его подключить с помощью стандартных проводов Arduino. Что делать, если вы не умеете паять? Мой вам совет: купите маломощный паяльник на 30Вт, и научитесь. Это вам ой как пригодится. В YouTube есть куча роликов, поверьте, это не так сложно. Ну или попросить кого-то припаять 12 проводов к дисплею, а лучше вот такую вот гребенку (продается в тех же магазинах где и платы arduino).

Arduino контакты

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

Подключение LCD дисплея Подключение LCD дисплея

Нажмите на фото для увеличения

Теперь для проверки корректности подключения всех проводов предлагаю загрузить вот такой пример. Если все подключено правильно, то на «дисплее» появится надпись «House4u sol.proj» и циклически будет меняться яркость дисплея от нуля до 100%

Запускаете программу Arduino и у вас появится чистое окно. Этот пример надо полностью скопировать в это окно и нажать кнопку загрузить.

Запуск первой программы

Скопируйте пример в чистое окно Arduino и нажмите кнопку загрузить:

// include the library code:
#include <LiquidCrystal.h>

// LCD пин управления яркостью
#define PWM_LED_PIN 3 
// LCD другие пины
#define PIN_LCD_RS 39
#define PIN_LCD_EN 41
#define PIN_LCD_D4 43
#define PIN_LCD_D5 45
#define PIN_LCD_D6 47
#define PIN_LCD_D7 49
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7 );

void setup() {   
  lcd.begin(16, 2); //настройка дисплея - 16x02
  lcd.print("House4u sol.proj"); //выводим приветсвие  
}

int i = 0;
void loop() 
{  
  lcd.setCursor(0, 1); //перевод курсора на 2 строку   
  analogWrite( PWM_LED_PIN, i );
  lcd.print("Bright: ");  
  float Br = ( i / 255.0 ) * 100;
  lcd.print( Br, 0);
  lcd.print("%   ");
  
  i = (i + 15) % 256;
 
  delay( 1000 ); //задержка 1 секунда
}

Если вы все сделали верно, то увидте что-то похоже на это:

LCD Arduino

UPDATE 05.04.2015:

Если вас устраивает изображение на дисплее – то можно не заморачиваться, а просто прочитать страницу до конца, в целях ознакомления. Если же ваше изображение не слишком хорошее, то читайте внимательно…

Спустя некоторое время оказалось, что подключение дисплея надо улучшить! Дело в том, что мы 3-й контакт дисплея подключили напрямую к GND, это значит, что дисплей будет работать с максимальной контрастностью! Для некоторых дисплеев это нормально, а некоторые показывают настолько контрастное изображение, что практически ничего и не видно. Я подключал свои первые два дисплея с максимальной контрастностью, и все было нормально. Но при сборке готовых контроллеров под заказ, оказалось, что на новых дисплеях, на таком уровне контрастности очень трудно что-либо разглядеть.

В связи с этим пришлось добавить в прошивку функцию регулирования контрастности. Для этого я использовал 4-й выход платы Arduino. Но если напрямую подключить 3-й контакт дисплея с 4-м выходом arduino, и загрузить новый тестовый пример, то вы увидите, что изображение слишком сильно мерцает. Для решения проблемы нам понадобится резистор 1К и конденсатор 100мФ (100 микро фарад). Доработка подключения выглядит примерно так:

Подключение LCD Arduino. Управление контрастностью

Что мы сделали? Мы впаяли между первым и третьим выводом дисплея конденсатор 100мФ на 16 или 25В. Все равно вы (или кто-то) будете припаивать штырьки к дисплею, поэтому сразу припаяйте и конденсатор. При этом соблюдайте полярность. 1-й контакт дисплея – это минус GND конденсатора, а 3-й контакт дисплея будет «+» И надо разрезать провод, который будет идти от 3-го контакта дисплея к 4-му выходу Arduino, и впаять в него резистор 1К. Все, после этого мы сможем регулировать контрастность дисплея нашим контроллером.

Для проверки правильности подключения выполните следующий пример:


// include the library code:
#include <LiquidCrystal.h>

// LCD пин управления яркостью
#define PWM_LED_PIN 3 
// LCD пин управления контрастом
#define PWM_LED_CONTRAST 4 
// LCD другие пины
#define PIN_LCD_RS 39
#define PIN_LCD_EN 41
#define PIN_LCD_D4 43
#define PIN_LCD_D5 45
#define PIN_LCD_D6 47
#define PIN_LCD_D7 49
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7 );

void setup() {   
  lcd.begin(16, 2); //настройка дисплея - 16x02
  lcd.print("House4u sol.proj"); //выводим приветсвие  
  analogWrite( PWM_LED_PIN, 255 );  
}

int i = 0;
void loop() 
{  
  lcd.setCursor(0, 1); //перевод курсора на 2 строку   
  analogWrite( PWM_LED_CONTRAST, i );
  lcd.print("Contrast: ");  
  float Br = ( i / 100.0 ) * 100;
  lcd.print( Br, 0);
  lcd.print("%   ");
  
  i = (i + 2) % 100;
 
  delay( 500 );
}


<< НазадДальше >>


Поделиться с друзьями:

Поддержка проекта