Андрей Смирнов
Время чтения: ~21 мин.
Просмотров: 264

Разрабатываем крутой gui на esp8266 с библиотекой ugfx

Емкостной сенсорный экран

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

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

Взаимодействие с емкостным экраном должно осуществляться только проводящим предметом, голым пальцем или специальным стилусом, который обладает электрической емкостью. Количество нажатий до выхода сенсорных элементов из строя достигает более 200 млн раз.

Преимущества

Из плюсов емкостных экранов выделим, что даже на ярком солнце видимость остается достаточно хорошей, чего нельзя сказать о резистивном экране, т. к. он отражает много окружающего света. Преимуществом также стала возможность быстрого и точного распознавания касания без использования дополнительных аксессуаров. Несомненным достоинством экранов этого типа является более длительное время службы сенсора, по сравнению с предыдущим типом. Также появился «многопальцевый» интерфейс или мультитач, хотя далеко не во всех устройствах с экраном такого типа он реализован в полной мере.

Недостатки

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

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

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

Step 3: Libraries

Add the libraries:

Click on the links and download the libraries.

Unzip the file and paste it into the libraries folder of the Arduino IDE.

C: / Program Files (x86) / Arduino / libraries

Note

Before we start our program, we need to address something important: the TOUCH calibration.

Using a simple program to get the touch points on the display, store the value of the points (x, y) at each end (highlighted in yellow in the figure below). These values are important for mapping the touch to the graphic points on the screen.

#include <TouchScreen.h>//Portas de leitura das coordenadas do touchvoid
#define YP A1 // Y+ is on Analog1
#define XM A2 // X- is on Analog2
#define YM 7 // Y- is on Digital7
#define XP 6 // X+ is on Digital6
//objeto para manipulacao dos eventos de toque na tela
TouchScreen ts = TouchScreen(XP, YP, XM, YM);

void setup() {
Serial.begin(9600);
}

void loop() {
TSPoint touchPoint = ts.getPoint();//pega o touch
(x,y,z=pressao)
Serial.print(«X: «); Serial.println(touchPoint.x);
Serial.print(«Y: «); Serial.println(touchPoint.y);
delay(1000);
}

Подключение сенсорной кнопки к Ардуино

Для использования сенсорной кнопки, как, впрочем, и всех остальных модулей и датчиков, её необходимо подключить к какой-либо плате arduino. В большинстве случаев используются стандартные модули с тремя контактами: питание, сигнал и земля. Их расположения от модели к модели меняются,  на схеме они отображены согласно недавнему перечислению (сенсорная кнопка заменена переключателем по причине её отсутствии в Tincercad):

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

Сенсорный модуль, по своей сути аналогичен цифровой кнопке. Пока кнопка нажата, датчик отдаёт логическую единицу, а если нет, то логический ноль.

Step 2: The Menu

Here’s a quick overview of the menu:Main Menu (1st image)
   From here you can choose between the «TV» menu, the «Settings» menu or toggle the power of my two wall outlets. The network toggle is just to prevent errors when the netduino powers on. Plus it keeps my friends from messing with my room.TV Menu (2nd image)
   One of the initial reasons for this touch screen was to power on/off my TV when leaving and entering the room, i plan on placing the screen above my light switch so when I am rushing to leave i don’t have to search for the remote.Options menu (3rd image)
   Why not toss on a quick paint application and background changer? While learning the touch screen i had a little fun, figured it would be a waste to leave them behind.Memo  (4th image)
   Simple paint like drawing.Background (5th/6th/7th image)
   Drag to choose color, after you change the color the buttons become the opposite (in hex value) to keep visibility.

Step 7: Defines

We will define some macros for the pins, and also the important values that we will use.

