Кто нибудь сталкивался с проблемой конфликтации OLED Display с пультом PS2 ?
После обращения по адресу: display.begin(i2c_Address, true); // Address 0x3C default
PS2 на связь не выходит.
По отдельности оба устройства работают корректно.
Интересная история для пятницы, но уже суббота,
Выложи код «чудесный» и все логи, что можешь предоставить.
Ооо, конечно, хорошей суботы
Код только для тестирования спарки OLED и PS2 Controler
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> // Connect Adafruit_GFX lib
#include <Adafruit_SH110X.h> // Connect Adafruit_SH110X lib
#include <PS2X_lib.h> // Подключаем библиотеку
PS2X ps2x; // Создаём класс “ps2x”
/* Uncomment the initialize the I2C address , uncomment only one, If you get a totally blank screen try the other*/
#define i2c_Address 0x3c //initialize with the I2C addr 0x3C Typically eBay OLED’s
//#define i2c_Address 0x3d //initialize with the I2C addr 0x3D Typically Adafruit OLED’s
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // QT-PY / XIAO
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
int error = 0; // переменная для определения кода ошибки
byte type = 0; // переменная для определения типа устройства
byte vibrate = 0; // переменная для значения работы вибромотора
void setup() {
Serial.begin(57600); // Инициируем работу последовательного порта на скорости 57600 бод
//--------------------------------------------------------------//
error = ps2x.config_gamepad(13,11,10,12, true, true); // Инициируем работу геймпада, проверяя указанные выводы для подключения (clock, command, attention, data, Pressures, Rumble)
if (error == 0) { // Если код ошибки = 0, то выводим в монитор порта сообщение, что всё нормально,
Serial.print(“Found Controller,”); //
Serial.print(“configured successful.”); //
Serial.print("Try out all the buttons, "); //
Serial.print("X will vibrate the controller, "); // нажатие клавиши Х включает работу вибромотора
Serial.print("faster as you press harder; "); //
Serial.print(“holding L1 or R1 will print out”); // клавиши L1 и R1 включают отображение работы джойстиков (“Стиков”)
Serial.print("the analog stick values. "); //
Serial.println(“updates and to report bugs.”); //
} else if (error == 1) { // Если код ошибки = 1, то выводим в монитор порта сообщение, что контроллер не найден. Проверьте подключение или включите режим DEBUG
Serial.print("No controller found, "); //
Serial.print("check wiring, see readme.txt "); //
Serial.print("to enable debug. visit "); //
Serial.println(“troubleshooting tips”); //
} else if (error == 2) { // Если код ошибки = 2, то выводим в монитор порта сообщение, что геймпад найден, но не отвечает на команды.
Serial.print("Controller found but not "); //
Serial.print("accepting commands. "); //
Serial.print("see readme.txt to enable debug. "); //
Serial.println(“troubleshooting tips”); //
} else if (error == 3) { // Если код ошибки = 3, то выводим в монитор порта сообщение, что геймпад найден, но не вошёл в режим работы аналогового устройства
Serial.print("Controller refusing to enter "); //
Serial.println("Pressures mode, may not support it. "); //
}
//--------------------------------------------------------------//
type = ps2x.readType(); // Считываем тип устройства
switch (type) { //
case 0: // Если тип = 0, то
Serial.println(“Unknown Controller type”); // “Неизвестный тип устройства”
break; //
case 1: // Если тип = 1, то
Serial.println(“DualShock Controller Found”); // “Найден геймпад DualShock”
break; //
case 2: // Если тип = 2, то
Serial.println(“GuitarHero Controller Found”); // “Найден геймпад GuitarHero”
break; //
}
//--------------------------------------------------------------//
//--------------------------------------------------------------//
delay(250); // wait for the OLED to power up
display.begin(i2c_Address, true); // Address 0x3C default
[//display.setContrast](https://display.setcontrast/) (0); // dim display
display.display();
delay(2000);
display.clearDisplay(); // Clear the buffer.
}
void loop() {
//--------------------------------------------------------------//
if (error == 1) // Если ошибка = 1, то прервать выполнение скетча
return;
//--------------------------------------------------------------//
ps2x.read_gamepad(false, vibrate);
//--------------------------------------------------------------//
if (ps2x.Button(PSB_START)) // Пока кнопка “Start” НАЖИМАЕТСЯ, то
Serial.println(“Start is being held”); // выводим сообщение в монитор порта
if (ps2x.Button(PSB_SELECT)) // Пока кнопка “Select” НАЖИМАЕТСЯ, то
Serial.println(“Select is being held”); // выводим сообщение в монитор порта
//--------------------------------------------------------------//
//--------------------------------------------------------------//
//Serial.print("Stick Values:");
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
display.setCursor(0, 0);
display.println("Stick Values:");
display.println(ps2x.Analog(PSS_LY), DEC); // выводим аналоговые значения джойстиков:
display.display();
Serial.print(ps2x.Analog(PSS_LY), DEC); // Левый джойстик, ось Оу
Serial.print(","); //
Serial.print(ps2x.Analog(PSS_LX), DEC); // Левый джойстик, ось Ох
Serial.print(","); //
Serial.print(ps2x.Analog(PSS_RY), DEC); // Правый джойстик, ось Оу
Serial.print(","); //
Serial.println(ps2x.Analog(PSS_RX), DEC); // Правый джойстик, ось Ох
//--------------------------------------------------------------//
delay(100); // Задержка 50мс
}
Плата Arduino Nano MEGA328P (Китаец)
I2C подключён к A4- SDA, A5 - SCK
Нет, ну понятное дело, что позитивное познание феномена конфликтации, как кумулятивная тенденция дискурса конструктивного креатива, не должно вызывать фрустрации у отдельных индивидуумов и не входить в когнитивный диссонанс с общей гносеологией чувств, а когерентность флюидов вдохновения не должна приводить к вариабельному декадентству эмоций. Следует также всячески избегать в коммуникациях волюнтаристического трюизма и эклектики глоссария, ощущая свое истинное отношение к строгой схоластике в метафизическом смысле.
А ведь можно было просто промолчать если не можешь или не хочешь помочь.
А ведь можно было сформулировать вопрос нормальными словами, не прибегая к наукообразному бреду.
Ты прав, нужно было сразу уточнить, что речь о Arduino, а не STM32.
Маловероятно, что на форуме телепаты отвечают.
Ирония неуместна, Ардуино - это десятки разных плат, в том числе и стм32.
Вам надо подробно обьяснить, что у вас не работает. Не думаете же вы, что кто-то будет собирать ваш проект, чтобы найти ошибку.
Например, по отдельности работает - это что значит? Вы собирали проект с Ардуино и с ps2 и пробовали?
Подключил Joystick PS2 k Arduino интерфейс SPI (13 -SCK, 11- MOSI, 10- SS, 12- MISO)
Проверил с помощью примера библиотеки - PS2X_lib.h
Работало.
Подключил OLED k I2C bus A15- SCK, A14 - SDA
Проверил с помощю примера библиотеки Adafruit_SH110x
Работало.
Собрал свой код для проверки сборки PS2 Joystic + OLED
Не работает.
Если закоментировать строку 72 - display.begin(i2c_Address, true); // Address 0x3C default.
Код выше
Так заработал Joystic с терминалом
как-то так
Спасибо за терпение
Недостаточно памяти? Что иде пишет при компиляции?
Вы всерьез полагаете, что это исчерпывающее описание неисправности?
При компиляции нет ошибок
Что ещё добавить?
OLED нечего не отображает.
Ошибок компеляции нет.
Joystic шлёт команды в терминал пока закоментирована display.begin(i2c_Address, true); // Address 0x3C default
Слушайте, я вас просил показать, что пишет иде. Мне не нужен ваш пересказ.
На какую помощь вы рассчитываете, если даже не в состоянии описать проблему?
А компиляции?
=======================================
Вы, простите, случайно не альтернативно одарены? Вас простым и понятным языком спросили
Вы отвечаете:
Что, вот так прямо и пишет? Это копипаста? Или то, что она пишет - большой секрет и показать дословно Вы не можете из-за подписки о неразглашении?
Вы никогда не замечали, что одна и та же выписка из истории болезни для читающего врача содержит гораздо больше информации, чем для сантехника? Не думаете, что здесь также?