Библиотека OLED_I2C.h как с ней работать?

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

Здравствуйте. 

http://www.rinkydinkelectronics.com/library.php?id=79

есть такая библиотека может кто работал (экран oled 0.96"), подскажите как сделать, 

что бы при нажатии на кнопки буквы появлялся друг за другом и смещался как бегущая строка?

 

#include <OLED_I2C.h>

OLED  myOLED(SDA, SCL);

extern uint8_t SmallFont[];

#define A 3 
#define B 4 
#define C 5 
#define D 6 
#define E 7 
#define F 8 
#define ST 9
int x= 0;

void setup()
{
 
myOLED.begin();
myOLED.setFont(SmallFont);
  
pinMode(A,INPUT);
pinMode(B,INPUT);
pinMode(C,INPUT);
pinMode(D,INPUT);
pinMode(E,INPUT);
pinMode(F,INPUT);
pinMode(ST,INPUT);

 digitalWrite(A,HIGH);
 digitalWrite(B,HIGH);
 digitalWrite(C,HIGH);
 digitalWrite(D,HIGH);
 digitalWrite(E,HIGH);
 digitalWrite(F,HIGH);
 digitalWrite(ST,HIGH);

myOLED.print("START",CENTER,0);
myOLED.update();
}
void loop()
{
  
if (digitalRead(A)==LOW) {
     myOLED.print("A ",x,30);
     myOLED.update();
     x++;
     delay(50);
           
   }
  if (digitalRead(B)==LOW) {
     myOLED.print("B",x,30);
     myOLED.update();
     x++;
     delay(50);
   }
  
  if (digitalRead(C)==LOW) {
     myOLED.print("C",x,30);
     myOLED.update();
     x++;
  }

}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А чем отличается то, что Вы хотите, от того, что есть сейчас?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

у мня отак бегает 

https://www.youtube.com/watch?v=NmL4b7wAZVg

Logik
Offline
Зарегистрирован: 05.08.2014
Oleg_balt
Offline
Зарегистрирован: 07.06.2015

(Я не программист) Я не понял, как сделать (я про эту библеотеку), что бы каждый раз когда я нажимаю на кнопки буквы шли друг за другом на дисплее , а получается экран обновляется и появляется один символ.

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

Я себе заказал такой экран а как мне сделать, что бы при нажатии кнопки буквы появлялись на экране друг за другом и сдвигали в лево ? 

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня вопрос: зачем вы покупаете вещи, которыми не умеете пользоваться?

Я вот, например, на гироскутере не умею кататься и не покупаю его.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Oleg_balt, я не знаю, как остальные, но лично я не понял, что именно Вы хотите сделать. Попытайтесь расписать поподробнее.

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

есть 7 кнопок и дисплей. при нажатии на кнопку на экране появляется символ, при еще раз нажатии на любую кнопку следующий символ появлятся рядом(с экрана не удаляются предыдущие символы) т.е. я нажал десять раз и на экране появились 10 символом, подряд идущих друг за другом.  

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А при чем здесь бегущая строка?

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

sadman41 пишет:

У меня вопрос: зачем вы покупаете вещи, которыми не умеете пользоваться?

Я вот, например, на гироскутере не умею кататься и не покупаю его.

По вашей логики я не должен ничего покупать, т.е. например продаются так называемые стартовые наборы для навичков которые вообще ничего не умеют и по вашей логике их не надо покупать начинающим или человек не умеет ездить на велосипеде и он не должен его покупать? Для меня это звучит как минимум странно.  Я вот например хочу научится летать на легком самолете, меня останавливает только цена, корочка пилота стоит около 10 тыщ евро.    

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

"Бегущая строка" это когда вся строка символом смещается влево при появлении нового символа когда уже не влазит видимую область экрана, возможно я не так выразился про бегущую строку.  

sadman41
Offline
Зарегистрирован: 19.10.2016

Согласен, вопрос не сильно корректен. Показалось, что вы из тех, что "купил на али прикольный экранчек, срочно покажите куду тут втыкать ардуину".

...однако я сомневаюсь в том, что на легком самолете не учатся летать по советам на форуме. 

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

sadman41 пишет:

Согласен, вопрос не сильно корректен. Показалось, что вы из тех, что "купил на али прикольный экранчек, срочно покажите куду тут втыкать ардуину".

...однако я сомневаюсь в том, что на легком самолете не учатся летать по советам на форуме. 

Я не силен в программировании то, что я сделал мне не подходит в описании библиотеки я не нашел или не понял как сделать, поэтому прошу помощи, что бы сэкономить времени, думаю я все ровно победю ведь то что я хочу сделать не сложно с точки зрения программирования, просто не хватает опыта, знаний и времени :(  

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

Logik пишет:

а у меня так

https://www.youtube.com/watch?v=Omc9WdDXeWE&feature=youtu.be

а как вы перерисовывали экран? 

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

Спасибо разобрался , надо было больше отсупать а у меня получалось что я затирал предыдущий символ , осталось смещение сделать

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Oleg_balt пишет:

"Бегущая строка" это когда вся строка символом смещается влево при появлении нового символа когда уже не влазит видимую область экрана, возможно я не так выразился про бегущую строку.  

А можно то же самое, только по-русски?

 

PS. Без обид. Просто для того, чтобы программировать, жизненно необходимо уметь четко и без ошибок формулировать свои мысли. Иначе - никак. Так что лучше начинать тренироваться прямо сейчас.

Logik
Offline
Зарегистрирован: 05.08.2014

Oleg_balt пишет:

Logik пишет:

а у меня так

https://www.youtube.com/watch?v=Omc9WdDXeWE&feature=youtu.be

а как вы перерисовывали экран? 

Да запросто. Но тут не весь экран, а только прямоугольник в пределах которого буквы скачут, там в левом и правом нижнем углах видно обрезание букв при выходе из него. Для прямоугольника буфер выделяется, а буфер выпихивается в экран. Для SSD1306 вобще вывод примитивный, фрейм в полный экран - адрес в угол, затем команда записи видеопамяти и весь буфер, байти за байтом в шину. Для SH1106 (это диагональ 1.3, на видео вроде такой) немного сложней, там после вывода одной строки снова надо указывать адрес и снова команда записи видеопамяти выдавать перед даными. По идее у Вас оно в библиотеке должно быть.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

У меня вопрос: зачем вы покупаете вещи, которыми не умеете пользоваться?

Я вот, например, на гироскутере не умею кататься и не покупаю его.


Научу, даже заочно, минут за пять и, поедешь

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

имеем 6 кнопок, при нажатии на кнопки выводим в строку на дисплее вот такие символы АBCDEF

например, я жму много раз на разные кнопку и на экране выводится скажем - АААССССВВВEE

(хотелось бы сделать так) символы появляются слева и смещаются в право, т.е. каждый новый символ появляется а начале строки свлева все предыдущие символы уходят в права пока  не скроются за пределами экрана.

Вроде понятно расписал или нет? 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вариант 1 (не очень надежный): внимательно почитать дэйташит на контроллер дисплея и выяснить, поддерживает ли он горизонтальный скроллинг. Если "да", то воспользоваться этой возможностью.

Вариант 2 (если не поддерживается, если лень читать дэйташит, если хочется сделать что-то переносимое на другой контроллер...).

Рассуждаем логически:

Если нам нужно сделать горизонтальный скроллинг, а контроллер дисплея мы на это не задействуем, следовательно, это должен делать основной микроконтроллер.

Другими словами, буквы по экрану должен перемещать именно микроконтроллер. 

Но т.к. физически двигать их он не может, значит, он должен их перерисовывать в новой позиции, т.е. на каждом следующем шаге рисовать новое положение строки.

А если контроллер должен рисовать строку, значит, он должен знать, что именно следует рисовать. Другими словами, эту строку он должен хранить у себя в памяти.

Т.е. просто принять символ и вывести егол на экран - недостаточно. Нужно: 

- принять символ,

- добавить его к существующей строке,

- проанализировать длину строки для того, чтобы понять, что с ней следует делать. В частности, либо выводить, как есть, либо выводить со смещением,

- если необходимо выводить со смещением, удалить из строки символы, которых все равно не будет на экране,

- вывести строку.

 

Примечание: в связи с ограниченностью ресурсов микроконтроллера, то, что выше названо строкой, рационально реализовать в виде кольцевого буфера.

Oleg_balt
Offline
Зарегистрирован: 07.06.2015

может поискать другую библиотеку для этого экрана в которой реализован строковой скролинг????

Logik
Offline
Зарегистрирован: 05.08.2014

Так можно всю жизнь искать и так и не найти, если оно никому кроме вас не нужно было или тот кто делал не публиковал. По "Вариант 1" из #20 - избавлю вас от страданий курения даташита, скролинг есть, просто по кругу, но использовать его для вашей хотелки не получится (это на 99,9% при сильно виртуозном исполнении возможно чтото и выжать можна но мне о таком не известно).