//Portas de leitura das coordenadas do touch#define YP A1 // Y+
#define XM A2 // X-
#define YM 7 // Y-
#define XP 6 // X+
//valores encontrados através da calibração do touch
//faça um código simples para imprimir os valores (x,y) a cada toque
//então encontre os valores nas extremidades max/min (x,y)
#define TS_MINX 130
#define TS_MINY 80
#define TS_MAXX 900
#define TS_MAXY 900
//tamanho dos textos
#define TEXT_SIZE_L 3
#define TEXT_SIZE_M 2
#define TEXT_SIZE_S 1
//posicionamento dos textos de feedback
#define FEEDBACK_LABEL_X 10
#define FEEDBACK_LABEL_Y 200
#define FEEDBACK_TOUCH_X 120
#define FEEDBACK_TOUCH_Y 200
//valores para detectar a pressão do toque
#define MINPRESSURE 10
#define MAXPRESSURE 1000

We continue with the definition of some macros.

//Associa o nome das cores aos valores correspondentes#define BLACK 0x0000
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

//dados de criação do circulo
const int circle_radius = 30;
const int circle_x = 240;
const int circle_y = 125;

//objeto para manipulacao dos eventos de toque na tela
TouchScreen ts = TouchScreen(XP, YP, XM, YM);
//objeto para manipulacao da parte grafica
SWTFT tft;

Шаг 4. Скетч (код проекта)

Теперь переходим к нашему скетчу. Скачайте файл .ino для нашего проекта дверного замка на Arduino Mega:

В самом начале импортируйте все библиотеки, которые необходимы — они перечислены в первой части нашего скетча:

#include <Adafruit_GFX.h>
#include <TouchScreen.h>
#include <Adafruit_TFTLCD.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <Password.h>

Почти все библиотеки для Ардуино вы можете найти на нашем сайте в разделе Библиотеки. Также если вам нужны схемы распиновок различных плат — вы можете найти их в разделе Распиновка.

При первом запуске сенсорного экрана TFT используйте эскиз «TouchScreen_Calibr_native» в библиотеке «MCUFIREND», чтобы получить результаты, которые нужно заполнить в нашем скетче в этом месте:

// скопируйте и вставьте результаты TouchScreen_Calibr_native.ino
const int XP=8,XM=A2,YP=A3,YM=9; //240x320 ID=0x9341

const int TS_LEFT=927,TS_RT=126,TS_TOP=70,TS_BOT=910;

Опять же, мы уверены, что этот скетч в целом можно улучшить, но он сработал в нашем случае. Всё в ваших руках. Тестируем наш проект до того, как мы поставим все детали по месту.

Сенсорная кнопка

Ни для кого не секрет, что прогресс не стоит на месте. Постоянно появляются новые технологии, совершенствуются старые. Сенсорные экраны появились совсем недавно (по меркам человечества), но уже прочно вошли в нашу повседневную жизнь. Телефоны, телевизоры, терминалы и прочие в большинстве своём используют «беcкнопочные» технологии. В кавычках это слово по той причине, что они всё-таки используют кнопки, только сенсорные. О них в данной статье как раз и пойдёт речь, а если точнее, о Touch module для Arduino.

Принцип работы сенсорных кнопок

