Этой статьёй хочу открыть цикл статей — проектов о «Машине времени». Если описывать все возможности прибора, то статья получиться очень большой. Да и единого устройства пока нет. Есть маленькие проекты для Arduino, которые можно комбинировать. Для тех, кто не знает, что такое «Машина времени», далее МВ . В фото кругах «Машина времени» - это жаргонное выражение для прибора, позволяющего синхронизировать события в студии. Незаменимая вещь при съёмке воды, огня и быстро протекающих событий. Обычно такие приборы имеют вход для микрофона, датчиков света, магнитного поля, датчика вибрации, можно управлять мотором и так далее. С помощью МВ можно регулировать задержки между событиями, измерять длительности импульсов света студийных блоков. В этой статье пойдёт речь о OLED дисплее.
Дисплей сделан в формате Arduino Mini и может быть установлен прямо на Arduino Mini.
Для соединения нужно всего 5 контактов. Сам дисплей небольшой с маленьким потреблением и не требует подсветки. так как сам светиться. Рабочая область 96х16 точек с I2C интерфейсом. Чтобы использовать дисплей на прямую с Arduino mini на модуль, есть свой LDO регулятор 3.3V, а так же преобразователь уровня для I2C шины.
Схема с большим разрешением есть у меня в стриме, ссылка внизу статьи. В схеме есть пару лишних сопротивлений ноль ом, чтобы плата была односторонней.
Когда все детали в наличии, на монтаж ушло минут 15.
Для управления использую библиотеку Adafruit.
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
http://learn.adafruit.com/adafruit-gfx-graphics-library
После того как вы установите библиотеки в директорию Arduino,
останется написать маленький скетч для проверки,
и придумать, что выводить на экран. :)
#define OLED_RESET 10 //Pin # the OLED module's RST pin is connected to. #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display(OLED_RESET); void setup() { // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) display.begin(SSD1306_SWITCHCAPVCC); // init done //display.display(); // show splashscreen //delay(2000); display.clearDisplay(); // clears the screen and buffer // draw a single pixel display.fillRect(0, 0, display.width()-1, display.height()-1, WHITE); display.display(); delay(2000); display.clearDisplay(); } void loop() { // text display tests display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println(12345678); display.display(); delay(500); //display.clearDisplay(); display.fillRect(36,0,12, 16, BLACK); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(36,0); display.println(">"); display.display(); delay(500); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Circuit for the Photos."); display.display(); delay(1000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(BLACK, WHITE); // 'inverted' text display.setCursor(0,0); display.println(12345678); display.display(); delay(500); //display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,9); display.println(12345678); display.display(); delay(500); //display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(49,0); display.println(1234567); display.display(); delay(500); display.clearDisplay(); }
Успешных вам кадров.
PS:
продолжение следует.
а где такой офигенный дисплейчик прикупил? я таких у китайцев не видел
AntwortenLöschenНа выходных закончу BOM и выложу в сеть.
Löschen