Имитация различных шкал на дисплее 128*64

lilik
Offline
Зарегистрирован: 19.10.2017

ua6em пишет:

lilik пишет:

Я серьёзно спросил.., а вы...

а я серьёзно ответил

:-) Не уловил связи между эмоциями и внутренностями.

lilik
Offline
Зарегистрирован: 19.10.2017

Обзор биометрических датчиков Ардуино.

http://digitrode.ru/articles/1523-biometricheskie-datchiki-sovmestimye-s...

Про эмоции нет.

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

lilik пишет:

Обзор биометрических датчиков Ардуино.

http://digitrode.ru/articles/1523-biometricheskie-datchiki-sovmestimye-s...

Про эмоции нет.

если там их нет, но это не значит что их нет в принципе, а связь - эмоции напрямую связаны со здоровьем )))

lilik
Offline
Зарегистрирован: 19.10.2017

Косвенная есть наверное, но тогда проще не инструментально устанавливать эмоцию, а путём тест-опроса испытуемого :-) 

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

lilik пишет:

Обзор биометрических датчиков Ардуино.

http://digitrode.ru/articles/1523-biometricheskie-datchiki-sovmestimye-s...

Про эмоции нет.

Вы не там ищете. Я же Вам написал. что ЕСТЬ, но Вы "поставили штамп" "стёб" и категорически подтвердили его (#299). Ну, стёб, так стеб, я и отвалислся. Если бы Вы вместо того, что штампы расставлять, спросили где и что, я бы сразу ответил, а так ... Вы лучше знаете, чего мне лезть?

Цифровизацией эмоций и преобразованием их в какие-то материальные образы (изображения и т.п.) занимается т.н. "перформативный театр". Их не так мало по всему миру. У них тоже датчики и всё такое. Не знаю, какие контроллеры, но те датчики, что видел к ардуино вполне подключаемы.

Начните читать отсюда, а там уже поймёте как и что искать.

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

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

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

lilik пишет:

Косвенная есть наверное, но тогда проще не инструментально устанавливать эмоцию, а путём тест-опроса испытуемого :-) 

Зачем так сложно?

Надо подходить конструктивно: задаем целевую эмоцию, например, страх, и обеспечиваем эту эмоцию у пациента доступными средствами.

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

lilik пишет:

Косвенная есть наверное, но тогда проще не инструментально устанавливать эмоцию, а путём тест-опроса испытуемого :-) 

Зачем так сложно?

Надо подходить конструктивно: задаем целевую эмоцию, например, страх, и обеспечиваем эту эмоцию у пациента доступными средствами.

Да, здесь всё тонко-процесс измерения величины может существенно изменить её значение.

lilik
Offline
Зарегистрирован: 19.10.2017

ЕвгенийП пишет:

Начните читать отсюда, а там уже поймёте как и что искать.

Читаю, читаю всё одно к слову электроэнцефалограф приводит :-)

https://habr.com/ru/post/536532/

 

 

lilik
Offline
Зарегистрирован: 19.10.2017

Индикатор - тренажёр для тренировки считывания "штрих кодов" без сканера. Может быть полезен противникам чипизации, нумерации, и просто пересчёта людей по пальцам в качестве адаптационного релакса.  

///////////////////индикатор "штрих код"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);

int t = 50; // пауза между считываниями потенциометра
int yn = 45; // координата нижней точки полоски
int yv = 2; // верхней точки полоски
int xx;// переменная хранения предыдущего значения данных с потенциометра
int num = 0; // переменная хранения числа
int k = 1; // счётчик полосок в числе
extern uint8_t SmallFont[];

void setup()
{
  pinMode(11, OUTPUT);
  digitalWrite(11, HIGH);

  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
  myOLED.setFont(SmallFont);
}

void loop()
{
  int x = map(analogRead(A0), 0, 1023, 0, 50); //считывание новых данных с потенциометра

  if (abs(x - xx) > 1) { // если потенциометр крутанули
    myOLED.clrScr(); // очищаем дисплей
    myOLED.drawRect(9, 0, 118, 63); //рамка
    for (int i = 10; i < 118; i = i + 3) { // условие начертания 36 полос
      bool b = random(0, 2); // псевдослучайный выбор цвета полосы-штриха
      num = num + k * b; k = 2 * k; // перевод набора 3 полосок в число 0-7
      if (k == 8) {
        myOLED.printNumI(num, i - 5, 50);  //дублирование 3 штрихов числом соответствующим
        num = 0;
        k = 1;
      }
      if (i % 9 == 1) {
        myOLED.drawLine(i, yn + 10, i, yn); // метка над каждым числом для удобства визуального пересчёта штрихов в числа
      }
      if (b == 1) {
        myOLED.drawLine(i, yn, i, yv); // видимый штрих из 3 отрезков и его положение
        myOLED.drawLine(i + 1, yn, i + 1, yv); //
        myOLED.drawLine(i + 2, yn, i + 2, yv); //
      }
    }
  }
  xx = x; // перевод текущего значения в предыдущее
  myOLED.update(); delay(t);
}

 

lilik
Offline
Зарегистрирован: 19.10.2017

lilik
Offline
Зарегистрирован: 19.10.2017

С голубым свечением экранчики по приятнее. Если бы китайцы ещё ровно клеили дисплеи к платам, было бы совсем хорошо :-)

lilik
Offline
Зарегистрирован: 19.10.2017

Интересно, никто не пробовал отделить дисплей от платки ножичком, что бы поправить?

lilik
Offline
Зарегистрирован: 19.10.2017

/////////////////// индикатор перебора-сдвигания страниц
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);
extern const unsigned char schkala_A[];
extern const unsigned char schkala_B[];
extern const unsigned char schkala_C[];
extern const unsigned char schkala_D[];
extern const unsigned char schkala_E[];
extern const unsigned char schkala_F[];

int t = 30; // пауза между считываниями потенциометра


void setup()
{
  pinMode(11, OUTPUT);
  digitalWrite(11, HIGH);

  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
}

void loop()
{
  int p = map(analogRead(A0), 0, 1023, 1, 383); // считывание потенциометра
  myOLED.clrScr(); // очищаем дисплей
  //////////////////////////
  if (p <= 64) {
    myOLED.drawBitmap(0, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(12, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(24, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(36, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(48, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(60 + p, 0, schkala_F, 64, 64);
  }
  ////////////
  if (p <= 128 && p > 64) {
    myOLED.drawBitmap(0, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(12, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(24, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(36, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(48 + p - 64, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(124, 0, schkala_F, 64, 64);
  }
  ////////////
  if (p <= 192 && p > 128) {
    myOLED.drawBitmap(0, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(12, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(24, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(36 + p - 128, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(124-12, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(124, 0, schkala_F, 64, 64);
  }
////////////
  if (p <= 256 && p > 192) {
    myOLED.drawBitmap(0, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(12, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(24+p-192, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(124-24, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(124-12, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(124, 0, schkala_F, 64, 64);
  }
  ////////////
  if (p <= 320 && p > 256) {
    myOLED.drawBitmap(0, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(12+p-256, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(124-36, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(124-24, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(124-12, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(124, 0, schkala_F, 64, 64);
  }
  ////////////
  if (p <= 384 && p > 320) {
    myOLED.drawBitmap(0+p-320, 0, schkala_A, 64, 64);
    myOLED.drawBitmap(124-48, 0, schkala_B, 64, 64);
    myOLED.drawBitmap(124-36, 0, schkala_C, 64, 64);
    myOLED.drawBitmap(124-24, 0, schkala_D, 64, 64);
    myOLED.drawBitmap(124-12, 0, schkala_E, 64, 64);
    myOLED.drawBitmap(124, 0, schkala_F, 64, 64);
  }
  myOLED.update(); delay(t);
}
#include <avr/pgmspace.h>



const unsigned char schkala_A[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0XFF
};
const unsigned char schkala_B[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0XFF
};
const unsigned char schkala_C[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0XFF
};
const unsigned char schkala_D[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0XFF
};
const unsigned char schkala_E[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0XFF
};
const unsigned char schkala_F[]PROGMEM = {
0XFF,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XC1,0XC1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0X01,0X01,0X01,0X01,0X01,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X0F,0X0F,0X0F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,
0XFF,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X83,0X83,0X83,0X83,
0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X83,0X80,0X80,0X80,0X80,0X80,0XFF
};

Вариант перелистывания страниц, удобно для меню может быть.

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

lilik пишет:

Интересно, никто не пробовал отделить дисплей от платки ножичком, что бы поправить?

У меня два прямоугольных есть - стекляшка на двусторонний скотч приклеена к плате.

man_200
Offline
Зарегистрирован: 29.04.2016

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

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

Чтобы поправить стекло, совсем не обязательно его снимать - достаточно нагреть плату и немного повернуть стекло в нужную сторону

Короче - без фанатизма!

lilik
Offline
Зарегистрирован: 19.10.2017

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

Забавно, что голубого свечения (слева) экран отличается от других размерами во всех трёх осях.

man_200
Offline
Зарегистрирован: 29.04.2016

А голубые - они всегда такие. Радужные, одним словом. У них все через задницу.

lilik
Offline
Зарегистрирован: 19.10.2017

Детский вопрос: как добавить шрифт в библиотеку?

lilik
Offline
Зарегистрирован: 19.10.2017

lilik пишет:

Детский вопрос: как добавить шрифт в библиотеку?

Постиг таинство.Какой красивый фонт-шрифт для часов :-)

lilik
Offline
Зарегистрирован: 19.10.2017

/////////////проверка одновременной работы 3 экранов на 3 разных индикаторах-шкалах
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);
#define disp_1 12 // управляющие дисплееями выводы 
#define disp_2 11
#define disp_3 10


int t = 1000; // пауза между считываниями потенциометра
extern uint8_t BigZif_0_9[];//внебиблиотечные цифры - самопальный шрифт




void setup()
{
  delay(50);
  ////// подключение всех дисплеев
  pinMode(disp_1, OUTPUT);
  digitalWrite(disp_1, HIGH);
  myOLED.begin();
  digitalWrite(disp_1, LOW);
  delay(50);
  //////
  pinMode(disp_2, OUTPUT);
  digitalWrite(disp_2, HIGH);
  myOLED.begin();
  digitalWrite(disp_2, LOW);
  delay(50);
  ////////
  pinMode(disp_3, OUTPUT);
  digitalWrite(disp_3, HIGH);
  myOLED.begin();
  digitalWrite(disp_3, LOW);
  delay(50);
  ////////
  myOLED.setFont(BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт
  myOLED.invert(0);//инверсия цвета


}

void loop()
{
  myOLED. printNumI(random(0, 3), 0, 0); myOLED.printNumI(random(0, 4), 63, 0); //первая пара
  myOLED.drawLine(127, 0, 127, 63);
  dis_3();
  myOLED. printNumI(random(0, 6), 0, 0); myOLED.printNumI(random(0, 10), 63, 0); //вторая пара
  myOLED.drawLine(0, 0, 0, 63);
  dis_2();
  delay(t);



}
////////////////////////////
////////////////////////////
///////////////////////////
void dis_1() { //функции обновления изображений на экранах
  digitalWrite(disp_1, HIGH); myOLED.update(); digitalWrite(disp_1, LOW); myOLED.clrScr(); // очищаем дисплей
}
void dis_2() {
  digitalWrite(disp_2, HIGH); myOLED.update(); digitalWrite(disp_2, LOW); myOLED.clrScr(); // очищаем дисплей
}
void dis_3() {
  digitalWrite(disp_3, HIGH); myOLED.update(); digitalWrite(disp_3, LOW); myOLED.clrScr(); // очищаем дисплей
}
/////////////////////////

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

lilik пишет:

lilik пишет:

Детский вопрос: как добавить шрифт в библиотеку?

Постиг таинство.Какой красивый фонт-шрифт для часов :-)

Для таких вещей нужен и дисплейчик соответствующий.

http://arduino.ru/forum/proekty/bibliotechka-dlya-oled-displeya-ssd1322-4-wire-spi-256x64-16-ottenkov-serogo

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

lilik
Offline
Зарегистрирован: 19.10.2017

Красивый, есть даже зелёные, но стоит от 1400 с гаком - как 10 штук ssd1306 :-)

Попробовал имитацию перекидных табличек-цифр, не понравилось. Пришлось цифры аш в две половинки-фонты преобразовывать.

/////////////проверка одновременной работы 3 экранов на 3 разных индикаторах-шкалах
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);
#define disp_1 12 // управляющие дисплееями выводы 
#define disp_2 11
#define disp_3 10


int t = 1500; // пауза между считываниями потенциометра
extern uint8_t V_BigZif_0_9[];//внебиблиотечные цифры - самопальный шрифт
extern uint8_t N_BigZif_0_9[];//внебиблиотечные цифры - самопальный шрифт
int n=1;//
int nn=0;//


void setup()
{
  delay(50);
  ////// подключение всех дисплеев
  pinMode(disp_1, OUTPUT);
  digitalWrite(disp_1, HIGH);
  myOLED.begin();
  digitalWrite(disp_1, LOW);
  delay(50);
  //////
  pinMode(disp_2, OUTPUT);
  digitalWrite(disp_2, HIGH);
  myOLED.begin();
  digitalWrite(disp_2, LOW);
  delay(50);
  ////////
  pinMode(disp_3, OUTPUT);
  digitalWrite(disp_3, HIGH);
  myOLED.begin();
  digitalWrite(disp_3, LOW);
  delay(50);
  ////////
 myOLED.invert(0);//инверсия цвета


}

void loop()
{
 n++;if(n>9){n=0;}
 /////////////////
myOLED.setFont(V_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(2, 0, 0);myOLED.printNumI(3, 63, 0);//первая пара
myOLED.setFont(N_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(2, 0, 32);myOLED.printNumI(3, 63, 32);//первая пара
myOLED.drawLine(127, 0, 127, 63); 
dis_3();
myOLED.setFont(V_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(5, 0, 0);myOLED.printNumI(n, 63, 0);//вторая пара
myOLED.setFont(N_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(5, 0, 32);myOLED.printNumI(nn, 63, 32);//вторая пара 
myOLED.drawLine(0, 0, 0, 63);
  dis_2();
delay(t/4);
////////////
myOLED.setFont(V_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(2, 0, 0);myOLED.printNumI(3, 63, 0);//первая пара
myOLED.setFont(N_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(2, 0, 32);myOLED.printNumI(3, 63, 32);//первая пара
myOLED.drawLine(127, 0, 127, 63); 
dis_3();
myOLED.setFont(V_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(5, 0, 0);myOLED.printNumI(n, 63, 0);//вторая пара
myOLED.setFont(N_BigZif_0_9);//внебиблиотечные цифры - самопальный шрифт  
myOLED. printNumI(5, 0, 32);myOLED.printNumI(n, 63, 32);//вторая пара 
myOLED.drawLine(0, 0, 0, 63); 
  dis_2();
delay(t);
////////////////  
 nn=n;// 
  

}
////////////////////////////
////////////////////////////
///////////////////////////
void dis_1() { //функции обновления изображений на экранах
  digitalWrite(disp_1, HIGH); myOLED.update(); digitalWrite(disp_1, LOW); myOLED.clrScr(); // очищаем дисплей
}
void dis_2() {
  digitalWrite(disp_2, HIGH); myOLED.update(); digitalWrite(disp_2, LOW); myOLED.clrScr(); // очищаем дисплей
}
void dis_3() {
  digitalWrite(disp_3, HIGH); myOLED.update(); digitalWrite(disp_3, LOW); myOLED.clrScr(); // очищаем дисплей
}
/////////////////////////

 

lilik
Offline
Зарегистрирован: 19.10.2017

А такой вопрос - где можно добыть готовые фонты-шрифты наших букв размером 32,48 на 24,32 например? Возникла фантазия - сделать шильдик носимый из 3 экранчиков, "аккума" и про мини 328. Правда пока минимизация размеров это вопрос.

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

lilik пишет:

А такой вопрос - где можно добыть готовые фонты-шрифты наших букв размером 32,48 на 24,32 например?

фонтов в инете куча, можно сконвертить в свой формат. Только имейте в виду, что один растровый фонт размером 32х24 всего на 30 символов уже займет весь флеш 328-й атмеги

lilik
Offline
Зарегистрирован: 19.10.2017

Не нашёл быстрого способа кроме такого, но попытка вставить рисунок шрифта самого автора ни к чему не привела :-(

http://rinkydinkelectronics.com/t_make_font_file.php

 

Анатолий89
Offline
Зарегистрирован: 16.03.2021

b707 А как вы посчитали? у меня получилось 32*3*30=2880 байт...

Это при условии что 24-это высота символа (3 байта)

 

lilik
Offline
Зарегистрирован: 19.10.2017

Анатолий89 пишет:

 у меня получилось 32*3*30=2880 байт...

 

 

Это да.

Deniskyn
Offline
Зарегистрирован: 13.04.2019

а нет ли часом проекта часов на 2х дисплеях как на скринах выше?

lilik
Offline
Зарегистрирован: 19.10.2017

У меня нет.

lilik
Offline
Зарегистрирован: 19.10.2017

Прикупил себе светодиодный бейдж 11*55 светодиодов по рублю за светодиод. Спросил у продавца где программа управления, он говорит внутри :-)... Ни хрена там нет.  При подключении к ПК бейдж определился как LS32 Custm HID и всё. Поиски по обзорам привели опять на китайский ресурс. Скачал архив, поставил - программа по русски ни бе-бе (о чём честно написано в инструкции), но позволяет вставлять картинки, которые можно создавать редактором встроенным в неё, в который встроена возможность набирать текст, в котором есть кириллица разных размеров и видов. Вывод:какие китайцы молодцы все вместе и не очень по отдельности!

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

Вопрос: как к Ардуино можно подсоединить такой чудный светодиодный экран? Может кто встречал самодельные программы-переходники для ПК? А то очень хочется шкалу какую нибудь сделать :-)

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

Гранаты, по ходу дела, не той системы. Интернеты пишут, что есть модификация бейджа с USB-Serial и там стоит обычный пролифик, который можно обойти, получив директный коннект на UART: http://www.daveakerman.com/?p=1440

lilik
Offline
Зарегистрирован: 19.10.2017

Понял смутно, при соединении вместо com1 появилось usb0. А сом будет наверное если купить 12*48 светодиодов :-)

Всё равно хочется на уровне готовой программы переходник получить.

240265
240265 аватар
Offline
Зарегистрирован: 12.08.2015

man_200 пишет:

А голубые - они всегда такие. Радужные, одним словом. У них все через задницу.

Ты, Миха, какой-то не толлерантный. :))

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

lilik пишет:

Всё равно хочется на уровне готовой программы переходник получить.


Это как? USB к ардуине подключать? Подключите через USB-host, потом с HID имейте долгие и бессмысленные отношения.

На Али брали бейдж? Ссылка осталась?

lilik
Offline
Зарегистрирован: 19.10.2017

https://aliexpress.ru/item/33049006615.html?spm=a2g39.orderlist.0.0.79ab...

Да конечно, я продавца молчание не понял, буду интересоваться дальше.

Жена тоже захотела, но зелёный, и с блютуз, и что б диск с программой был. В общем у другого продавца за 1000 уже купил. Написал про диск с ПО - сказал вышлет и ссылки на архив дал.

 Кстати, что я сам нашёл архив имеет две программы "для просто людей и для профи" :-)  

 

lilik
Offline
Зарегистрирован: 19.10.2017

sadman41 пишет:

Это как? USB к ардуине подключать? Подключите через USB-host, потом с HID имейте долгие и бессмысленные отношения. На Али брали бейдж? Ссылка осталась?

Да, нет конечно. Программа на ПК, включающая по координатам светодиоды бейджа как вариант. 

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

На уровне программ ПК - по гитхабам валяются скрипты на Питоне. Я просто в гугле по 'LS32 Custm HID ' поискал, а с найденных ресурсов попрыгал по ссылкам на реверс протоколов и пр.

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

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

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

А вообще, хотите большую строку - осваивайте большие матрицы 32х16 или 64х32, как в моей теме про DMD ниже :)

lilik
Offline
Зарегистрирован: 19.10.2017

b707 пишет:
Нафига возиться с тупым китайским бейджем, если можно взять такие же матрицы 8х8 - их подключение к ардуино давно отработано, народ массово делает из них бегущие строки, часы, термометры и прочее и прочее. Пара примеров есть у нас в "Проектах", есть такое и у гайвера, да вообще все кому не лень давно освоили такие дисплеи

На max7219 я делал поделки - светодиодный куб и бегущую строку с голосовым вводом. В первой родные матрицы заменял паяными сетками светодиодов, во второй закрывал светофильтром. Как то внешне они мне не очень нравятся. А тут такие изящные смд светодиоды, расположены лесенкой. Такие матрицы найти бы 8*8.

lilik
Offline
Зарегистрирован: 19.10.2017

Чудной продавец! На мою ссылку с ПО написал:

Не могли бы вы Выполнить инструкцию, чтобы попробовать?

Ну что с ним делать!? Как объяснить, что покупатели не должны самостоятельно искать ПО к товару.

Кстати попробовал версию для профи :-)

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

Попробовал ради интереса, подключил УНО. Перезагружает её, потом что то передаёт.

FoxJone
Offline
Зарегистрирован: 19.04.2019

Хм... у меня таких штуков есть несколько, надо будет на досуге поиграться.

И маленьких есть и больших. ПО на всех одно и то же (ага, вон то самое, для профи).

lilik
Offline
Зарегистрирован: 19.10.2017

Схемотехника тоже интересна. У производителя всё патентами закрыто :-)

lilik
Offline
Зарегистрирован: 19.10.2017

Дошёл таки мультиплексор из Китая.

/////////////проверка одновременной работы 16 экранов 
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);
//SDA - A4 //SCL - A5 //ПОДКЛЮЧЕНИЕ ВЫВОДОВ
//HP4067 мультиплексор
//
#define S0 2 //
#define S1 3
#define S2 4
#define S3 5
int t = 1000; // пауза
extern uint8_t BigZif_0_9[];

void setup()
{
  pinMode(S0, OUTPUT); digitalWrite(S0, LOW);
  pinMode(S1, OUTPUT); digitalWrite(S1, LOW);
  pinMode(S2, OUTPUT); digitalWrite(S2, LOW);
  pinMode(S3, OUTPUT); digitalWrite(S3, LOW);
  delay(50);
  ////// подключение всех 16 дисплеев
  for (int i = 0; i < 16; i++) {
    kanal_(i);
    myOLED.begin();
    delay(25);
  }
  myOLED.setFont(BigZif_0_9 );
}

void loop()
{
  for (int i = 0; i < 16; i++) {
    myOLED.clrScr(); // очищаем дисплей
    myOLED.printNumI(i, 1, 1);//выводим номер экрана на экран
    kanal_(i); myOLED.update();
  }
  delay(t);
  for (int i = 0; i < 16; i++) {
    myOLED.clrScr(); // очищаем дисплей
    myOLED.printNumI(16, 1, 1);//выводим число 16 на все экраны
    kanal_(i); myOLED.update(); 
  }
  delay(t);
}
////////////////////////////
////////////////////////////
//функция выбора экрана для передачи изображения
void kanal_(byte k) {
  if (k >= 0 && k < 16) {
    digitalWrite(S0, k % 2);
    digitalWrite(S1, (k % 4) / 2);
    digitalWrite(S2, (k % 8) / 4);
    digitalWrite(S3, k / 8);
   
  }
}

Опробовал на таком скетче. От обновления на 1 экране до обновления на 16 проходит примерно 1,5-2 сек.

lilik
Offline
Зарегистрирован: 19.10.2017

Есть в римских цифрах какая то магия :-)

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

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

lilik пишет:

Есть в римских цифрах какая то магия :-)

ОТОЖ, в уме Папюс так и вертится глядя на оные )))

lilik
Offline
Зарегистрирован: 19.10.2017

Нет в них магии, тоска безысходная, сказала супруга. 

Пересмотрел все её часы за жизнь, и правда, на всех только арабские или штрихи! Как я о ней мало знаю !!!

Макет круговой часовой башни делал с учётом иных магий.

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

Есть круглые индикаторы, к слову.
Но это все бездушно... Моторчик с жужжащим и щелкающим редуктором - вот тема для таких часов.

lilik
Offline
Зарегистрирован: 19.10.2017

sadman41 пишет:
Есть круглые индикаторы, к слову. Но это все бездушно... Моторчик с жужжащим и щелкающим редуктором - вот тема для таких часов.

Я ещё пьезоизлучатель добавил, каждый час фрагмент мелодии отыгрывает. 

Чисто с моторчиком и редуктором - мысль не приходила, с сервоприводами замысел был.