Модули с сенсорными кнопками в большинстве своём используют проекционно-ёмкостные сенсорные экраны (https://ru.wikipedia.org/wiki/Сенсорный_экран)

Если не вдаваться в пространственные объяснения их работы, для регистрации нажатия используется вычисление изменения ёмкости конденсатора (электрической цепи), при этом важной особенностью является возможность выставлять различную начальную ёмкость, в чём мы убедимся далее

Сенсорные или механические кнопки

+     Сенсорная кнопка «ощущает» нажатие даже через небольшой слой неметаллического материала, что обеспечивает разнообразие в использовании её во всевозможных проектах.

+     Из предыдущего пункта вытекает и этот – возможность использовать сенсорную кнопку внутри корпуса повышает привлекательность проекта, что не влияет на функционал, но достаточно важно в повседневной жизни, чтобы не обращать на это внимание. +     Стабильное функционирование, которое выражается отсутствием подвижных частей и частой калибровкой (о чём будет сказано ниже). Вам не придется беспокоиться о дребезге кнопок, возникающем при использовании механического собрата, что существенно облегчит жизнь начинающему ардуинщику

Поэтому ещё один плюс, пусть и не для всех – простота при работе

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

+     Стабильное функционирование, которое выражается отсутствием подвижных частей и частой калибровкой (о чём будет сказано ниже). Вам не придется беспокоиться о дребезге кнопок, возникающем при использовании механического собрата, что существенно облегчит жизнь начинающему ардуинщику. Поэтому ещё один плюс, пусть и не для всех – простота при работе.

Из минусов можно отметить следущее:

  • Сенсорные кнопки плохо работают при минусовых температурах, поэтому они непригодны для использования за пределами помещений.
  • Высокое потребление электричества, вызванное необходимостью постоянно поддерживать одинаковую ёмкость.
  • Сенсорная кнопка не работает при нажатии её рукой в перчатке либо плохо проводящим электричество объектом

Step 14: Check If We Touch the Triangle

The same check of that of the point also occurs within the triangle.

// Função que verifica se o ponto p esta dentro do triangulo ABC// Se estiver dentro retorna TRUE senão retorna FALSE
bool pointInsideTriangle(TSPoint a, TSPoint b, TSPoint c, TSPoint p){
float ABC = triangleArea(a, b, c);
float ACP = triangleArea(a, c, p);
float ABP = triangleArea(a, b, p);
float CPB = triangleArea(c, p, b);

if(ABC == ACP+ABP+CPB){
return true;
}
return false;
}

// Função que calcula a area de um triangulo com base nos pontos x,y
float triangleArea(TSPoint a, TSPoint b, TSPoint c){
return fabs(((b.x — a.x)*(c.y — a.y) — (c.x — a.x) * (b.y — a.y))/2);
}

Шаг 3. Сборка электроники

Для создания прототипа этого проекта для стендового тестирования сначала начните с 2,8-дюймового сенсорного TFT-дисплея. Выстраиваете контакты в линию и вставляете в разъем Arduino Mega, подключаете его к ноутбуку и запускаете программное обеспечение Arduino IDE для интегрированной среды разработки.

Потребовалось немного усилий, чтобы понять, как откалибровать размер экрана, чувствительность и т.д. Кроме того, TFT не является сенсорным экраном Adafruit, поэтому пришлось добавить дополнительные библиотеки, такие как MCUFRIEND_kbv, для калибровки экрана и т.п. Также понадобилось изучить как получить набор цифр (клавиатуру) на 2,8″  TFT сенсорном экране, чтобы сообщать о значениях через последовательный монитор, добавить элемент пароля в скетч ив конце концов код реле сам по себе.

Заняло некоторое время, чтобы припаять и сделать проводку от реле к Меге — см. схему выше. Мы использовали цифровой вывод 39 на Arduino Mega, чтобы активировать полупроводниковое реле, а затем включить/выключить светодиод (который потом будет заменен на кнопку выхода магнитного замка при сборке).

Получение данных местоположения от GPS модуля

Ublox Neo 6M представляет собой последовательный GPS модуль, который передает детали местоположения через последовательный порт. Он имеет 4 контакта, назначение которых представлено в следующей таблице.

Контакт Описание
Vcc 2.7 – 5V питающее напряжение
Gnd земля
TXD передача данных
RXD прием данных

Его внешний вид представлен на следующем рисунке.

GPS модуль Ublox neo 6M является TTL совместимым и его спецификация представлена в следующей таблице.

Время захвата холодный старт — 27 сек., горячий старт — 1 сек.
Протокол связи NMEA
Последовательная связь 9600 бод/с , 8 бит данных , 1 стоповый бит , нет контроля четности и управления потоком
Потребляемый ток 45 мА

GPS модуль будет передавать данные в виде последовательности строк на скорости 9600 бод/с. Если мы будем использовать последовательный терминал (UART) на скорости 9600 бод/с мы сможем принимать данные от GPS модуля.

GPS модуль передает данные местоположения в реальном времени в NMEA формате. NMEA формат состоит из нескольких предложений (частей), четыре из которых представлены ниже. Более подробно данный формат можно изучить в соответствующей литературе – информации о нем в сети достаточно много.

• $GPGGA: фиксированные данные глобального позиционирования;• $GPGSV: спутники GPS в зоне видимости; • $GPGSA: GPS DOP и активные спутники;• $GPRMC: минимум специфических данных GPS/транзитных данных.

Пример данных, передаваемых GPS модулем на скорости 9600 бод/с, выглядит следующим образом:

Когда мы используем GPS модуль для определения местоположения нам из всего этого набора данных будут нужны только координаты, поэтому из представленных данных нам будет нужна только строка $GPGGA, в которой содержатся фиксированные данные системы глобального позиционирования (Global Positioning System Fix Data):

Расшифровка данной строки (данных глобального позиционирования):

  1. Строка всегда начинается со знака “$”.
  2. Аббревиатура GPGGA означает фиксированные данные системы глобального позиционирования.
  3. “,” означает разделение между двумя значениями.
  4. 141848.00: всемирное время по Гринвичу 14(hr):18(min):48(sec):00(ms).
  5. 2237.63306,N: Широта (Latitude) 22(градуса) 37(минут) 63306(секунд) North (Север).
  6. 08820.86316,E: Долгота (Longitude) 088(градуса) 20(минут) 86316(секунд) East (Восток).
  7. 1 : Fix Quantity (Фиксированное количество) 0= неправильные данные, 1= достоверные данные, 2=DGPS fix.
  8. 03 : число спутников, которые мы в данный момент видим.
  9. 1.0: HDOP.
  10. 2.56,M : высота над уровнем моря (в метрах).
  11. 1.9,M : Geoids height (геоидная высота).
  12. *74 : контрольная сумма.

То есть, фактически, нам будут необходимы только п.5 и п.6 из представленных данных чтобы получить информацию о местоположении модуля. В этом проекте мы будем использовать GPS библиотеку, в которой есть функции для извлечения широты и долготы из данных GPS модуля, поэтому нам не придется программировать это вручную.

Принцип работы проекционно-емкостных сенсорных экранов

На внутренней стороне экрана нанесена сетка электродов. Электрод вместе с телом человека образует конденсатор; электроника измеряет ёмкость этого конденсатора (подаёт импульс тока и измеряет напряжение).

Принцип действия проекционно-ёмкостного сенсорного экрана

Прозрачность таких экранов до 90 %, температурный диапазон чрезвычайно широк. Очень долговечны (узкое место — сложная электроника, обрабатывающая нажатия). На ПЁЭ может применяться стекло толщиной вплоть до 18 мм, что приводит к крайней вандалоустойчивости. На непроводящие загрязнения не реагируют, проводящие легко подавляются программными методами. Поэтому проекционно-ёмкостные сенсорные экраны применяются в автоматах, устанавливаемых на улице. Многие модели реагируют на руку в перчатке. В современных моделях конструкторы добились очень высокой точности — правда, вандалоустойчивые исполнения менее точны.

ПЁЭ реагируют даже на приближение руки — порог срабатывания устанавливается программно. Отличают нажатие рукой от нажатия проводящим пером. В некоторых моделях поддерживается мультитач. Поэтому такая технология применяется в тачпадах и мультитач-экранах.

Стоит заметить, что из-за различий в терминологии часто путают поверхностно- и проекционно-ёмкостные экраны. По классификации, применённой в данной статье, экран iPhone является проекционно-ёмкостным.

Проекты с использованием сенсорной кнопки

Начнём с простого: при нажатии на кнопку загорается встроенный светодиод.


const int buttonPin = 7; // Выставляем значения порта, подсоединённого с сигнал-портом кнопки

void setup() {

pinMode(LED_BUILTIN, OUTPUT); // Команда для адекватного реагирования светодиода

pinMode(buttonPin, INPUT); // Открываем порт для считывания

}


void loop() {

buttonState = digitalRead(buttonPin); // Считываем статус кнопки (нажата / не нажата)

if (digitalRead(buttonPin)) { // Если кнопка нажата...

digitalWrite(LED_BUILTIN, HIGH); // Подаём напряжение на LED_BUILTIN - значение для встроенного светодиода

} else { // Иначе...

digitalWrite(LED_BUILTIN, LOW); // Не подаём напряжение

}

}

Теперь усложним задачу: Нажатием на кнопку изменяется режим работы светодиода.

const int buttonPin = 7; // Выставляем значения порта, подсоединённого с сигнал-портом кнопки

int count = 0; // Переменная, предназначенная для выбора режима работы


void setup() {

pinMode(LED_BUILTIN, OUTPUT); // Команда для адекватного реагирования светодиода

pinMode(buttonPin, INPUT); // Открываем порт для считывания

}

void loop() {

if(digitalRead(buttonPin)){ // При нажатии кнопки...

count = count + 1; // Изменяем режим кнопки

if(count > 2){ //В случае превышения значения count начинаем отсчет сначала

count = 0;

}

while(digitalRead(buttonPin)){ // Пустой цикл для ожидания, пока пользователь отпустит кнопку

}

}

if(count == 0) { // 3 режима по переключению кнопки:

digitalWrite(LED_BUILTIN, LOW); // 1: Выключенный светодиод

} else if(count == 1) {

digitalWrite(LED_BUILTIN, HIGH); // 2: Включенный

} else {

digitalWrite(LED_BUILTIN, HIGH); // 3: Мигающий

delay(100);

digitalWrite(LED_BUILTIN, LOW);

delay(100);

}

}

Разновидности нагревательного кабеля

Все нагревательные системы подразделяются на 2 большие категории: резистивные и саморегулируемые. Каждый вид имеет свою область применения. Предположим, резистивные хороши для обогрева коротких отрезков труб небольшого сечения – до 40 мм, а для протяженных участков водопровода лучше использовать саморегулируемый (по-другому – саморегулирующийся, «самрег») кабель.

Тип #1 – резистивный

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

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

При монтаже системы необходимо помнить, что одножильный кабель подключается с обоих концов, как на следующей схеме:

Схематически подключение одножильного вида напоминает петлю: сначала он подсоединяется к источнику энергии, потом протягивается (наматывается) по всей длине трубы и возвращается назад

Замкнутые отопительные контуры чаще применяют для обогрева кровельной водосточной системы или для устройства «теплого пола», но вариант, применимый к водопроводу, тоже существует.

Особенностью монтажа одножильного кабеля на водопроводную трубу является укладка его с двух сторон. При этом используется только внешний тип подключения

Для внутреннего монтажа одна жила не подходит, так как укладка «петли» займет много внутреннего пространства, к тому же случайное пересечение проводов чревато перегревом.

Двухжильный кабель отличается разделением функций жил: одна отвечает за нагревание, вторая – за подачу энергии.

Отличается и схема подключения. В «петлеобразном» монтаже необходимость отпадает: в результате кабель присоединяется одним концом к источнику питания, второй протягивается вдоль трубы

Двухжильные резистивные кабели используются для водопроводных систем так же активно, как и самреги. Их можно монтировать внутрь труб, используя тройники и уплотнители.

Главный плюс резистивного кабеля – невысокая стоимость. Многие отмечают надежность, длительный срок службы (до 10-15 лет), простоту монтажа. Но есть и недостатки:

  • высокая вероятность перегрева в местах пересечения или близкого расположения двух кабелей;
  • фиксированная длина – нельзя ни увеличивать, ни укорачивать;
  • невозможность замены перегоревшего участка – менять придется полностью;
  • невозможность регулировки мощности – она всегда одинаковая по всей длине.

Чтобы не тратиться на постоянное подключение кабеля (что нецелесообразно), устанавливают термостат с датчиками. Как только температура опускается до + 2-3 ºС, он в автоматическом режиме запускает нагрев, при повышении температуры до + 6-7 ºС энергия отключается.

Тип #2 – саморегулируемый

Этот тип кабеля является универсальным и может использоваться для различного применения: обогрева кровельных элементов и систем подачи воды, канализационных магистралей и емкостей с жидкостью. Его особенность – самостоятельная регулировка мощности и интенсивности подачи тепла. Как только температура опускается ниже контрольной точки (предположим, + 3 ºС), кабель начинает нагреваться без постороннего участия.

Схема саморегулирующего кабеля. Главное отличие от резистивного аналога – проводящая нагревательная матрица, которая отвечает за регулировку температуры нагревания. Изоляционные слои не отличаются

В основе принципа работы самрега лежит свойство проводника уменьшать/увеличивать силу тока в зависимости от сопротивления. При увеличении сопротивления сила тока уменьшается, что ведет за собой и уменьшение мощности. Что происходит с кабелем в момент охлаждения? Сопротивление падает – сила тока увеличивается – начинается процесс нагревания.

Преимущество саморегулируемых моделей состоит в «зональности» работы. Кабель сам распределяет свою «рабочую силу»: тщательно прогревает остывающие участки и поддерживает оптимальную температуру там, где сильный нагрев не нужен.

Саморегулирующий кабель работает постоянно, и это приветствуется в холодное время года. Однако во время оттепели или весной, когда прекращаются заморозки, держать его включенным нерационально

Чтобы полностью автоматизировать процесс включения/выключения кабеля, можно оборудовать систему термостатом, который «привязан» к уличной температуре.

Процесс сборки

Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.

Исходные соединения для светодиодного экрана и Arduino

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

  • Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
  • Затем подключите вывод 16 на устройстве к выходу GND.

Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.

  • Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
  • Затем вам нужно настроить потенциометр регулировки контрастности.

Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.

Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми. Посмотрите картинку ниже, чтобы узнать, о чем я говорю. Если монитор отображает то, что показано на фотографии ниже, это означает, что ваш экран настроен правильно! Если вы не смогли этого достичь, проверьте свои соединения и потенциометр.

Регулировка контрастности на устройстве

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

Конечные соединения между Arduino, потенциометром и устройством

Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino. Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino. Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).

Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.

Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.

Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.

Паяные 16-контактные разъемы

Резистивный сенсорный экран

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

Бывают четырех-, восьми-, пяти-, шести- или семиэлектродные экраны. Самыми простыми в изготовлении, следовательно, и самыми дешевыми, являются четырехэлектродные. Они выдерживают всего 3 миллиона нажатий в одну точку. Пятипроводные уже будут значительно надежнее – до 35 миллионов нажатий, в них четыре электрода расположены на панели, а пятый находится на мембране, которая покрыта токопроводящим составом. Стоит отметить, что пятипроводные и последующие версии шести- и семипроводные экраны продолжают работать даже при повреждении части мембраны.

Преимущества

К достоинствам резистивного экрана можно отнести невысокую стоимость его производства, а, следовательно, и устройства, в котором он используется. Кроме этого, стоит отметить, что отзыв сенсора здесь не зависит от состояния поверхности экрана, даже в случае загрязнения, тачскрин остается таким же чувствительным. Следует также выделить точность попадания в нужную точку, т.к. используется густая решетка резистивных элементов.

Недостатки

В качестве недостатков резистивных экранов выделим низкое светопропускание, не более 70% или 85%, поэтому требуется повышенная яркость подсветки. Также это низкая чувствительность, т.е. просто прикасаться пальцем не достаточно, требуется надавливание, так что без цифрового пера или длинных ногтей не обойтись. Данный тип в большинстве случаев не поддерживает мультитач, т. е. экран понимает лишь одно касание. При взаимодействии с экраном нужно прилагать определенные усилия, чтобы передать какую-либо команду, а переусердствовав можно не только поцарапать, но и повредить дисплей. Как уже было сказано выше, для правильного функционирования периодически необходимо производить калибровку экрана.


 

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации