цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Raspberry Pi и OLED-дисплей SSD1306: принцип работы, схема подключения, код



Raspberry Pi и OLED-дисплей SSD1306: принцип работы, схема подключения, код

Автор: Mike(admin) от 17-03-2024, 23:55

Сегодня мы рассмотрим, как соединить OLED-дисплей SSD1306 с Raspberry Pi и запрограммировать его работу. Мы собираемся использовать SPI-связь между OLED и PI для отправки данных.


Raspberry Pi и OLED-дисплей SSD1306: принцип работы, схема подключения, код

SSD1306 OLED – это монохромный дисплей, для управления которым используется чип ssd1306. Он поставляется в двух размерах: 128×32 и 128×64. Сегодня мы используем 128×64 с 7 контактами. Существует два варианта: один со связью I2C, а другой со связью SPI. Для связи I2C используются два контакта SCL и SDA, которые являются контактами тактовой частоты и последовательных данных. Они отправляют последовательные синхросигналы и последовательные данные всем подключенным к ним датчикам, но в соответствии с работой связи I2C на эти данные отвечает только указанный датчик.


Для связи SPI используются 4 или 3 провода, в зависимости от датчика. SCK (последовательный тактовый сигнал), MISO (главный вход, ведомый выход), MOSI (главный выход, ведомый вход) и CS (выбор чипа). Это четыре контакта, которые используются обычно. Вывод CS не является обязательным, он используется в основном при подключении нескольких устройств к одному и тому же выводу SCK, MISO и MOSI. Поэтому, чтобы выбрать, от какого датчика мы должны получать или отправлять данные, мы используем контакт CS.


Схему подключения можно увидеть далее. Здесь мы подключаем дисплей и датчик температуры и влажности DHT11, данные которого будем выводить на дисплей.


Raspberry Pi и OLED-дисплей SSD1306: принцип работы, схема подключения, код

Для программирования мы используем библиотеку Adafruit для SSD1306. Откройте терминал и введите следующую строку:


pip3 install adafruit-circuitpython-ssd1306

Затем введите:


sudo apt-get install python3-pil

Теперь вам нужно включить интерфейс SPI и I2C в Pi:


sudo raspi-config

В этом разделе «Interface options» включите оба варианта. После этого отредактируйте файл конфигурации, чтобы установить скорость передачи данных для связи I2C. Как для I2C, так и для SPI MOSI, SCK одинаковы, меняется только имя, поэтому нам нужно установить скорость передачи данных только для I2C. Для этого откройте окно терминала и введите следующую строку, чтобы открыть файл config.txt:


sudo nano /boot/config.txt

Найдите строку dtparam=i2c_arm=on. Под этим добавьте также эту строку:


dtparam=i2c_baudrate=1000000

Нажмите Ctrl+X, Y и Enter, чтобы сохранить изменения, теперь перезагрузите Pi. После этого откройте Thonny IDE и введите следующий код:



from PIL import Image, ImageDraw, ImageFont  
 import adafruit_ssd1306  
 import board  
 import digitalio  
 from time import sleep  
 oled=adafruit_ssd1306.SSD1306_SPI(128,64,board.SPI(),digitalio.DigitalInOut(board.D6),digitalio.DigitalInOut(board.D4),digitalio.DigitalInOut(board.D5)) 
 #oled=adafruit_ssd1306.SSD1306_SPI(width,height,spi_interface,dc,rst,cs) 
 oled.fill(0)  
 oled.show()  
 font=ImageFont.load_default()  
 image=Image.new('1',(128,64))  
 draw=ImageDraw.Draw(image)  
 for i in range(40):  
   for j in range(56):  
     draw.text((i,j),"HELLO WORLD",font=font,fill=255)  
     oled.image(image)  
     oled.show()  
     sleep(0.01)  
     draw.text((i,j),"HELLO WORLD",font=font,fill=0)  
     oled.image(image)  
     oled.show()

После этого все будет работать как нужно.




© digitrode.ru


Теги: Raspberry Pi, дисплеи




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

Комментарии:

Оставить комментарий