Samstag, 27. Oktober 2012

Time machine: Display.



Этой статьёй хочу открыть цикл статей — проектов о «Машине времени». Если описывать все возможности прибора, то статья получиться очень большой. Да и единого устройства пока нет. Есть маленькие проекты для 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:
продолжение следует.


2 Kommentare:

  1. а где такой офигенный дисплейчик прикупил? я таких у китайцев не видел

    AntwortenLöschen
    Antworten
    1. На выходных закончу BOM и выложу в сеть.

      Löschen