По работе необходимо было изготовить небольшой стенд для проверки электроуправляемых пневматических редукторов. Выгребаем всё подходящее из стола и поехали. Мозгом данной конструкции станет приобретённая несколько лет назад с DX Arduino 1280, а лицом- купленный недавно дисплей от нокии 5110.
Дисплей я купил в магазине fasttech "на сдачу", в довесок к аккумуляторам, повербанку и куче ещё полезных мелочей. Это был мой первый заказ у них, и я остался очень доволен магазином и полученными покупками.
Итак, что же нужно от устройства, которое сегодня сделаю, и зачем на нём экран. Ардуино будет работать двухканальным вольметром. Изначально он должен был ещё выдавать управляющее напряжение, но никакого ЦАП под рукой не оказалось, а сделанный интегратор ШИМ сигнала из конденсатора и резистора оказался явно недостаточен для этих целей. Так что два аналоговых входа, на дисплей выводим напряжения по этим линиям, пересчитываем его в давление, и выводим разность давлений. Напряжение же задаём с помощью простого переменного резистора.
В данном случае экран очень сильно повысил удобство пользование стендом, отсутствие необходимости таскать за собой компьютер с консолью.
Распиновка с указанным на сайте совпадает:
Внешний вид- не очень. Отличия в маркировках и компонентах, расположенных выше экрана. На работоспособность не влияет. Гребёнку на контакты напаял уже я, мне так удобнее.
Для быстрого написания "интерфейса" воспользуемся
библиотекой от Adafruit. В документации сказано как переназначить соответствие выводов экрана выводам ардуины. Подключить можно, похоже, совершенно произвольным образом, главное указать правильное соответствие. Это очень удобно. Но не удобно то что библиотека не работает с кириллической информацией. Для меня это, правда, мелочь. Комплектом к библиотеке идёт так же набор примеров, показывающих все возможности экрана и самой библиотеки- работа с линиями, с графическими объектами, анимация. Попробуйте, рекомендую -)
Вся программа для ардуино состоит из простых строчек, практически все из которых относятся к экрану:
/*********************************************************************
This is an example sketch for our Monochrome Nokia 5110 LCD Displays
Pick one up today in the adafruit shop!
------>
http://www.adafruit.com/products/338 These displays use SPI to communicate, 4 or 5 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, check license.txt for more information
All text above, and the splash screen must be included in any redistribution
*********************************************************************/
#include Adafruit_GFX.h
#include Adafruit_PCD8544.h
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(52, 49, 48, 51, 50);
int PressureOut, PressureSet;
int PressureSet_Pin = 0;
int PressureRead_Pin = 1;
void setup()
{
Serial.begin(9600);
display.begin();
// init done
// you can change the contrast around to adapt the display
// for the best viewing!
display.setContrast(50);
}
void loop()
{
PressureSet = analogRead(PressureSet_Pin);
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Set pressure");
display.setCursor(0,10);
display.println(PressureSet * (5.0 / 1023.0));
display.setCursor(25,10);
display.println("V");
display.setCursor(35,10);
display.println(map(PressureSet, 0, 1023, 0, 20));
display.setCursor(50,10);
display.println("Bar");
PressureOut = analogRead(PressureRead_Pin);
display.setCursor(0,30);
display.println("Out pressure");
display.setCursor(0,40);
display.println(PressureOut * (5.0 / 1023.0));
display.setCursor(25,40);
display.println("V");
display.setCursor(35,40);
display.println(map(PressureOut, 0, 1023, 0, 20));
display.setCursor(50,40);
display.println("Bar");
display.setCursor(0,20);
display.setTextSize(1);
display.println("Error B:");
display.setCursor(47,20);
display.println(((PressureOut - PressureSet) * (5.0 / 1023.0))*4);
display.display();
delay(10);
display.clearDisplay();
}
И получаем вот такой удобный инструмент:
Итого. Экран отличный, и очень удобный в подключении. Благодаря библиотекам работать с ним очень просто. Вывод на экран в подобных самоделках гораздо удобнее постоянной записи в консоль. И стоит как бутылка пива -))