Код зависает с SPI и библиотеками OLED (возможный конфликт между Adafruit SSD1306 и аппаратными библиотеками SPI)
У меня проблема с совместным использованием двух библиотек, а именно SPI.h, который устанавливается вместе с Arduino и Adafruit_SSD1306.h. Мой код застревал, поэтому я сократил его до минимума, чтобы найти, где возникает проблема. Вот урезанный код:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
//Разрешение Экрана
#define SCREEN_WIDTH 128 // Ширину OLED-дисплея в пикселях
#define SCREEN_HEIGHT 64 // Высота OLED-дисплея, в пикселях
#define OLED_Res A3
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_Res);
#define _ssPin 7
void setup() {
pinMode(OLED_Res, OUTPUT);
pinMode(_ssPin, OUTPUT);
Serial.begin(19200);
Serial.println("Serial set up");
SPI.begin();
Serial.println("SPI set up");
Wire.begin();
Serial.println("I2C set up");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.println("Screen set up");
}
void loop()
{
Serial.println("Loop entered");
}
Я отлаживаю код с помощью последовательного монитора. Код в его нынешнем виде зависает после инициализации I2C. Если я раскомментирую SPI.begin() или display.begin (...), он перейдет в цикл. Что наводит меня на мысль о возможном конфликте между двумя библиотеками. Что странно, учитывая, что я не нашел подобной проблемы в Интернете, и я сомневаюсь, что эти две библиотеки редко используются.
@Anthropomorphous Dodecahedron, 👍1
Обсуждение1 ответ
Я использовал тот же код, предоставленный вами, и загрузил его в arduino uno, и он отлично работал для меня. Я прилагаю изображение для справки. Я предполагаю, что может быть какая-то другая проблема
Ого, может быть, это что-то с моим оборудованием.. Я попробую запустить его на другой плате, спасибо за помощь, @Anthropomorphous Dodecahedron
Ваше приветствие дайте нам знать, если это работает, @Maaz Sk
- Есть ли подробные примеры Si4463?
- Использование Broadcom AFBR-S50 с Arduino
- Мне нужна помощь в создании меню с использованием библиотеки u8g2
- Хорошие способы подключения нескольких шин I2C?
- Проблема с SPI при использовании трансивера RF24 NRF24L01 со светодиодной матрицей MD_MAX72xx
- Попытка использовать акселерометр I2C и SPI OLED
- Артефакты на lcd при добавлении, казалось бы, не связанного кода
- Прозрачный OLED (SPI) не работает на wemos d1 mini
Возможно, вы страдаете от недостатка памяти. Библиотека SSD1306 требует много памяти для работы, что не оставляет много места для других вещей., @Majenko
Это известная проблема. Дело в том, что код больше ничего не запускает. Доступно 1463 байта, что вполне достаточно для буфера кадров + накладные расходы. В прошлом я запускал библиотеку SSD1306 с гораздо большей параллельной нагрузкой, а теперь просто пытаюсь инициализировать библиотеку SPI, так что я очень сомневаюсь, что это проблема с памятью., @Anthropomorphous Dodecahedron
Но как выглядит схема? Я хотел бы посмотреть, как он подключен, чтобы получить больше информации о том, что может происходить., @raddevus
@raddevus Это было некоторое время назад, но я помню, что в итоге возникла проблема с проводкой. Я помню, как мне пришлось поцарапать пару следов и установить поврежденные провода. Это была изготовленная на заказ плата, @Anthropomorphous Dodecahedron
@AnthropomorphousDodecahedron спасибо за ответ, мне было любопытно, может ли это быть связано со схемой, потому что у меня самого были такие проблемы. Рад, что вы смогли решить эту проблему. , @raddevus