Прошу помочь с библиотекой U8glib и I2C дисплеем

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("НЕ КУРИТЬ");
   u8g.setPrintPos(0, 30); 
  u8g.print("ГРУЗОВОЙ ПОЕЗД");
}

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);
}

 

5N62V
Offline
Зарегистрирован: 25.02.2016

Отлично! Ну хоть за кого-то порадоваться сегодня можно!

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

Подскажите а как его дописать чтобы строчки менялись через

определенный промежуток времени.

например

u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("НЕ КУРИТЬ");
   u8g.setPrintPos(0, 30); 
  u8g.print("ШТРАФ 1000");
 
затем через минуту
 u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("НЕ СОРИТЬ");
   u8g.setPrintPos(0, 30); 
  u8g.print("ШТРАФ 1000");
 
ну итак по кругу
 
Ahatolii
Offline
Зарегистрирован: 10.12.2017

Извените за ошибки в машине не очень удобно писать.

5N62V
Offline
Зарегистрирован: 25.02.2016

Ahatolii пишет:

  u8g.print("НЕ КУРИТЬ");

  u8g.print("ШТРАФ 1000");

  u8g.print("НЕ СОРИТЬ");
 
  u8g.print("ШТРАФ 1000");
 
ну итак по кругу
 

Это не будет работать: мотивация не правильная! 

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

Подскажи как правиль сделать?  

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

Подскажите как его поправить.

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

На смартфоне не удобно набирать текст. 

Извините еще раз.

5N62V
Offline
Зарегистрирован: 25.02.2016

Ну типа так: БРОСИЛ МУСОР В УРНУ - ПОЛУЧИ СТАКАН ПИВА!

у вас в радиусе километра чистота будет! 

b707
Offline
Зарегистрирован: 26.05.2017

5N62V пишет:

Ну типа так: БРОСИЛ МУСОР В УРНУ - ПОЛУЧИ СТАКАН ПИВА!

у вас в радиусе километра чистота будет! 

"И со всей округи люди приходили к нам..." (с) Розенбаум

Будут приходить со своим мусором - пива не напасешься. Уж лучше штрафовать - оно и выгоднее :)

AntonHT
Offline
Зарегистрирован: 29.12.2017

Вырежу код кусками из своего эксперемента. Надеюсь поймете что к чему

if (millis() - curentMillis > setTime) {
  set ++;
  curentMillis = millis();

if (set >= 3){
    set = 0;
  }

while (u8g.nextPage());



switch (set){
  case 0:
  do{
    
    u8g.setFont(u8g_font_6x10);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Cur");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(20, 22);
         u8g.print(t);
  } while (u8g.nextPage());
 
 
  break;
  
  case 1:
  do{
    u8g.setFont(u8g_font_6x10);
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Min");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1); 
         u8g.setPrintPos(20, 22);
         u8g.print(tMin);
         } while (u8g.nextPage());
         //  dispLED.point(false);

  break;
  
  case 2:
  do{
    u8g.setFont(u8g_font_6x10);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Max");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1); 
         u8g.setPrintPos(20, 22);
         u8g.print(tMax);
         u8g.setColorIndex(1);
    u8g.drawLine(22,53,20,10);
} while (u8g.nextPage());


  break;
}

 

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

Спасибо большое за помощь. 

Только вот не совсем все роботает.

я сделал вот так.

l#include "U8glib.h"


U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 


long previousMillis = 0; 
long interval = 1000;      


void setup()
{
 
  if (millis() - previousMillis > interval){
     set ++;
  }
    previousMillis = millis();

    
if (set >= 3){
    set = 0;
  }

while (u8g.nextPage());



switch (set){
  case 0:
  do{
    
    u8g.setFont(u8g_font_6x10);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Cur");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(20, 22);
         u8g.print(t);
  } while (u8g.nextPage());
 
 
  break;
  
  case 1:
  do{
    u8g.setFont(u8g_font_6x10);
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Min");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1); 
         u8g.setPrintPos(20, 22);
         u8g.print(tMin);
         } while (u8g.nextPage());
         //  dispLED.point(false);

  break;
  
  case 2:
  do{
    u8g.setFont(u8g_font_6x10);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1);                                 // Выбираем цвет фона
         u8g.setPrintPos(0, 9);
         u8g.print("Max");
  u8g.setFont(u8g_font_courB24n);                           // Выбираем шрифт u8g_font_6x10
         u8g.setColorIndex(1); 
         u8g.setPrintPos(20, 22);
         u8g.print(tMax);
         u8g.setColorIndex(1);
    u8g.drawLine(22,53,20,10);
} while (u8g.nextPage());


  break;
}



И вот такая ошибка.


U8glib-1.19.1\U8glib-1.19.1\examples\TextRotX\TextRotX.ino: In function 'void setup()':

TextRotX:15: error: 'set' was not declared in this scope

TextRotX:20: error: 'set' was not declared in this scope

TextRotX:28: error: 'set' was not declared in this scope

TextRotX:39: error: 't' was not declared in this scope

TextRotX:54: error: 'tMin' was not declared in this scope

TextRotX:69: error: 'tMax' was not declared in this scope

TextRotX:76: error: expected '}' at end of input

exit status 1
'set' was not declared in this scope


b707
Offline
Зарегистрирован: 26.05.2017

и что - в сообщении об ошибке же ясно все сказано... с английским проблемы. что ли?

Задекларируйте переменные, прежде чем использовать.

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

Спсасибо. Дело в том что я только учусь и мне не совсем все понятно.

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

Подскажите еще пожалуйста, исли например нужны разные 

временные интервалы между сменами текста на дисплее 

можно ли использовать 

delay()

например 

oid draw(void) {  
  u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("абвг ");
   u8g.setPrintPos(0, 30); 
  u8g.print("12345>");

  delay (1000)

u8g.setFont(rus10x20);
  u8g.setPrintPos(0, 13); 
  u8g.print("1234 ");
   u8g.setPrintPos(0, 30); 
  u8g.print("2581");


delay (1000)

или это не будет работать ?