Прошу помощи с выводом текста на i2c дисплей

Ahatolii
Offline
Зарегистрирован: 10.12.2017

доброго времени суток господа форумчане, хучу дисплей 128на32 использовать на макете для вывода информации.

#include <U8glib.h>
#include "rus10x20.h"



U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);	// I2C / TWI 

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("<1 ПЛАТФОРМА");
   u8g.setPrintPos(0, 30); 
  u8g.print("ПЛАТФОРМА 2>");
}

void setup(void) {
  // flip screen, if required
  // u8g.setRot180();
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(500);
}

 

Ahatolii
Offline
Зарегистрирован: 10.12.2017

вот это собрать получилось все работает. А как сделать так что бы выводился текст с попеременке с цикличностью я не догоняю. Прошу сильно не пинать я только учусь. И заранее спасибо

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Что значит "с попеременке с цикличностью"?

Ahatolii
Offline
Зарегистрирован: 10.12.2017

Ну вот сначала допустим на дисплее написано "платформа1" "платформа2" (2 строки) потом допустим через минуту "не курить" потом еще через минуту другая информация, и так по кругу.  

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ahatolii пишет:

Ну вот сначала допустим на дисплее написано "платформа1" "платформа2" (2 строки) потом допустим через минуту "не курить" потом еще через минуту другая информация, и так по кругу.  

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

Пример:

typedef enum
{
	showPlatform,
	showNoSmoke,
} Flags;

Flags toDisplay = showPlatform;
bool wantRedraw = false;
bool lastButtonClicked = false;

void draw()
{
	if(!wantRedraw)
		return;
	
	wantRedraw = false;
	
	switch(toDisplay)
	{
		case showPlatform:
		{
			tft.print("Платформа 1");
		}
		break;
		
		case showNoSmoke:
		{
			tft.print("НЕ КУРИТЬ!");			
		}
		break;
	}
	
}


void loop()
{
	draw();
	
	bool curButtonClicked = button.isClicked();
	wantRedraw = curButtonClicked != lastButtonClicked;
	
	lastButtonClicked = curButtonClicked;
	
	if(curButtonClicked)
	{
		toDisplay = showNoSmoke;
	}
	else
	{
		toDisplay = showPlatform;
	}
}

 

Ahatolii
Offline
Зарегистрирован: 10.12.2017

Спасибо большое что флаги я понял а дальше я  не догоняю.

где размер шрифта? и время ? трудно мне пока.

Ahatolii
Offline
Зарегистрирован: 10.12.2017
#include <U8glib.h>
#include "rus10x20.h"



U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);	// I2C / TWI 

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("<1 ПЛАТФОРМА");
   u8g.setPrintPos(0, 30); 
  u8g.print("ПЛАТФОРМА 2>");
}

void setup(void) {
  // flip screen, if required
  // u8g.setRot180();
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(500);
}
Ahatolii
Offline
Зарегистрирован: 10.12.2017

вот на этом примере что поправить? СПАСИБО БОЛЬШОЕ.

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ahatolii пишет:

вот на этом примере что поправить? СПАСИБО БОЛЬШОЕ.

 

К каждой библиотеке, как правило, есть примеры, ваша - не исключение. Пункт меню "Примеры" в Arduino IDE откройте, и изучайте примеры к библиотеке экрана.

Ahatolii
Offline
Зарегистрирован: 10.12.2017

вот ткните пальцем пожалуйста.

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(rus4x6);
  u8g.setPrintPos(0,5); 
  u8g.print("1");
   u8g.setPrintPos(0, 13); 
  u8g.print("2");
    u8g.setPrintPos(0, 21); 
  u8g.print("3");
   u8g.setPrintPos(0, 29); 
  u8g.print("4");
}
 
void setup(void) {
  // flip screen, if required
  // u8g.setRot180();
}
 
void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(6000);
  
}
Ahatolii
Offline
Зарегистрирован: 10.12.2017

вот вывел дисплей эту инфу например на 6 секунд как продолжить скейч чтобы например он дальше показал следущие строчки шрифта или картинку?