Читаем Цифровая электроника для начинающих полностью

После подключения, достаточно загрузить вышеприведенную программу в Arduino, открыть serial monitor в Arduino IDE, в появившемся окне можно будет наблюдать значения температуры.

Самостоятельная работа #1: оставить компьютер с подключенным датчиком на сутки. Построить график температуры, например с помощью Excel или https://plot.ly/create/.

Самостоятельная работа #2: добавить в код зажигание светодиода, если температура становится выше определенного предела. Вместо светодиода можно также подключить пьезодинамик, как описано в предыдущей главе. Данная система может быть основой для автоматического контроля температуры, например в теплице.

2.8 Подключаем OLED-экран

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

Обычный ЖК-экран может работать с Arduino, но для его подключения требуется задействовать слишком много выводов:

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

Мы будем использовать OLED-экран, имеющий 4 вывода для подключения - он показан на картинке слева. В продаже бывают и другие дисплеи, как на картинке справа - такой вариант не подойдет, при покупке важно не перепутать.

Само подключение при этом достаточно просто, для работы шины I2C требуется всего 4 провода - 2 линии данных, “земля” и “питание”. Также как и с 1Wire, на одной шине может быть подключено несколько разных устройств.

Само подключение показано на картинке:

На шине I2C может быть несколько устройств, поэтому чтобы передавать данные, мы должны знать адрес устройства. Удобнее всего для этого использовать программу i2c_scan, код которой показан ниже.

#include

void setup()

{

Wire.begin();

Serial.begin(9600);

while (!Serial);

Serial.println("\nI2C Scanner");

}

void loop()

{

byte error, address;

Serial.println("Scanning...");

int nDevices = 0;

for(address = 1; address < 127; address++) {

Wire.beginTransmission(address);

error = Wire.endTransmission();

if (error == 0) {

Serial.print("I2C device found at address 0x");

if (address<16)

Serial.print("0");

Serial.print(address,HEX);

Serial.println(" !");

nDevices++;

}

else if (error==4) {

Serial.print("Unknow error at address 0x");

if (address<16)

Serial.print("0");

Serial.println(address,HEX);

}

}

if (nDevices == 0)

Serial.println("No I2C devices found\n");

else

Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan

}

Если дисплей подключен правильно, то запустив Serial Monitor, мы увидим примерно такой текст:

0x3C - это и есть адрес нашего дисплея. Адрес также можно посмотреть на обратной стороне дисплея - но в моем случае там было написано 0х78. С неправильным адресом, разумеется, ничего не работало. Так что лучше лишний раз проверить.

Непосредственная работа с дисплеем состоит в посылке различных команд по шине I2C, но к счастью, нам этого делать не нужно - уже написаны готовые библиотеки. Их можно скачать по ссылкам https://github.com/adafruit/Adafruit-GFX-Library и https://github.com/adafruit/Adafruit_SSD1306 соответственно. Файлы необходимо скачать и распаковать в папку Документы\Arduino\libraries. В моем случае, я распаковал файлы в папки Adafruit_SSD1306 и Adafruit-GFX-Library.

Следующим шагом необходимо указать тип используемого в проекте дисплея. Для этого достаточно в файле Adafruit_SSD1306-master\Adafruit_SSD1306.h раскомментировать соответствующую строку. Всего доступны 3 варианта, например для дисплея 128х64 код будет выглядеть так:

#define SSD1306_128_64

// #define SSD1306_128_32

// #define SSD1306_96_16

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

#include

Adafruit_SSD1306 display(0);

static const unsigned char PROGMEM logo16_glcd_bmp[] = {

B00000000, B11000000,

B00000001, B11000000,

B00000001, B11000000,

B00000011, B11100000,

B11110011, B11100000,

B11111110, B11111000,

B01111110, B11111111,

B00110011, B10011111,

B00011111, B11111100,

B00001101, B01110000,

B00011011, B10100000,

B00111111, B11100000,

B00111111, B11110000,

B01111100, B11110000,

B01110000, B01110000,

B00000000, B00110000

};

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

display.setTextSize(1);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Hello, world!");

display.drawBitmap(2, 14, logo16_glcd_bmp, 16, 16, 1);

display.drawLine(0, 40, 128, 40, WHITE);

display.drawLine(10, 50, 118, 50, WHITE);

display.display();

}

void loop() {

}

Разберем код подробнее.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных