упс это же не i2C a SPI интерфейс. у меня на адаптере дисплея i2C это SDA and SCL (pin A4 A5 ардуины). Как подключить по i2C?
DISPLAY 12864B
DISPLAY 12864B
Последний раз редактировалось Turb0user 28 фев 2019, 17:54, всего редактировалось 1 раз.
- magpit
- Лейтенант
- Сообщения: 382
- Зарегистрирован: 01 окт 2017, 12:55
- Имя: Сергей
- Благодарил (а): 2 раза
DISPLAY 12864B
Посмотри здесь вроде тоже:https://www.youtube.com/watch?v=IlGFBtq2eLETurb0user писал(а): 26 фев 2019, 19:04#41 Сообщение Turb0user » 26 фев 2019, 21:04
MTSnik1 писал(а): ↑25 фев 2019, 13:16
I2c
упс это же не i2C a ISP интерфейс. у меня на адаптере дисплея i2C это SDA and SCL (pin A4 A5 ардуины). Как подключить по i2C?
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
DISPLAY 12864B
В этой библиотеке нет I2C для этого дисплея.
Отправлено спустя 13 минут 53 секунды:
У Вас такой? [spoiler]http://www.digole.com/index.php?productID=1269[/spoiler]
Отправлено спустя 8 часов 2 минуты 31 секунду:
Попробуйте библиотеку Там есть пример для I2C sketch_feb27a. Его попробуйте запустить.
Отправлено спустя 13 минут 53 секунды:
У Вас такой? [spoiler]http://www.digole.com/index.php?productID=1269[/spoiler]
Отправлено спустя 8 часов 2 минуты 31 секунду:
Попробуйте библиотеку Там есть пример для I2C sketch_feb27a. Его попробуйте запустить.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DISPLAY 12864B
Спасибо за ответaidar_i писал(а): 27 фев 2019, 20:13В этой библиотеке нет I2C для этого дисплея.
Отправлено спустя 13 минут 53 секунды:
У Вас такой? [spoiler]http://www.digole.com/index.php?productID=1269[/spoiler]
Отправлено спустя 8 часов 2 минуты 31 секунду:
Попробуйте библиотеку
DigoleSerial.rar
Там есть пример для I2C sketch_feb27a. Его попробуйте запустить.
Да у меня похожий [spoiler]https://ru.aliexpress.com/item/MCP23017 ... bc69a66ce7[/spoiler]
Странно что ни кто его тут не описывал. Очень удобная плата под i2C экономит ноги чипа.
Я конечно попробую но уверен не разберусь

Надеюсь все-же кто нибудь из комрадов сделает блок. Для понимающих в коде это пару пустяков наверно


Хорошая ведь штука и не дорогаяю Вместе с экраном 450 рублей.
Эран на ebay [spoiler]https://www.ebay.com/itm/ST7920-128x64- ... 0290.m3507[/spoiler]
Отправлено спустя 9 минут 44 секунды:
Народ пользует это дело тут [spoiler]http://www.gammon.com.au/lcd[/spoiler]
Есть библиотека тут [spoiler]https://github.com/nickgammon/I2C_graph ... _display.h[/spoiler]
Может кто прикрутит это к FLProg блоком?
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
DISPLAY 12864B
Просто никто не пользуется им по I2C, медленно работает.
Попробуйте вывод текста и картинки.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 19 апр 2019, 19:59, всего редактировалось 1 раз.
- SergeyShikal
- Лейтенант
- Сообщения: 593
- Зарегистрирован: 30 авг 2018, 17:15
- Откуда: Иркутская область
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
DISPLAY 12864B
Не работает, при компиляции выдает ошибку
[spoiler][scroll]#include <Wire.h>
#include <I2C_graphical_LCD_display.h>
#include <SPI.h>
I2C_graphical_LCD_display lcd;
bool En_74932214_1;
bool En_229283407_1;
String text_229283407_1;
char textStr_229283407_1[60];
bool En_229283407_2;
String text_229283407_2;
char textStr_229283407_2[60];
bool En_266896953_1;
const byte picture_266896953_1[] PROGMEM = {
0x1C, 0x22, 0x49, 0xA1, 0xA1, 0x49, 0x22, 0x1C, // face 0x10, 0x08, 0x04, 0x62, 0x62, 0x04, 0x08, 0x10, // star destroyer 0x4C, 0x52, 0x4C, 0x40, 0x5F, 0x44, 0x4A, 0x51, // OK logo
};
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
void setup()
{
lcd.begin ();
TWBR = 12;
lcd.clear (0, 0, 127, 63, 1);
}
void loop()
{
//Плата:1
En_266896953_1 = !(0);
if (En_266896953_1) {
lcd.gotoxy (0, 0);
lcd.blit (picture_266896953_1, sizeof picture_266896953_1);
}
if (!(0))
{ if (_tim1I) { if (_isTimer(_tim1P, 3000)) {_tim1O = 1;}} else {_tim1I =1; _tim1P = millis();}} else {_tim1O = 0; _tim1I = 0;}
En_229283407_1 = !(_tim1O);
text_229283407_1 = String("TEST");
if (En_229283407_1) {
text_229283407_1.toCharArray(textStr_229283407_1, text_229283407_1.length()+1);
lcd.gotoxy (0, 50);
lcd.string (textStr_229283407_1, 1);
if (_tim1O) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;};
En_74932214_1 = _trgrt1;
if (En_74932214_1) {
lcd.clear (0, 0, 127, 63, 0xFF);
}
En_229283407_2 = _tim1O;
text_229283407_2 = String("LCD_I2C");
if (En_229283407_2) {
text_229283407_2.toCharArray(textStr_229283407_2, text_229283407_2.length()+1);
lcd.gotoxy (0, 50);
lcd.string (textStr_229283407_2, 1);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}[/scroll][/spoiler]
[spoiler]"
pr8:48: error: '_isTimer' was not declared in this scope
pr8:72: error: a function-definition is not allowed here before '{' token
pr8:76: error: expected '}' at end of input
pr8:76: error: expected '}' at end of input
Используем библиотеку Wire версии 1.0 из папки: c:\Program Files (x86)\FLProg4\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\Wire
Используем библиотеку I2C_graphical_LCD_display-master в папке: c:\Program Files (x86)\FLProg4\ideV2\portable\sketchbook\libraries\I2C_graphical_LCD_display-master (legacy)
Используем библиотеку SPI версии 1.0 из папки: c:\Program Files (x86)\FLProg4\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\SPI
exit status 1
'_isTimer' was not declared in this scope[/spoiler]
При загрузке примера выключается подсветка экрана и больше не чего не происходит. При подключении по spi работает.
- SergeyShikal
- Лейтенант
- Сообщения: 593
- Зарегистрирован: 30 авг 2018, 17:15
- Откуда: Иркутская область
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
DISPLAY 12864B
Не работает, теперь как в примере экран гаснет после компиляции, адрес ни где не надо прописывать?
- SergeyShikal
- Лейтенант
- Сообщения: 593
- Зарегистрирован: 30 авг 2018, 17:15
- Откуда: Иркутская область
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
DISPLAY 12864B
Да, у автора I2C_graph... KS0108. В библиотеке тоже так написано. Не нашел пока никого , кто прикрутил ST7920 по i2c. Если есть что, выложите.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
DISPLAY 12864B
Тоже покрутил сегодня свой 12864b с этими блоками. Вроде даже понял, как переделывать под себя, тк нужно 8 строк и желательно бы в разных местах выводить.
Однако не все шрифты радуют глаз. Было время, когда писал свой знакогенератор под ZX Spectrum, а как их можно подправить здесь?
Однако не все шрифты радуют глаз. Было время, когда писал свой знакогенератор под ZX Spectrum, а как их можно подправить здесь?
DISPLAY 12864B
[ref=#404040]Alias[/ref], то же интересует тема с данным экраном. Если вы переделали блок под 8 строк, можете сюда скинуть? Для примера, узнать как это делается.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
DISPLAY 12864B
Да там все элементарно на самом деле.
Во вложении мой пример, правда в версии 530, сам работаю исключительно в 303.
Чтобы понять, что к чему, откройте на редактирование мой блок и любой из этой темы. Я поудалял ненужные мне параметры пользователя, кроме выбора шрифта для оперативности в экспериментах, и тот уберу позже, тк точно знаю, что мне нужен только один шрифт и каждая строка будет всегда на одном месте.
Оригинал слева, мой вариант справа, не знаю, как сделать форматирование текста:
[spoiler]if ( en ) { text_1.toCharArray(textStr1, text_1.length()+1);_____text_1.toCharArray(textStr1, text_1.length()+1);
text_2.toCharArray(textStr2, text_2.length()+1);_____text_2.toCharArray(textStr2, text_2.length()+1);
text_3.toCharArray(textStr3, text_3.length()+1);_____Сколько строк нужно, столько и делаем
text_4.toCharArray(textStr4, text_4.length()+1);_____У меня их пока восемь
text_5.toCharArray(textStr5, text_5.length()+1);_____text_8.toCharArray(textStr8, text_8.length()+1);
u8g.setColorIndex(color);_____u8g.setColorIndex(1); - сразу прописал привычный вариант
u8g.firstPage();
do {
u8g.setFont(set_font1);_____u8g.setFont(set_font1); - только один раз присвоил нужный мне фонт
u8g.drawStr( x1, y1, textStr1);_____u8g.drawStr( 0, 7, textStr1); координаты 0,7 вписал напрямую
u8g.setFont(set_font2);_____Как и для всех остальных строк ...
u8g.drawStr( x2, y2, textStr2);
u8g.setFont(set_font3);
u8g.drawStr( x3, y3, textStr3);
u8g.setFont(set_font4);
u8g.drawStr( x4, y4, textStr4);
u8g.setFont(set_font5);
u8g.drawStr( x5, y5, textStr5);
if (en_graphics ) { u8g.setColorIndex(color_g);_____Графику удалил, вернее, обращение к ней.
graphics }
} while(u8g.nextPage());
}
[/spoiler]
Есть желание выводить не только построчно, но и в отдельные места дисплея периодически обновляемые данные, тк где-то будет статика, то как подписи данных, где-то текущие значения. Не выводить же все постоянно. Хотя посмотрю еще, есть ли смысл биться с мельницами.
Если еще не подключали, вот подсказка:
Выводы для последовательной передачи данных:
№ вывода Обозначение Назначение
4 RS (IRS) (D/I) CS — линия выбора устройства
5 R/W (IR/W) MOSI — линия данных от Arduino к дисплею
6 E (IE) SCK — линия тактирования
15 PSB (CS1) Для последовательной шины — уровень логического «0»
17 RST Сброс при подаче логического «0»
15 вывод - на землю, остальные - на МК.
Больше нечего добавить.
Должно выглядеть так:
[spoiler] [/spoiler]
Во вложении мой пример, правда в версии 530, сам работаю исключительно в 303.
Чтобы понять, что к чему, откройте на редактирование мой блок и любой из этой темы. Я поудалял ненужные мне параметры пользователя, кроме выбора шрифта для оперативности в экспериментах, и тот уберу позже, тк точно знаю, что мне нужен только один шрифт и каждая строка будет всегда на одном месте.
Оригинал слева, мой вариант справа, не знаю, как сделать форматирование текста:
[spoiler]if ( en ) { text_1.toCharArray(textStr1, text_1.length()+1);_____text_1.toCharArray(textStr1, text_1.length()+1);
text_2.toCharArray(textStr2, text_2.length()+1);_____text_2.toCharArray(textStr2, text_2.length()+1);
text_3.toCharArray(textStr3, text_3.length()+1);_____Сколько строк нужно, столько и делаем
text_4.toCharArray(textStr4, text_4.length()+1);_____У меня их пока восемь
text_5.toCharArray(textStr5, text_5.length()+1);_____text_8.toCharArray(textStr8, text_8.length()+1);
u8g.setColorIndex(color);_____u8g.setColorIndex(1); - сразу прописал привычный вариант
u8g.firstPage();
do {
u8g.setFont(set_font1);_____u8g.setFont(set_font1); - только один раз присвоил нужный мне фонт
u8g.drawStr( x1, y1, textStr1);_____u8g.drawStr( 0, 7, textStr1); координаты 0,7 вписал напрямую
u8g.setFont(set_font2);_____Как и для всех остальных строк ...
u8g.drawStr( x2, y2, textStr2);
u8g.setFont(set_font3);
u8g.drawStr( x3, y3, textStr3);
u8g.setFont(set_font4);
u8g.drawStr( x4, y4, textStr4);
u8g.setFont(set_font5);
u8g.drawStr( x5, y5, textStr5);
if (en_graphics ) { u8g.setColorIndex(color_g);_____Графику удалил, вернее, обращение к ней.
graphics }
} while(u8g.nextPage());
}
[/spoiler]
Есть желание выводить не только построчно, но и в отдельные места дисплея периодически обновляемые данные, тк где-то будет статика, то как подписи данных, где-то текущие значения. Не выводить же все постоянно. Хотя посмотрю еще, есть ли смысл биться с мельницами.
Если еще не подключали, вот подсказка:
Выводы для последовательной передачи данных:
№ вывода Обозначение Назначение
4 RS (IRS) (D/I) CS — линия выбора устройства
5 R/W (IR/W) MOSI — линия данных от Arduino к дисплею
6 E (IE) SCK — линия тактирования
15 PSB (CS1) Для последовательной шины — уровень логического «0»
17 RST Сброс при подаче логического «0»
15 вывод - на землю, остальные - на МК.
Больше нечего добавить.
Должно выглядеть так:
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DISPLAY 12864B
[ref]aidar_i[/ref], если я правильно понял, блок позволяет вывести на экран одну геометрическую фигуру. А можно ли вывести, скажем, два прямоугольника? а если можно, то как?
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
DISPLAY 12864B
А визуализировать простой график по 10 точкам для наглядности ввода данных - это уже перебор для блока? Тоже интересуют графические примитивы.
DISPLAY 12864B
Вот еще интересное
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DISPLAY 12864B
В дисплее больше 9 строк получить не удалось. Так же некорректно работает данный блок со встроенным блоком меню. Экран раз в секунду гаснет, активна графика, которая отключена. прога 4.2.4. Меню придется делать на командоаппарате, с этим блоком вроде работает
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
DISPLAY 12864B
com, Вы для чего это написали? Констатируете или просите помощи? Если первое, выложьте проект. Если второе, то - тоже самое.
DISPLAY 12864B
[ref]aidar_i[/ref], у меня интернет, раздача с телефона. Ни загрузить ни скачать файлы пока что не могу
Кто сейчас на конференции
Сейчас этот форум просматривают: Amazon [Bot] и 2 гостя