Вывод информации на OLED 128×64 SPI. #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_

Подводник
Offline
Зарегистрирован: 09.02.2019

Здравствуйте Господа!
Шелавливые руки не дают покоя и менее как 24 часа назад у меня полявился мой перый arduino nano.

С тех пор не могу есть и спать...
Очень хочется вывести информацию с датчика BMP180 на oled дисплей.
OLED экран у меня 7 пиновый с подключением по SPI.

Вчера экран я подключил к nano, увидел первые признаки жизни, сегодня смог написать "Привет мир".
Естественно гуглю, но все "погодные станции" на ардуино с дисплеями OLED идут с подключением по I2C.

Поэтому у меня возникли вопросы.
Стоит ли опустить руки и заказать в Китае 4х пиновый OLED на I2C?
Возможно мне кто-то посоветует библеотеку или замечательню статью, чтобы мне было понятно как экран OLED взаимодействует с протоколом SPI и каким все-таки образом выводить на него информацию с датчика BMP180.


#define OLED_MOSI 11
#define OLED_CLK 13
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Подводник пишет:

Стоит ли опустить руки и заказать в Китае 4х пиновый OLED на I2C?

С какого рожна? Через какой интерфейс работает дисплей - абсолютно монопенисуально. Какая нахрен разница? И чего ты там вывести не можешь? Показывай:

1) свой "Привет мир", который у тебя выводится

2) свою попытку вывести число, посмотрим, что там у тебя не получается.

Подводник
Offline
Зарегистрирован: 09.02.2019

Скетч с которым я игрался:
 

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_MOSI 11
#define OLED_CLK 13
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

void setup() {
 // инициализация и очистка дисплея
 display.begin(SSD1306_SWITCHCAPVCC);
 display.clearDisplay();
 display.display();
 
 delay(1000);
 display.setTextSize(1.5); // установка размера шрифта
 display.setTextColor(WHITE); // установка цвета текста
 display.setCursor(20,20); // установка курсора

 display.println("Hello Word!");
 display.display();


}

void loop() {
}

Желание повторить:
http://arduino-project.net/grafik/

Но, я не использую библеотеку #include <OLED_I2C.h> и даже если использую экран не работает с ней.
Соответсвтенно "
OLED  myOLED(SDA, SCL, 8);" не могу заменить на свой экран.

void loop() {
  myOLED.setFont(RusFont);  
  myOLED.print("Ntvgthfnehf", 5, 0);  // 
  myOLED.setFont(SmallFont); 
  myOLED.print(String(bmp.readTemperature(),1), 80, 0);
  myOLED.print("~C", 107, 0);
  myOLED.setFont(RusFont);
  myOLED.print("Lfdktybt", 5, 32);
  myOLED.setFont(SmallFont);
  myOLED.print(String(bmp.readSealevelPressure() / 133.3,1), 60, 32);
  myOLED.setFont(RusFont);
  myOLED.print("vv", 92, 32);
  myOLED.update();

Я так понимаю не достаточно менять myOLED на display (естественно с отказом от русских букв и т.д.)
Какой командой выводить информацию что-то я не соображу и опыта нет, да и зеленый я.
Стараюсь разобраться.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

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

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

Покажи два кода:

1) свой "Привет мир", который у тебя выводится и нормально работает

2) свою попытку вывести число, посмотрим, что там у тебя не получается.

Вот эти два пункта без лирики и загаживания мозгов.

Подводник
Offline
Зарегистрирован: 09.02.2019

Увидел несколько ошибок, решаю, разбираюсь! Спасибо!

Подводник
Offline
Зарегистрирован: 09.02.2019

У меня все получилось. Даже двумя способами, с использованием разных библеотек. Продолжаю погружение в увлекательный мир программирования, но знаний катострофически не хватает, приходится черпать за обе щеки.