Код зависает с SPI и библиотеками OLED (возможный конфликт между Adafruit SSD1306 и аппаратными библиотеками SPI)

library spi oled

У меня проблема с совместным использованием двух библиотек, а именно 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 (...), он перейдет в цикл. Что наводит меня на мысль о возможном конфликте между двумя библиотеками. Что странно, учитывая, что я не нашел подобной проблемы в Интернете, и я сомневаюсь, что эти две библиотеки редко используются.

, 👍1

Обсуждение

Возможно, вы страдаете от недостатка памяти. Библиотека SSD1306 требует много памяти для работы, что не оставляет много места для других вещей., @Majenko

Это известная проблема. Дело в том, что код больше ничего не запускает. Доступно 1463 байта, что вполне достаточно для буфера кадров + накладные расходы. В прошлом я запускал библиотеку SSD1306 с гораздо большей параллельной нагрузкой, а теперь просто пытаюсь инициализировать библиотеку SPI, так что я очень сомневаюсь, что это проблема с памятью., @Anthropomorphous Dodecahedron

Но как выглядит схема? Я хотел бы посмотреть, как он подключен, чтобы получить больше информации о том, что может происходить., @raddevus

@raddevus Это было некоторое время назад, но я помню, что в итоге возникла проблема с проводкой. Я помню, как мне пришлось поцарапать пару следов и установить поврежденные провода. Это была изготовленная на заказ плата, @Anthropomorphous Dodecahedron

@AnthropomorphousDodecahedron спасибо за ответ, мне было любопытно, может ли это быть связано со схемой, потому что у меня самого были такие проблемы. Рад, что вы смогли решить эту проблему. , @raddevus


1 ответ


0

Я использовал тот же код, предоставленный вами, и загрузил его в arduino uno, и он отлично работал для меня. Я прилагаю изображение для справки. Я предполагаю, что может быть какая-то другая проблема image

,

Ого, может быть, это что-то с моим оборудованием.. Я попробую запустить его на другой плате, спасибо за помощь, @Anthropomorphous Dodecahedron

Ваше приветствие дайте нам знать, если это работает, @Maaz Sk