Arduino Uno + Nokia 5110 + HC-SR04

Автор: | 16.01.2016

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

Дисплей Nokia 5110

Дисплей Nokia 5110


Собственно первое, что надо сделать, это найти шнурок для подключения к компьютеру. В моём случае был Arduino Uno и шнурок USB A-B, как тот, которым принтеры подключают. Второе — надо скачать и установить Arduino IDE. Ну и дальше просто тыкать проводочки в ардуину и смотреть что будет :-) (на самом деле — не стоит).

Итак, мне пришёл ещё дисплей от Nokia 5110 на плате для подключения к Arduino. С дисплеем есть проблемы, и как я понял часто: 1) если загорается подсветка, но не отображается ничего на экране (ниже будет код и как подключить), то надо снять железное крепление (аккуратно, не сломав защёлки), протереть спиртом контактную площадку на дисплее и на плате, собрать всё как было, желательно проверив, хорошо ли прижимается дисплей к плате; 2) если подсветка не загорается и дисплей ничего не показывает, значит надо проверить всё ли правильно подключено (ну и если это так, то, видимо, дисплей мёртв); 3) проверить правильность написания кода (ниже будет), иногда не хватает одной строки, а в многочисленных мануалах про нюансы нет ни слова.
В общем к практике. Наличие монтажной платы сильно облегчает жизнь, так что берём плату, дисплей, светодиоды (обычно это первое, что подключают), у меня ещё был ультразвуковой дальномер, его тоже подключим. Правда, приехали ещё всякие детальки, но про них в следующий раз.

Arduino Uno

Arduino Uno

И, кстати, сразу советую зарегиться на сайте https://123d.circuits.io там можно накидать макет, написать код и проверить как это всё работает.

Начнём с самого простого — подключение и моргание диодами:

Макет с диодом

Макет с диодом


Собственно так будет выглядеть подключение.
Дальше запускаем Arduino IDE (скачав с сайта https://www.arduino.cc/en/Main/Software и установив предварительно) и пишем:

int led = 11;

void setup() {
pinMode(led, OUTPUT); // Инициализировать пин для работы
}

void loop() {
digitalWrite(led, HIGH); // Включить диод
delay(1000); // Подождать секунду
digitalWrite(led, LOW); // Выключить диод
delay(1000); // Подождать секунду
}

Код, который внутри loop будет выполняться постоянно. В общем-то и всё. Диодом моргаем.
Не знаю что делают обычно дальше, я решил, что надо подключить дисплей и что-нибудь на него вывести.

Подключение дисплея от Nokia 5110 к Arduino:

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

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


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

Ну или так:
Дисплей -> Arduino
RST -> D3
CE -> D4
DC -> D5
DIN -> D6
CLK -> D7
VCC -> 3.3V
LIGHT -> GND
GND -> GND

Дисплей Nokia 5110

Дисплей Nokia 5110

Теперь качаем два архива: https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library и https://github.com/adafruit/Adafruit-GFX-Library и распаковываем в папку «\Program Files (x86)\Arduino\libraries».

Должно получиться что-то такое:

Путь для библиотек

Путь для библиотек

Теперь можно в IDE выбрать «file -> examples -> Adafruit GFX library» и загрузить скетч. Ну и залить его в Arduino. После чего посмотреть на анимацию. А можно сделать так:

#include
#include

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup(){
display.begin();
display.clearDisplay();
}

void loop() {
display.setTextSize(2);
display.setContrast(60);
display.setTextColor(BLACK);
display.println("Hello");
display.display();
delay(1000);
display.clearDisplay();
}

И написать что хочется. И, кстати, тут тоже есть нюанс про который забывают на многих сайтах — display.setContrast(60); надо указывать обязательно. По крайней мере для этого дисплея.
Ну и для тех, кто может в английский — https://learn.adafruit.com/nokia-5110-3310-monochrome-lcd?view=all. Там много и подробно про работу библиотеки. И про то как рисовать всякое, а не только выводить текст.

Подключение ультразвукового дальномера HC-SR04

Дальномер HC-SR04

Дальномер HC-SR04

Характеристики ультразвукового дальномера HC-SR04:

  • Диапазон измерения: от 2 см до 400 см
  • Точность измерения: ± 1 см (при максимальной дальности ± 3 см)
  • Угол измерения: 15º
  • Ультразвуковой диапазон работы на частоте 40 кГц
  • Рабочее напряжение 4,8 В до 5,5 В (± 0.2В макс)
  • Диапазон рабочих температур: 0° С до 60° С (± 10%)

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

Подключается так:
Дальномер -> Arduino
Vcc -> 5V
GND -> GND
Trig -> D8
Echo -> D9

Качаем https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 и распаковываем как выше написано было для дисплея.

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


/*библиотеки для работы с дисплеем*/
#include
#include

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

/*библиотека для работы с дальномером*/
#include
Ultrasonic ultrasonic(8,9);

int bl_led = 10; /*диоды на 10 и 11 пинах*/
int red_led = 11; /*диоды на 10 и 11 пинах*/

void setup(){
display.begin();
display.clearDisplay();
pinMode(bl_led, OUTPUT);
pinMode(red_led, OUTPUT);
}

void loop() {
display.setTextSize(2);
display.setContrast(60);
display.setTextColor(BLACK);
display.print(ultrasonic.Ranging(CM));
if(ultrasonic.Ranging(CM)>10)
digitalWrite(bl_led, HIGH); /*если расстояние до препятствия больше 10см, горит синий диод*/
if(ultrasonic.Ranging(CM)<10) digitalWrite(red_led, HIGH); /*если расстояние до препятствия меньше 10см, горит красный диод*/ display.println(" cm"); display.display(); delay(1000); digitalWrite(bl_led, LOW); digitalWrite(red_led, LOW); display.clearDisplay(); }

Я тут игрался с диодами параллельно, так что для них тоже есть куски кода. Как подключить диоды было написано в самом начале, собрать всю схему тоже не проблема, главное не перепутать выводы на Arduino и контроллерах.

Вроде как-то так. И вроде всё, что хотел написать.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *