Помогите разобраться с библиотекой U8glib

ardu_2016_ino
Offline
Зарегистрирован: 28.08.2016

Есть терморегулятор на Ардуине. Захотелось прилепить к нему OLED дисплей 0.96 I2C типа такого . В качестве датчика температуры используется термистор, значение температуры присваивается переменной temp. Для вывода на экран перепробовал библиотеки OLED I2C, AsOLED, OzOLED, тут как бы все нормально. Хочу еще попробовать библиотеку U8glib, но не могу понять как выводить значение temp. Из примеров идущих с библиотекой понял что вывод текста идет с помощью функции void draw(void)
 

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 22, "Hello World!");
}

void loop(void) {
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );

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

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

draw() - это условное название функции, помещенное в так называемый "picture loop" (строки 8-11)

 

void draw(void) {
  u8g.setFont(u8g_font_unifont);
  lcd.setPrintPos(0, 20);
  lcd.print(temperatureValue);
}

void loop(void) {
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
}

 

ardu_2016_ino
Offline
Зарегистрирован: 28.08.2016

Что-то я (и компилятор тоже) не нашел такой команды lcd.print в этой библиотеке.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

ardu_2016_ino пишет:

Что-то я (и компилятор тоже) не нашел такой команды lcd.print в этой библиотеке.

а так:

void draw(void) {
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(0, 20);
  u8g.print(temperatureValue);
}

void loop(void) {
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
}

 

ardu_2016_ino
Offline
Зарегистрирован: 28.08.2016

Gippopotam пишет:

а так:

Как говорил кот Матроскин "Ура! Заработало". Спасибо!

p/s еще бы узнать как очищать(гасить)  экран?

upd: кажись нашел - u8g.sleepOn(); и u8g.sleepOff(); / выключает и включает экран соответсвенно

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

ardu_2016_ino пишет:

Gippopotam пишет:

а так:

Как говорил кот Матроскин "Ура! Заработало". Спасибо!

p/s еще бы узнать как очищать(гасить)  экран?

upd: кажись нашел - u8g.sleepOn(); и u8g.sleepOff(); / выключает и включает экран соответсвенно

как бы - нет.

в идиологии этой библиотеки очистка экрана не нужна.

достаточно ничего не рисовать в цикле picture loop.

ardu_2016_ino
Offline
Зарегистрирован: 28.08.2016

Gippopotam пишет:

в идиологии этой библиотеки очистка экрана не нужна.

достаточно ничего не рисовать в цикле picture loop.

т.е. создать еще один пустой цикл?

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

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

ardu_2016_ino пишет:

т.е. создать еще один пустой цикл?

да.

Цитата:

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

ну работает и работает...

Хотя, очистка экрана этой функцией - это побочный эффект. Если контроллер вашего дисплея поддерживает режим сна - потратится время, на смену режимов, да и некоторые настрой сбрасываются.

serega374
Offline
Зарегистрирован: 10.08.2015

Не получается по очередно показывать "Вемя дата"<->"Температура влажность" с интервалом 1 сек например.

#include <U8glib.h>
#include <DS1302.h>
#include "DHT.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
namespace {
const int kCePin   = 2;  // Chip Enable
const int kIoPin   = 10;  // Input/Output
const int kSclkPin = 7;  // Serial Clock
// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}
void printTime() {
  // Get the current time and date from the chip.
  Time t = rtc.time();
  // Name the day of the week.
  const String day = dayAsString(t.day);
  // Format the time and date and insert into the temporary buffer.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(0, 60);
  u8g.print(buf);
 }
}
void setup() {
  dht.begin();
}
void loop ()
{
  u8g.firstPage();
  do {
    indTempHum(); //показываем темеературу влажность
    delay(1000);// одну секунду
    ClearScreen();// очищаем экран
    printTime() ;//показываем время
    delay(1000);// одну секунду
  } while ( u8g.nextPage() );
}
void indTempHum (void) { //функция индикации температуры и влажности
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  u8g.drawFrame (0, 0, 126, 62);
  u8g.drawFrame (1, 1, 125, 61);
  u8g.drawLine (0, 32, 126, 32);
  u8g.drawLine (0, 33, 126, 33);
  u8g.drawLine (64, 33, 68, 62);
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(4, 48);
  u8g.print("Watering");
  u8g.setPrintPos(70, 48);
  u8g.print("Light");
  if (isnan(h) || isnan(t)) {
    u8g.setFont(u8g_font_unifont);
    u8g.setPrintPos(0, 60);
    u8g.print("SENSOR ERROR!");
    return;
  }
  else {
    byte h = dht.readHumidity();
    byte t = dht.readTemperature();
    u8g.setFont(u8g_font_unifont);
    u8g.setPrintPos(4, 15);
    u8g.print("Temperature");
    u8g.setPrintPos(100, 15);
    u8g.print(t);
    u8g.setPrintPos(4, 30);
    u8g.print("Humidity");
    u8g.setPrintPos(100, 30);
    u8g.print(h);
    return;
  }
}
void ClearScreen (void) { // функция очистки экрана
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

serega374 пишет:

Не получается по очередно показывать "Вемя дата"<->"Температура влажность" с интервалом 1 сек 

Принято к сведению.

Теперь будем знать, что с таким кодом "не получается", спасибо.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Поскажите плиз , есть прэкт http://www.semifluid.com/2013/05/28/arduino-fio-lcd-oscilloscope/ но там дисплей,я такого и невидел , но как поделючить дисплей NOKIA 5110 

Genri5
Offline
Зарегистрирован: 31.05.2016

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

Вот к примеру:  http://srukami.inf.ua/pultoscop_v25110.html

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Genri5 пишет:

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

Вот к примеру:  http://srukami.inf.ua/pultoscop_v25110.html

Нет это полная ерунда , я такой делал . Он показывает только положительные импульсы , нет ни синхронизации нет ни чего , показания врут безбожно .

Genri5
Offline
Зарегистрирован: 31.05.2016

В Вашей ссылке в 15 - строке указан MINI12864. Библиотека U8GLIB универсальна. Скачайте ее, выберите свой дисплей, укажите соответствующие контакты. Можно взять как пример из ссылки, которую я указал. Порасскинте мозгами. Ничего там сверх сложного нет.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Спасибо , по пробую .

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Всем добра . Столкнулся с небольшей проблемкой . Суть такова - есть скетч ,работает ,компилируется . Скетч под  двухстрочный индикатор LCD Keypad Sheild , а мне нужно подключить 1.8 TFTграфический дисплей , сьиблиотеками TFT.h и SPI.h 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DAFdriver пишет:

Скетч под  двухстрочный индикатор LCD Keypad Sheild , а мне нужно подключить 1.8 TFTграфический дисплей , сьиблиотеками TFT.h и SPI.h 

Нужно - подключай!

Сюда-то ты зачем это запостил?

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Извиняюсь не вту тему писал

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

Genri5 пишет:

Библиотека U8GLIB универсальна. 

Только устарела. На смену ей пришла 8g2u, если уж разбираться, то стОит это делать с более новой либой.

Genri5
Offline
Зарегистрирован: 31.05.2016

5N62V пишет:

Genri5 пишет:

Библиотека U8GLIB универсальна. 

Только устарела. На смену ей пришла 8g2u, если уж разбираться, то стОит это делать с более новой либой.

 На столько новая, что не попадалась такая.

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

Genri5 пишет:

 На столько новая, что не попадалась такая.

Пардон, оппечатался :) u8g2 : https://github.com/olikraus/u8g2/wiki/u8g2reference

Ghost33
Offline
Зарегистрирован: 07.01.2018

Помогите разобраться с библиотекой u8g
Собственно проблема в том что я пытаюсь вывести показания HC-SR04 на вот этот дисплей

https://ru.aliexpress.com/item/0-91-128x32-IIC-I2C-OLED/32836647725.html...

Дисплей точно работает, текст вводит

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

#include <U8glib.h>
#include <Ultrasonic.h>
 
int trigPin = 10; //
int echoPin = 11;  //
int ledPin = 9;
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
 
 
 
 
void setup(){
  Serial.begin(9600);// включаем порт и назначаем скорость
  pinMode(trigPin,OUTPUT);//назначаем trigPin как выход
  pinMode(echoPin,INPUT);// назначаем echoPin как вход
  digitalWrite(trigPin, LOW);// устанавливаем trigPin изначально в выключенное состояние 
  delay(100);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
}
void loop(){
  
    int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10); 
      digitalWrite(trigPin, LOW); 
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58;
        do {
    u8g.setFont(u8g_font_unifont);
      u8g.setPrintPos(10, 20);
      u8g.print("duration");
      delay(500); 
        u8g.firstPage(); 
      
  } while( u8g.nextPage() );
}
 
   
 
      
5N62V
Offline
Зарегистрирован: 25.02.2016

Ghost33 пишет:

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

Я бы для начала убедился в том, что Ваша переменная duration  а) вообще считается, б)считается правильно. Выведите ее в монитор порта.
Ghost33
Offline
Зарегистрирован: 07.01.2018

Это я исправил, вывел в порт, работает. А вот на дисплей не выводит(

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

Ghost33 пишет:

Это я исправил, вывел в порт, работает. А вот на дисплей не выводит(

u8g.print("duration"); - а почему duration в кавычках? Вам значение переменной надо вывести, или слово duration?

Ghost33
Offline
Зарегистрирован: 07.01.2018
#include <U8glib.h>
#include <Ultrasonic.h>
 
int trigPin = 10; //
int echoPin = 11;  //
int ledPin = 9;
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
 
 
 
 
void setup(){
  Serial.begin(9600);// включаем порт и назначаем скорость
  pinMode(trigPin,OUTPUT);//назначаем trigPin как выход
  pinMode(echoPin,INPUT);// назначаем echoPin как вход
  digitalWrite(trigPin, LOW);// устанавливаем trigPin изначально в выключенное состояние 
  delay(100);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
}
void loop(){
      int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10); 
      digitalWrite(trigPin, LOW); 
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58;
      u8g.setFont(u8g_font_unifont);
      u8g.setPrintPos(0, 20);
      u8g.print(duration);
      }
5N62V
Offline
Зарегистрирован: 25.02.2016

Послушайте, Ghost33, Вы не правильно код вставляете. Это не прилично. 

Читать тут: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Я вижу, что кавычки Вы убрали, только Вы забыли казать что теперь происходит. И к тому же Вы не показали , что значение переменной duration действительно считается верно.

Ghost33
Offline
Зарегистрирован: 07.01.2018

Прошу великадушно меня простить, за безграмотность. Вданном случае: ковычки  я действительно убрал. duration - считается правильно, поверьте на слово) проверил (вывел в порт, значения показывает правильно)

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

#include <U8glib.h>
#include <Ultrasonic.h>

int trigPin = 10; //
int echoPin = 11;  //
int ledPin = 9;
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 

void setup(){
  Serial.begin(9600);// включаем порт и назначаем скорость
  pinMode(trigPin,OUTPUT);//назначаем trigPin как выход
  pinMode(echoPin,INPUT);// назначаем echoPin как вход
  digitalWrite(trigPin, LOW);// устанавливаем trigPin изначально в выключенное состояние 
  delay(100);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
}
void loop(){
      int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10); 
      digitalWrite(trigPin, LOW); 
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58;
      Serial.print(cm); 
      Serial.println(" cm"); 
      u8g.setFont(u8g_font_unifont);
      u8g.setPrintPos(0, 20);
      u8g.print(duration);
      delay(1000);
}

 вот что выводит порт:m

 
175 cm
176 cm
174 cm
 
kalapanga
Онлайн
Зарегистрирован: 23.10.2016

А u8g.setPrintPos(0, 0) не пробовали? У Вас картинка не за экраном?

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

Я бы на Вашем месте :

1) проверил соединение

2) проверил правильность инициализации U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI

3) попробовал бы сменить фонт

4) проверил бы реакцию на разные значение ink

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

kalapanga пишет:

А u8g.setPrintPos(0, 0) не пробовали? У Вас картинка не за экраном?

По идее при выводе текста указывается левый нижний угол. Хотя так сделано в библиотеке u8g2, может тут и по-другому.

kalapanga
Онлайн
Зарегистрирован: 23.10.2016

Да, пожалуй дело не в этом. Это левый нижний угол.

Чего-то мне кажется автор потерял, по сравнению со скетчем, где он текст выводил. Я смотрю в примерах к библиотеке весь вывод  между u8g.firstPage() и u8g.nextPage() делается.

Во, в сообщении #21 они были, только стояли не правильно. u8g.firstPage() выше do должно быть

Ghost33
Offline
Зарегистрирован: 07.01.2018
u8g.setFont(u8g_font_unifont);
      u8g.setPrintPos(0, 0);
      u8g.print(duration);
      delay(1000);
      попробовал, все осталось так же. множество точек на экране

 

Ghost33
Offline
Зарегистрирован: 07.01.2018

Ребята помогите, я уже не понимаю почему у меня не получается

 

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

Ghost33 пишет:

Ребята помогите, я уже не понимаю почему у меня не получается

 

Если долго мучиться, что-нить получиться.

void loop(){
      int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58;
      Serial.print(cm);
      Serial.println(" cm");
      u8g.setFont(u8g_font_unifont);
      u8g.setColorIndex(1);
      u8g.setPrintPos(0, 20);
  u8g.firstPage();  
  do {
      u8g.print(duration);
  } while( u8g.nextPage() );
      delay(1000);
}

Вы походу куда-то цикл выкинули. Попробуйте такой луп. Если не получится, то надо начинать сначала: какой дисплей, какой дуин, какое подключение?

Ghost33
Offline
Зарегистрирован: 07.01.2018


#include <SPI.h>
#include <Wire.h>
#include <U8glib.h>
#include <Ultrasonic.h>
 
int trigPin = 10; //
int echoPin = 11;  //
int ledPin = 9;
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
 
 
 
void draw(void) {
  int duration, cm;
  digitalWrite(trigPin, LOW);// посылаем сгнал
  delayMicroseconds(2);// задержка
  digitalWrite(trigPin, HIGH);// выключаем сигнал
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  duration = pulseIn(echoPin, HIGH);
  cm = duration / 58; 
  u8g.setFont(u8g_font_unifont);
  u8g.setPrintPos(0, 20);
  u8g.print(duration);
  Serial.begin(9600);// включаем порт и назначаем скорость
  pinMode(trigPin,OUTPUT);//назначаем trigPin как выход
  pinMode(echoPin,INPUT);// назначаем echoPin как вход
  digitalWrite(trigPin, LOW);// устанавливаем trigPin изначально в выключенное состояние 
  delay(1000);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  }
 
void setup(void) {
  }
 
void loop(void) {
  int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10); 
      digitalWrite(trigPin, LOW); 
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58; 
      Serial.print(cm); 
      Serial.println(" cm"); 
      delay(1000);
      u8g.firstPage(); 
      u8g.setFont(u8g_font_unifont);
      u8g.setPrintPos(0, 20);
      u8g.print(duration);
      u8g.nextPage();
      delay(1000);  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(100);
}
 
 
  
вот при таком коде показания на дисплей стали выводится, равда выводит 10481 или что-то в этом роде
а вот порт показывает 179 см
5N62V
Offline
Зарегистрирован: 25.02.2016

Ghost33 пишет:



 
вот при таком коде показания на дисплей стали выводится, равда выводит 10481 или что-то в этом роде
а вот порт показывает 179 см

Ну так Вы в порт выводите cm = duration / 58;  А на дисплей просто duration. Чего тут удивляться? ;)

Ghost33
Offline
Зарегистрирован: 07.01.2018

при вашем лупе на экран вывелся 0. дисплей на микроконтроллере ssd1306 128х32

Arduino - Mega - китайская, подключениие по  i2c

Ghost33
Offline
Зарегистрирован: 07.01.2018

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

нет я много смотрел инфы в нете, шарился в библиотеке, переписывал код раз 50

так что не нужно меня обвинять в том что я нихочу ничего делать)

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

kalapanga
Онлайн
Зарегистрирован: 23.10.2016

Вы операторы вообще от балды пишете, лишь бы что-то было? Что у Вас делает NextPage перед delay перед do? Уберите! Вот print, который перед этим -работает, а всё, что Вы вынесли в функцию draw - нет. И вставляйте код по правилам, с номерами строк. Как Вам на ошибки-то без этого указать?

Ghost33
Offline
Зарегистрирован: 07.01.2018
#include <SPI.h>
#include <Wire.h>
#include <U8glib.h>
#include <Ultrasonic.h>

int trigPin = 10; //
int echoPin = 11;  //
int ledPin = 9;
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 

 

void draw(void) {
  int duration, cm;
  digitalWrite(trigPin, LOW);// посылаем сгнал
  delayMicroseconds(2);// задержка
  digitalWrite(trigPin, HIGH);// выключаем сигнал
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  duration = pulseIn(echoPin, HIGH);
  cm = duration / 58; 
  u8g.setFont(u8g_font_9x18B);
  u8g.setPrintPos(30, 20);
  u8g.print(duration / 58);
  Serial.begin(9600);// включаем порт и назначаем скорость
  pinMode(trigPin,OUTPUT);//назначаем trigPin как выход
  pinMode(echoPin,INPUT);// назначаем echoPin как вход
  digitalWrite(trigPin, LOW);// устанавливаем trigPin изначально в выключенное состояние 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  delay(100);
  }

void setup(void) {
  }

void loop(void) {
  int duration, cm;
      digitalWrite(trigPin, LOW);// посылаем сгнал
      delayMicroseconds(2);// задержка
      digitalWrite(trigPin, HIGH);// выключаем сигнал
      delayMicroseconds(10); 
      digitalWrite(trigPin, LOW); 
      duration = pulseIn(echoPin, HIGH);
      cm = duration / 58; 
      Serial.print(cm); 
      Serial.println(" cm"); 
      u8g.firstPage(); 
      u8g.setFont(u8g_font_9x18B);
      u8g.setPrintPos(30, 20);
      u8g.print(duration / 58);
      u8g.nextPage();
      do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(100);
}


Вот так заработало))) спасибо всем, указали на ошибки, направили, дали пинка ))))

Спасибо)))) все заработало, выводит одекватные сообщения, правда иногда не прорисовывает цифры, может какаую-то цифру на половину прорисовать. Не подскажите? в чем причина

b707
Онлайн
Зарегистрирован: 26.05.2017

Ghost33 пишет:
иногда не прорисовывает цифры, может какаую-то цифру на половину прорисовать. Не подскажите? в чем причина

Ghost33 пишет:
думаете я не пробовал разобраться в библиотеке? просто так пришел сюда за поиском готового ответа?

Верю, что пробовали. Только видно, что ничего не вышло... В чем причина? - [s]просто вы идиот.[\s] Сорри, но это правда...

Код совершенно безграмотный. Функция draw у вас зачем? В ней мешанина того, что должно быть в setup вперемешку с тем, что потом повторено в loop.

У вас инициализации дисплея вообще нет, а инициализация пинов и сериала оказалась в функции draw в конце луп - дисплей просто обязан глючить, странно, что хоть что-то показывает...

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b707 пишет:

Верю, что пробовали. Только видно, что ничего не вышло... В чем причина? - [s]просто вы идиот.[\s] Сорри, но это правда...

Низя так. :( 

С людями надо помягше.  Особенно с теми, кто сам хоть что-то пытается. Таких вапще мало осталось, их надо лелеять и взращивать.  Не у всех образование профильное, да и в школе информатика не у всех была. Даже я, пьянь распоследняя, это понимаю.

 

Ghost33
Offline
Зарегистрирован: 07.01.2018

Дружище спасибо за ваше мнение. Но идиота вы взеркале можете увидеть!это 1

2. не все родились гениями (как вы)

3. Да я не все понимаю и делаю не правильно(но стараюсь и делаю)

4. Этот раздел создан именно для того чтобы помогать, а не выяснять кто идиот

5. Самоутверждаться необходимо выбрав себе равного противника! Иначе отобрать у ребенка конфетку это не показатель героизма и силы - а как вы выразилсиь Идиотизма!

6.по поводу кода- од написан именно так, по той причине что вот именно так стало работать, просто с функцией loop данный дисплей работать не захотел!

7. Есть какие то идеи как это исправить? поделитесь. 

8. как тут уже заметили не у всех образование профильное (спасибо, дружище) а руки и голова щешутся что-то сделать самостоятельно - не все получаетсяс первого раза и не все понимается как вам кажется очевидные вещи.

9. Сюда пришел не с пустыми руками а обраился к специалистам за разьяснениями и помощью, пытаюсь и пробую что-то сделать сам, не прошу готового решения

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

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

А тебе, Привидение, по делу: брось ты эту монструозную каку U8glib нахрен.  Если только текстровый вывод нужен, используй биб-ку 

https://github.com/greiman/SSD1306Ascii/tree/master/SSD1306Ascii

или ASOLED от Adriano на этом форуме (поиском находится).  Места экономится - куча и результат намайный (я щитаю) 

Вот что с помощью этой биб-ки можно сделать

<a href="http://forum.amperka.ru/threads/%D0%90%D1%85-%D1%8D%D1%82%D0%B8-%D1%81%D1%82%D1%80%D0%B0%D1%88%D0%BD%D1%8B%D0%B5-%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B8%D0%BB%D1%8B%D0%B5-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B.14180/page-3#post-148229">Видео.</a>

В реале мерцанья нет.

Ghost33
Offline
Зарегистрирован: 07.01.2018

Спасибо за статью. Мне вывести не текст нужно а переменную. Это ультразвуковой измеритель - дальномер. Текст то вывести 4 строки, плевое дело

Genri5
Offline
Зарегистрирован: 31.05.2016

DetSimen пишет:

А тебе, Привидение, по делу: брось ты эту монструозную каку U8glib нахрен.  Если только текстровый вывод нужен, используй биб-ку 

https://github.com/greiman/SSD1306Ascii/tree/master/SSD1306Ascii

или ASOLED от Adriano на этом форуме (поиском находится).  Места экономится - куча и результат намайный (я щитаю) 

Вот что с помощью этой биб-ки можно сделать

<a href="http://forum.amperka.ru/threads/%D0%90%D1%85-%D1%8D%D1%82%D0%B8-%D1%81%D1%82%D1%80%D0%B0%D1%88%D0%BD%D1%8B%D0%B5-%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B8%D0%BB%D1%8B%D0%B5-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B.14180/page-3#post-148229">Видео.</a>

В реале мерцанья нет.

Уважаемый, если освоили эту библиотеку, то это не говорит о том, что все остальные - дерьмо.

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Нет.  Не говорит.  И я этого нигде не говорил. 

Ghost33
Offline
Зарегистрирован: 07.01.2018

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

Если поделитесь информацией где это прочесть и попробовать сделать. С буду благодарен оченнь)

Genri5
Offline
Зарегистрирован: 31.05.2016

Ghost33 пишет:

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

Если поделитесь информацией где это прочесть и попробовать сделать. С буду благодарен оченнь)

Да наберите в Google к примеру - "работа с библиотекой U8glib". И вывалится множество информации. Конечно, нужно посидеть, почитать, что-то попробовать, проверить, проанализировать готовые скетчи.. Так, не заметно для себя, прийдет опыт и знания.  :-)

b707
Онлайн
Зарегистрирован: 26.05.2017

Ghost33 пишет:

Спасибо за статью. Мне вывести не текст нужно а переменную.

а что, есть принципиальная разница? - я ж говорю - идиот... а ты обижаешься.