Используется microWireкод выкладывайте, иначе это обучение игре на гитаре без гитары
Не пробовали брать другую библиотеку для дисплея?
#define OLED_EXTFONTS // указываем, что используются расширенные шрифты
#define OLED_SOFT_BUFFER_64
#include <GyverOLED.h>
GyverOLED oled;
#include <MPU6050_tockn.h>
MPU6050 mpu6050(Wire);
//extern uint8_t ExtFont8x12[];
extern uint8_t ExtFont8x12[];
void setup() {
Serial.begin(115200);
oled.init(OLED128x64);
oled.clear();
oled.home();
oled.setFont(ExtFont8x12);
oled.print("Привет");
Serial.println("Hello");
oled.update();
delay(1000);
Serial.println("Start");
Serial.println(millis()-1000);
oled.clear();
oled.home();
mpu6050.begin();
}
long timer = 0;
void loop() {
mpu6050.update();
if (millis() - timer > 100) {
oled.clear();
oled.setCursor(0, 0);
oled.print("T:");
oled.setCursor(15, 0);
oled.print(mpu6050.getTemp());
oled.setCursor(0, 16);
oled.print("X:");
oled.setCursor(15, 16);
oled.print(mpu6050.getAngleX());
oled.setCursor(0, 30);
oled.print("Y:");
oled.setCursor(15, 30);
oled.print(mpu6050.getAngleY());
oled.update();
timer = millis();
}
}
Нет, по отдельности всё работает. Сканер показывает адреса.Конфликт ? не правильное подключение ?
/*
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 26.10.2017г.
*/
#include <Wire.h>
void setup(){
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop(){
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 8; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
ДА.Адреса разные ?
А если подключить вместе сканер показывает оба устройства ?
НетЕсть какое то локальное большое выделение памяти в программе ?
Массивы внутри функций ?
ДаГувер олед с буфером используешь?
Тогда памяти скорее всего оперативка вылетает
1. Добавлять в Ардуино ИДЕ можно не только zip-архивы, но и папки.Ребят, может показаться непрофессиональным, но нигде не могу найти библиотеку GyverOLED именно в zip-архиве, чтобы её в Arduino IDE добавить
Есть у кого-нибудь?
Документы/Arduino/libraries/
Пробовал уже папкой1. Добавлять в Ардуино ИДЕ можно не только zip-архивы, но и папки.
2. Можно просто закинуть папку с библиотекой вДокументы/Arduino/libraries/
3. В конце концов, запакуй ручками папку с библиотекой в zip-архив.
Зачем что-то редактировать в notepad-е?Пробовал уже папкой
При чём качал каждый файл библиотеки с гитхаба и редактировал содержимое в notepad++
Не хочет
приведите код, пожалуйста
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64,OLED_BUFFER> oled;
void setup() {
oled.init(); // Инциализация дисплея
oled.setContrast(255); // Макс. яркость
oled.setScale(1);
}
void loop() {
/* меню */
oled.clear();
oled.home(); // Курсор в левый верхний угол
oled.println("1");
oled.println("2");
oled.println("3");
oled.println("4");
oled.println("5");
oled.println("6");
oled.println("7");
oled.print("8");
oled.update(); // Выводим кадр на дисплей
}
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64,OLED_BUFFER> oled;
void setup() {
oled.init(); // Инциализация дисплея
oled.setContrast(255); // Макс. яркость
oled.setScale(1);
}
void loop() {
/* меню */
oled.clear();
oled.home(); // Курсор в левый верхний угол
oled.println("1");
oled.println("2");
oled.println("3");
oled.println("4");
oled.println("5");
oled.println("6");
oled.println("7");
oled.print("8");
oled.update(); // Выводим кадр на дисплей
}
oled.println("8");
Я специально убрал println, но разницы нет. Также если вручную поставить курсор на строку и напечатать что-либо, разницы нет. С любым примером из библиотеки такая же ситуациявставляйте код как код, а не как непонятно что, есть же специальная кнопка в редакторе
вот так:
По вопросу - а если последнюю строку вывода заменить наC++:#include <GyverOLED.h> GyverOLED<SSD1306_128x64,OLED_BUFFER> oled; void setup() { oled.init(); // Инциализация дисплея oled.setContrast(255); // Макс. яркость oled.setScale(1); } void loop() { /* меню */ oled.clear(); oled.home(); // Курсор в левый верхний угол oled.println("1"); oled.println("2"); oled.println("3"); oled.println("4"); oled.println("5"); oled.println("6"); oled.println("7"); oled.print("8"); oled.update(); // Выводим кадр на дисплей }
C++:oled.println("8");
Добрый день. Все правильно, не печатается 7я строка, если считать с 0. Сам метод oled.SetCursor(0,7) работает, только на экране ничего не отображается. Библиотеку использую GyverOLED dev, вот ссылка https://github.com/AlexGyver/GyverLibs/tree/master/GyverOLED [dev]Вопрос, а если сделать oled.init(1,400); и да, я же правильно понимаю, что у вас не печатается 7мая строка?
oled.SetCursor(0,7) не работает, всё верно? Просто глянул код в библиотека, там всё вроде ровно, ровно 8 строк (0-7).
Чёт смотрю примеры и не могу понять правильно ли Вы создаёте oled, либо я не ту библиотеку смотрю.
#define OLED_SOFT_BUFFER_64 (ну если буфер на стороне МК)
#include <GyverOLED.h>
GyverOLED oled;
#include <GyverOLED.h>
// попробуй с буфером и без
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
// можно передать адрес: GyverOLED oled(0x3C);
char Lorem_ipsum[] = "Lorem ipsum dolor sit amet, лорем ипсум долор сит амет привет народ ё, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip...";
void setup() {
Serial.begin(9600);
oled.init(); // инициализация
// ускорим вывод, ВЫЗЫВАТЬ ПОСЛЕ oled.init()!!!
Wire.setClock(400000L); // макс. 800'000
overlapTest();
printTest();
party();
showText();
scrollText();
scaleText();
}
void loop() {
}
void party() {
oled.clear();
uint32_t tmr = millis();
oled.setScale(3);
oled.setCursor(10, 2);
oled.print("ПЕННАЯ");
oled.setScale(2);
oled.setCursor(6, 5);
oled.print("ВЕЧЕРИНКА!");
oled.update();
for (;;) {
oled.invertDisplay(true);
delay(200);
oled.invertDisplay(false);
delay(200);
if (millis() - tmr > 5000) return;
}
}
void overlapTest() {
oled.clear();
oled.setScale(1);
oled.setCursorXY(0, 0);
oled.print("LOL");
oled.update();
delay(500);
oled.setCursorXY(0, 8);
oled.print("KEK!");
oled.update();
delay(500);
oled.setCursorXY(40, 4);
oled.print("LOL");
oled.update();
delay(500);
oled.setCursorXY(40, 12);
oled.print("KEK!");
oled.update();
delay(500);
oled.setScale(2);
oled.setCursorXY(0, 24);
oled.print("LOL");
oled.update();
delay(500);
oled.setCursorXY(0, 40);
oled.print("KEK!");
oled.update();
delay(500);
oled.setCursorXY(60, 28);
oled.print("LOL");
oled.update();
delay(500);
oled.setCursorXY(60, 44);
oled.print("KEK!");
oled.update();
delay(5000);
}
void printTest() {
oled.clear();
char data0[] = "Привет!";
char data1 = 'b';
int data2 = -50;
float data3 = 1.25;
oled.home();
oled.setScale(1);
oled.println(data0);
oled.println(data1);
oled.invertText(true);
oled.println(data2);
oled.println(data3);
oled.invertText(false);
oled.update();
delay(5000);
}
void showText() {
oled.clear();
oled.home();
oled.autoPrintln(true);
oled.setScale(1);
oled.print(Lorem_ipsum);
oled.update();
delay(5000);
}
void scrollText() {
oled.clear();
uint32_t tmr = millis();
oled.autoPrintln(false);
int val = 128;
for (;;) {
//oled.clear(); // ЗАКОММЕНТИРУЙ, ЕСЛИ ВКЛЮЧЕН БУФЕР
oled.setScale(1);
oled.setCursor(val, 0);
oled.print(Lorem_ipsum);
oled.setScale(2);
oled.setCursor(val, 1);
oled.print(Lorem_ipsum);
oled.setScale(3);
oled.setCursor(val, 4);
oled.print(Lorem_ipsum);
oled.update();
val--;
if (millis() - tmr > 5000) return;
}
}
void scaleText() {
oled.clear();
uint32_t tmr = millis();
byte scale = 1;
oled.autoPrintln(true);
for (;;) {
oled.setScale(scale);
oled.home();
oled.print("Привет!");
oled.update();
delay(1000);
oled.clear();
scale++;
if (scale > 4) scale = 1;
if (millis() - tmr > 5000) return;
}
}