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

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

Решил трансформировать угольники :-), превратить четверть окружности в прямой угол пока не смог.

///////////// шкала - трансформация треугольника в многоугольник
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);

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

extern uint8_t MediumNumbers[];
void setup()
{
  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
  myOLED.setFont( MediumNumbers);
}

void loop()
{
  myOLED.clrScr(); // очищаем дисплей
  int n = map(analogRead(A0), 0, 1023, 3, 17); //считывание  потенциометра и определение числа вершин c 3 до 17

  for (float i = - PI / 2; i < 3 * PI/2; i = i + 2 * PI / n) { // рисуем многоугольник
    if (i < 3 * PI/2 - PI / n) {
      for (int j = 0; j < 30; j = j + 7) {
        myOLED.drawLine( 66 + cos(i) * (dlina_1 + j), 32 + sin(i) * (dlina_1 + j), 66 + cos(i + 2 * PI / n) * (dlina_1 + j), 32 + sin(i + 2 * PI / n) * (dlina_1 + j));
      }
    }
  }
  if (n < 10) {
    myOLED.printNumI(n, 59 , 22 );
  }
  else {
    myOLED.printNumI(n, 52 , 22 );
  }
  myOLED.update(); delay(t);
}

 

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

Имитация приборной панели. Надо придумать как 4-8 экранов на одну Ардуино посадить.

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

lilik пишет:

 

Надо придумать как 4-8 экранов на одну Ардуино посадить.

А какие проблемы?

Учитывая, что I2C экран можно сконфигурировать на любой из двух адресов, нужно лишь 2-4 I2C интерфейса, что составит 4-8 пинов. Такое имеется на любой Ардуине.

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

Экранчик маленький, не подпаяюсь я как надо :-(, один интерфейс аппаратный на уно. Нашёл такую революционную тут идею:

http://arduino.ru/forum/programmirovanie/podklyuchenie-neskolkikh-i2c-ustroistv-s-odinakovymi-adresami-0

со схемой

Упростить попробую её, вопрос КЗ волнует.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А смысл привязываться к аппаратному I2C ?

На плате дисплеев обычно над один резистор или перемычку переставить и адрес меняется 3C<->3D

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

Komandir пишет:

А смысл привязываться к аппаратному I2C ?

На плате дисплеев обычно над один резистор или перемычку переставить и адрес меняется 3C<->3D

Речь идёт от 2 до 18 штук (чисто гипотетически) с одним адресом и выводом картинок по очереди.

Вот мой вариант:

 

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

тогда уж мультиплексор можно поставить и наращивать скокахошь

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Для этих дисплеев I2C работает только на передачу.

Лучше мультиплексоры на обе линии поставить тогда.

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

DetSimen пишет:

тогда уж мультиплексор можно поставить и наращивать скокахошь

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

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

lilik пишет:

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

Чо?

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

DetSimen пишет:

lilik пишет:

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

Чо?

http://easyelectronics.ru/interface-bus-iic-i2c.html

Картинки на зелёном фоне - 4 случая, вначале статьи.

 

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

lilik пишет:

Имитация приборной панели. Надо придумать как 4-8 экранов на одну Ардуино посадить.

Оооо! Я хочу от него детей вот это вот все на свои проекты! Еще не знаю куда, но куда то надо!

А не затруднит вас все это в кучу собрать и опубликовать на гите? Ну или хотя бы в каком то облаке общедоступном?

svm
Offline
Зарегистрирован: 06.11.2016

lilik пишет:

Komandir пишет:

А смысл привязываться к аппаратному I2C ?

На плате дисплеев обычно над один резистор или перемычку переставить и адрес меняется 3C<->3D

Речь идёт от 2 до 18 штук (чисто гипотетически) с одним адресом и выводом картинок по очереди.

Вот мой вариант:

 

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

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

FoxJone пишет:

Оооо! Я хочу от него детей вот это вот все на свои проекты! Еще не знаю куда, но куда то надо!

Евгений, тут разрешение 128х64, меньше будет коряво. А так смотрите выше - код довольно простой, перетащить его матрицы как нефиг делать. думаю

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Не забываем что линия должна быть типа открытый коллектор !!!

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

b707 пишет:

FoxJone пишет:

Оооо! Я хочу от него детей вот это вот все на свои проекты! Еще не знаю куда, но куда то надо!

Евгений, тут разрешение 128х64, меньше будет коряво. А так смотрите выше - код довольно простой, перетащить его матрицы как нефиг делать. думаю

Да, все скетчи тут, массивы картинок тоже могу выложить, вариации с рисовашками ещё не закончены. Аппаратно все идеи проверить не могу - второй экранчик всё ещё не дойдёт :-(

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

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

Дмитрий, мой следующий планируемый проект - экраны для автоматических моек на модулях с шагом 4 (80*40) или 2,5 (как раз 128*64). Возможно, что и вообще всю голову буду делать на эти мойки, но это не точно. Экраны точно - сейчас там у меня беленький P10 цифры и буквы рисует, но заказчик мечтает на новых мойках красивую мультимедию. Вот туда воткнуть такие шкалы - он аж пищать будет)

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

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

lilik пишет:

Да, все скетчи тут, массивы картинок тоже могу выложить

выкладывайте, если не сложно.попробую ваши шкалы на RGB-матрицы перетащить, у меня как раз есть под рукой массив 128х64

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

Хорошо. Опять по порядку - скетч, массив, картинка?

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

lilik пишет:

Хорошо. Опять по порядку - скетч, массив, картинка?

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

так что второй раз, наверно, все подряд выкладывать не надо... Выложите только то, что еше не выложено.

А еще... Может имеет смысл все собрать вместе, запаковать в архив и выложить на какой-то хостинг? Но это выкладывание в ветку не отменяет.

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

/////////////////// индикатор "кольцевая линейная шкала"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);
extern const unsigned char schkala_A[];
int t = 30; // пауза между считываниями потенциометра
void setup()
{
  myOLED.begin();
  myOLED.invert(1);//инверсия цвета
}

void loop()
{
  int x = map(analogRead(A0), 0, 1023, -1023, 0); //считывание данных с потенциометра и задание положения кадра шкалы
  myOLED.drawBitmap(x, 0, schkala_A, 1024, 64); // рисование кадра шкалы по координате x
  if (x <= -895) {
    myOLED.drawBitmap(x + 1024, 0, schkala_A, 1024, 64); //условие закольцовки шкалы
  }
  ///
  myOLED.clrRoundRect(51, -1, 81, 65); //  прямоугольник многослойный -указатель шкалы
  myOLED.clrRoundRect(50, -1, 80, 65);
  myOLED.clrRoundRect(49, -1, 79, 65);
  ///
  myOLED.update(); delay(t);
}
#include <avr/pgmspace.h>



const unsigned char schkala_A[]PROGMEM = {
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XFC,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XFC,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XFC,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XFC,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XFC,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X18,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,0X00,
0X00,0X00,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,0X00,
0X00,0X08,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X18,0X00,
0X00,0X18,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0XF8,0X00,0X00,
0X00,0X00,0X0F,0X0F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X08,0X1F,0X1F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X00,
0X00,0X00,0X1F,0X1F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X00,0X00,
0X00,0X00,0X1F,0X1F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X1F,0X0F,0X00,0X00,
0XC0,0XC0,0XC0,0XC0,0XE0,0XF0,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XE0,0XE0,0XE0,
0XC0,0XE0,0XE0,0XE0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XE0,0XE0,0XE0,
0XC0,0XE0,0XE0,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XE0,0X60,
0X60,0X60,0X60,0X60,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XF0,0XE0,0X60,
0X60,0X60,0X60,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XE0,0XE0,0XE0,
0XC0,0XC0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XE0,0XE0,0XE0,
0XE0,0XE0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XE0,
0XC0,0XC0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XE0,
0XC0,0XC0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XC0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XE0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X7F,0X7F,0X7C,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XE0,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0X7F,0X7F,0X7F,0X7F,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XE0,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XF0,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFC,0XF0,0XE0,0XE0,0XC0,
0XC0,0XE0,0XE0,0XF0,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,
0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XE0,0XE0,0XC0,0XC0,0XC0,
0XFF,0XFF,0XFF,0XFF,0X03,0X01,0X00,0X00,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF1,0XF1,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X0F,0X07,0X03,0X83,0XC1,0XC1,0XE1,
0XE1,0XE1,0XE1,0XC1,0XC3,0X83,0X03,0X07,0X0F,0X1F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X3F,0X1F,0X0F,0X07,
0X01,0X01,0X00,0X01,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0X07,0X01,0X81,0XC1,0XF0,0XF0,0XF0,
0XF8,0XF8,0XF8,0XF0,0XF0,0XE0,0XC1,0X01,0X03,0X07,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0X07,0X03,0X01,0X81,0XE0,0XF0,0XF0,0XF8,
0XF8,0XF8,0XF0,0XF0,0XF0,0XE0,0X01,0X01,0X03,0X0F,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X0F,0X07,0X01,
0X01,0X01,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0X00,0X00,0X00,0X30,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X0F,0X07,0X07,0X83,0XC3,
0XC1,0XE1,0XE1,0XE1,0XE1,0XE1,0XC1,0XC3,0X03,0X07,0X07,0X1F,0X7F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF1,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0X70,0X30,0X10,0X00,0X00,0X00,0X80,0XE1,0XFB,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X0F,0X07,0X03,0X03,0XC1,0XE1,
0XE1,0XF0,0XF0,0XF0,0XE0,0XE1,0XC1,0XC1,0X03,0X03,0X07,0X1F,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,0X0F,0X07,0X07,0X83,0XC3,0XC1,0XE1,
0XE1,0XE1,0XE1,0XE1,0XC3,0X83,0X03,0X07,0X07,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X03,0X01,0X03,0XF7,0XFF,0XFF,
0XFF,0XFF,0XFF,0X3F,0X0F,0X07,0X07,0X83,0XC3,0XC3,0XC1,0XE1,0XE1,0XC1,0XC3,0X83,
0X03,0X07,0X07,0X0F,0X3F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X81,0XC0,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X81,0X00,0X00,0X00,0X00,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,
0X3F,0X1F,0X1F,0X0F,0X07,0X81,0X00,0X00,0X00,0X00,0XFD,0XFF,0XFF,0XFF,0XFF,0X1F,
0X07,0X03,0X03,0X81,0XE1,0XE0,0XF0,0XF0,0XF0,0XF0,0XF0,0XE0,0XE1,0X81,0X03,0X03,
0X0F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X01,0X01,0X01,0XFF,0XFF,0XFF,
0XFF,0XFF,0X1F,0X07,0X03,0X03,0X83,0XE1,0XE1,0XE0,0XF0,0XF0,0XF0,0XE1,0XE1,0XC1,
0X03,0X03,0X07,0X0F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X7F,0X3F,0X1F,0X1F,0X0F,0X07,0X83,0X00,0X00,0X00,0X00,0XFD,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X0F,0X03,0X01,0X00,0X00,0X00,0XFC,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X7F,0X3F,0X1F,0X0F,0X07,0X07,0X01,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XC0,0X80,0X00,0X80,0X07,0X87,0X83,0XC3,0XC3,0XC3,0XC3,0XC3,
0XC3,0X83,0X87,0X07,0X0F,0X0F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XC1,0XC0,0XC0,0XE0,0XF0,0XF8,0XFC,0XFF,
0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X7F,0X3F,0X1F,0X1F,0X0F,0X07,0X01,0X80,0XC0,0XE0,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X0F,0X0F,0X0F,0X07,0X03,0X00,0X00,0X60,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X1F,0X07,0X03,0X00,0X80,0XE0,0XF8,0XFC,0X00,
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X80,0X80,0X80,0X87,0X87,0XC3,0XC3,
0XC1,0XE1,0XE1,0XE1,0XC1,0XC3,0X83,0X07,0X07,0X0F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X18,0X1F,0X1F,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X1F,0X1E,0X3C,0X3C,0XFC,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X1F,
0X0F,0X03,0X00,0X80,0XE0,0XF8,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XC0,0XC0,0X00,0X03,0X0F,0X0F,
0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X0F,0X07,0X00,0X00,0XC0,0XE0,0XFB,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X80,0X00,0X00,0X0E,0X1F,0X3F,0X3F,0X3F,
0X3F,0X3F,0X3F,0X3F,0X3F,0X1F,0X1F,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X87,0X83,0X81,0X80,0XC0,0XE0,0XF8,0XFC,0XFE,0X02,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0X00,0X00,0X00,0X00,0X02,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XF0,
0XE0,0XF0,0XF8,0XFC,0XFE,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF0,0XF0,0XE0,0XF0,0XF8,0XFC,0XFE,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XE1,0XC0,0XE0,
0XE0,0XF0,0XF8,0XFC,0XFE,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X00,0X80,
0XE0,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,
0XC1,0XC1,0XC0,0XE0,0XF0,0XF8,0XFC,0XFE,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFE,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0X1F,0X1F,0X0F,0X0F,
0X03,0X00,0XC0,0XE0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XE0,
0XE0,0XE0,0XF0,0XF8,0XFC,0XFE,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X7F,0X1F,0X0F,0X03,0X01,0X80,0XC0,0XE0,0XF8,0XFE,0X02,0X00,0X00,0X00,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XE1,0XC0,
0XE0,0XE0,0XF0,0XF8,0XFC,0XFF,0X07,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XBF,0X1F,0X0F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X20,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X0F,0X07,0X03,0XC1,0XC1,0XE0,
0XE0,0XF0,0XF8,0XFC,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0X07,0X07,0X0F,0X1F,0X7F,0X7F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFE,0X7E,0X3C,0X00,0X00,0X00,0X00,0XDB,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XEF,0X80,0X00,0X80,0X80,0X84,0X86,0X87,0X87,0X87,0X87,0X87,0X00,
0X00,0X00,0X00,0X87,0X87,0X8F,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0X0F,0X0F,0X1F,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0X3F,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X24,0XFC,0XFE,
0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X07,0X01,0X00,0X00,
0XF0,0XFC,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0X01,0X00,0X00,0X30,0XF8,0XFC,
0XFC,0XFE,0XFE,0XFE,0XFE,0XFC,0XFC,0X78,0X00,0X00,0X00,0X01,0XB3,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X1F,0X1F,0X1C,0X3C,0XFC,0XFC,0XF8,0XF8,
0XF8,0XF8,0XF8,0XF8,0XFC,0XFC,0X7E,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0X00,0X00,0X00,0X00,0X60,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,
0X3F,0X0F,0X0F,0X07,0X83,0X81,0XC0,0XE0,0XF0,0XF8,0XF8,0XFC,0XFE,0XFE,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0X1F,0X0F,0X0F,0X1F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFC,0XFC,0XF8,
0X30,0X00,0X00,0X01,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XE1,0XC0,0XC0,0XC0,0XC0,0XC3,0XC3,0XC3,0XC3,0XC3,0XC3,0X00,0X00,0X00,0X00,0XC3,
0XC3,0XC3,0XC3,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XF8,0XF0,0XF0,0XE0,0XE1,0XE1,0XE1,0XE1,0XE1,
0XE1,0XE0,0XE0,0XF0,0XF0,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0XF0,0XF0,0XF0,0XE0,0XE1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XE1,0XE0,0XF0,0XF0,0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XF0,0XE0,0XE0,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0XFC,0XF8,0XF8,0XF0,0XF0,0XF0,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF8,0XF8,0XFC,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,
0XC0,0XC0,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF8,0XF8,0XF0,0XF0,0XE0,
0XE0,0XF0,0XF0,0XF0,0XE0,0XF0,0XF0,0XF0,0XF8,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XF0,0XF0,0XE0,0XE1,
0XC1,0XC1,0XC1,0XC1,0XC1,0XC1,0XE1,0XE1,0XE0,0XF0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XE0,0XE0,0XE0,0XE0,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF8,0XF8,0XF0,0XF0,0XE0,
0XE1,0XE1,0XE1,0XE1,0XE1,0XE1,0XE0,0XF0,0XF0,0XF8,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0XF0,0XF0,0XE0,0XE1,0XC1,0XC1,
0XC1,0XC1,0XC1,0XC1,0XE1,0XE0,0XE0,0XF0,0XF0,0XFC,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XC0,0X80,0XC0,0XE7,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFC,0XF0,0XE0,0XE0,0XC1,0XC3,0XC3,0XC3,0XC3,0XC3,0XC3,0XC3,0XC1,
0XE0,0XE0,0XF0,0XF0,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XF0,0XF8,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XF0,0XF8,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XE0,0XE0,0XE0,0XFF,0XFF,0XFF,0XFF,0XF9,0XF0,
0XE0,0XE0,0XF0,0XF0,0XF1,0XF1,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XE1,
0XE1,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XE0,0XE0,0XE0,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XF8,0XF0,0XF0,0XF0,0XE0,0XE1,0XE1,0XE1,0XE1,0XE1,0XE1,0XE0,0XE0,
0XF0,0XF0,0XF8,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XF0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XF0,0XF0,0XF9,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XF0,0XE0,0XE0,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,
0X3F,0X3F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X3F,0X3F
};

 

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

b707 пишет:

lilik пишет:

Хорошо. Опять по порядку - скетч, массив, картинка?

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

так что второй раз, наверно, все подряд выкладывать не надо... Выложите только то, что еше не выложено.

А еще... Может имеет смысл все собрать вместе, запаковать в архив и выложить на какой-то хостинг? Но это выкладывание в ветку не отменяет.

Где то выкладывать... это как будут закончены вариации и аппаратно - завершённое получится что то.

Вы тоже, если получится покажите, как оно смотрится на цветном :-)

Попробую сообразить чего я ещё не выдал сюда. 

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

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

lilik пишет:

Вы тоже, если получится покажите, как оно смотрится на цветном :-)

конечно похвастаю :)

Только оно если будет = хоть и "на цветном", но в моноцвете, у вас битмапы монохромные, раскрашивать их - я не художник :)

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Ещё как вариант , если дисплей поддерживает, использовать fast mode I2C - 400кгц, что в 4ре раза быстрее обычного.

Но возможно придётся в библиотеке покопаться...

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

Имитация индикатора на приводах по типу:

void loop()
{
  int X = map(analogRead(A0), 0, 1000, 0, 9); //считывание данных с потенциометра и определение цифры
 
  if (X != st_X) {// если цифра поменялась - перерисуем её
    funk_1(st_X); funk_2(X);
    st_X = X;
  }
}
/////////////////////////////////////////////////////////
void funk_1(int x) { // убирает цифру старую
  for (int i = 0; i < 16; i=i+2) {
    myOLED.clrScr(); // очищаем дисплей
    if (x != 1 && x != 4) {
      myOLED.drawBitmap(8 - i, 12, schkala_B, 8, 40); // a
    }
    if (x != 5 && x != 6) myOLED.drawBitmap(18, 3 - i, schkala_A, 40, 8); // b
    if (x != 2) myOLED.drawBitmap(71, 3 - i, schkala_A, 40, 8); // c
    if (x != 1 && x != 4 && x != 7)myOLED.drawBitmap(114 + i, 12, schkala_B, 8, 40); // d
    if (x != 1 && x != 3 && x != 4 && x != 5 && x != 7 && x != 9) myOLED.drawBitmap(71, 55 + i, schkala_A, 40, 8); // e
    if (x != 1 && x != 2 && x != 3 && x != 7) myOLED.drawBitmap(18, 55 + i, schkala_A, 40, 8); // f
    if (i < 8 && x != 0 && x != 1 && x != 7) {
      myOLED.drawBitmap(62, 12, schkala_B, 8, 40); // g
    }
    myOLED.update(); delay(t);
  }
}
/////////////////////////
void funk_2(int x) {// выводит цифру новую
  for (int i = 15; i >= 0; i=i-2) {
    myOLED.clrScr(); // очищаем дисплей
    if (x != 1 && x != 4) {
      myOLED.drawBitmap(8 - i, 12, schkala_B, 8, 40); // a
    }
    if (x != 5 && x != 6) myOLED.drawBitmap(18, 3 - i, schkala_A, 40, 8); // b
    if (x != 2) myOLED.drawBitmap(71, 3 - i, schkala_A, 40, 8); // c
    if (x != 1 && x != 4 && x != 7)myOLED.drawBitmap(114 + i, 12, schkala_B, 8, 40); // d
    if (x != 1 && x != 3 && x != 4 && x != 5 && x != 7 && x != 9) myOLED.drawBitmap(71, 55 + i, schkala_A, 40, 8); // e
    if (x != 1 && x != 2 && x != 3 && x != 7) myOLED.drawBitmap(18, 55 + i, schkala_A, 40, 8); // f
    if (i < 8 && x != 0 && x != 1 && x != 7) {
      myOLED.drawBitmap(62, 12, schkala_B, 8, 40); // g
    }
    myOLED.update(); delay(t);
  }
}
#include <avr/pgmspace.h>



const unsigned char schkala_A[]PROGMEM = {
0X08,0X1C,0X3E,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,
0X7F,0X7F,0X7F,0X7F,0X7F,0X3E,0X1C,0X08
};
const unsigned char schkala_B[]PROGMEM = {
0XF8,0XFC,0XFE,0XFF,0XFE,0XFC,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X1F,0X3F,0X7F,0XFF,0X7F,0X3F,0X1F,0X00
};

Картинки сегментов.

    

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

b707 пишет:

конечно похвастаю :)

Только оно если будет = хоть и "на цветном", но в моноцвете, у вас битмапы монохромные, раскрашивать их - я не художник :)

Можно цвет привязать к изменяемой потенциометром переменной - будет "цветоизмерение".

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

Впрочем форма изображения важнее.

Гриша
Offline
Зарегистрирован: 27.04.2014

тема тянет на нормальный проект, может ее переместить но ссылку оставить в песочнице?  

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Дим-мычъ пишет:

Ещё как вариант , если дисплей поддерживает, использовать fast mode I2C - 400кгц, что в 4ре раза быстрее обычного.

Но возможно придётся в библиотеке покопаться...

Вот тут SSD1306 работал на почти 1.5 МГц - http://arduino.ru/forum/programmirovanie/programmnyi-i2c-1-mgts-dlya-16-mgts-ustroistv-dlya-avr - для 128х64 это ~144 FPS

Быстрее уже AVR на 16 МГц не может :-(

Также на 1 МГц можно запустить и аппаратный I2C.

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

FoxJone пишет:

lilik пишет:

Имитация приборной панели. Надо придумать как 4-8 экранов на одну Ардуино посадить.

Оооо! Я хочу от него детей вот это вот все на свои проекты! Еще не знаю куда, но куда то надо!

А не затруднит вас все это в кучу собрать и опубликовать на гите? Ну или хотя бы в каком то облаке общедоступном?

а если взять один большой дисплей дюймов на 7 не лучше будет?

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

7 дюймов и Nextion сразу )) Тут-то цимус в том, что из говна и палок все делается.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Komandir пишет:

Вот тут SSD1306 работал на почти 1.5 МГц - http://arduino.ru/forum/programmirovanie/programmnyi-i2c-1-mgts-dlya-16-mgts-ustroistv-dlya-avr - для 128х64 это ~144 FPS

Быстрее уже AVR на 16 МГц не может :-(

Также на 1 МГц можно запустить и аппаратный I2C.

Очень интересно, спсб

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

andriano пишет:

А какие проблемы?

Известно какие.

... delay(5000); ...

 

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

sadman41 пишет:

7 дюймов и Nextion сразу )) Тут-то цимус в том, что из говна и палок все делается.

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

 

 

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

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

andriano пишет:

А какие проблемы?

Известно какие.

... delay(5000); ...

 

Вот рецепт избавления 

http://arduino.ru/forum/programmirovanie/oledi2c-i-millis-ili-1000mls-24-sek

от Logik(a), попробовал, миллис восстановился.

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

lilik пишет:

Вот рецепт избавления 

Спасибо, буду знать.

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

Баннер на ветру.

///////////// шкала "баннер на ветру"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);

extern uint8_t RusFont[];
int t = 50; // пауза между считываниями потенциометра
int tabl_[10];//массив хранения данных с потенциометра

void setup()
{
  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
  myOLED.setFont(RusFont);

}

void loop()
{
  int h = map(analogRead(A0), 0, 1023, 0, 53); //считывание данных с потенциометра и запись в массив данных на последнюю позицию

  for (int i = 0; i < 10; i++) {
    if (i != 9) {
      tabl_[i] = tabl_[i + 1];
    } else {
      tabl_[i] = h;
    }
  }
  myOLED.clrScr(); // очищаем дисплей

  for (int i = 0; i < 10; i++) {//прорисовка кадра
    //  myOLED.print("Y",i * 13 + 5,tabl_[i]);
    if (i == 0) {
      myOLED.print(" ", i * 13 + 5, tabl_[i]); // надпись
    }
    if (i == 1) {
      myOLED.print("C", i * 13 + 5, tabl_[i]);
    }
    if (i == 2) {
      myOLED.print("G", i * 13 + 5, tabl_[i]);
    }
    if (i == 3) {
      myOLED.print("F", i * 13 + 5, tabl_[i]);
    }
    if (i == 4) {
      myOLED.print("H", i * 13 + 5, tabl_[i]);
    }
    if (i == 5) {
      myOLED.print("N", i * 13 + 5, tabl_[i]);
    }
    if (i == 6) {
      myOLED.print("F", i * 13 + 5, tabl_[i]);
    }
    if (i == 7) {
      myOLED.print("R", i * 13 + 5, tabl_[i]);
    }
    if (i == 8) {
      myOLED.print(" ", i * 13 + 5, tabl_[i]);
    }
    if (i == 9) {
      myOLED.print(" ", i * 13 + 5, tabl_[i]);
    }

    if (i < 9) {
      myOLED.drawLine((i + 1) * 13 + 5, tabl_[i + 1] + 15 , i * 13 + 5, tabl_[i] + 15); // цепочка отрезков между соседними вершинами - линия снизу
    }
    if (i < 9) {
      myOLED.drawLine((i + 1 ) * 13 + 5, tabl_[i + 1] - 15 , i * 13 + 5, tabl_[i] - 15); // цепочка отрезков между соседними вершинами - линия сверху
    }
    if (i == 0 ) {
      myOLED.drawLine((i ) * 13 + 5, tabl_[i] - 15 , i * 13 + 10, tabl_[i] + 0); // линии с левого бока
      myOLED.drawLine((i ) * 13 + 10, tabl_[i] - 0 , i * 13 + 5, tabl_[i] + 15);
    }
     if ( i == 9) {
      myOLED.drawLine((i ) * 13 + 6, tabl_[i] - 15 , i * 13 + 1, tabl_[i] + 0); // линии с правого бока
      myOLED.drawLine((i ) * 13 + 1, tabl_[i] - 0 , i * 13 + 6, tabl_[i] + 15);
    }
  }
  myOLED.update(); delay(t);

}

 

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

Управляем скоростью планет.

///////////// шкала "скорость планет"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);

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

int dlina_1 = 30;//радиус орбиты 1
float i1 = 0.00; // угол поворота планеты на орбите 1
int dlina_2 = 40;
float i2 = 0.00; //
int dlina_3 = 50;
float i3 = 0.00; //
int dlina_4 = 60;
float i4 = 0.00; //

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

}

void loop()
{
  myOLED.clrScr(); // очищаем дисплей

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

  //////// окружности - планеты
  i1 = i1 - PI / 16; if (i1 < -2 * PI) {
    i1 = 0; 
  }
  myOLED.drawCircle( 63 + cos(i1)*dlina_1, 63 + sin(i1)*dlina_1, 3); //
  i2 = i2 - PI / 12; if (i2 < -2 * PI) {
    i2 = 0;
  }
  myOLED.drawCircle( 63 + cos(i2)*dlina_2, 63 + sin(i2)*dlina_2, 4); //
  i3 = i3 - PI / 18; if (i3 < -2 * PI) {
    i3 = 0;
  }
  myOLED.drawCircle( 63 + cos(i3)*dlina_3, 63 + sin(i3)*dlina_3, 3); //
  i4 = i4 - PI / 14; if (i4 < -2 * PI) {
    i4 = 0;
  }
  myOLED.drawCircle( 63 + cos(i4)*dlina_4, 63 + sin(i4)*dlina_4, 5); //
  //////
  for (int i = 1; i < 13; i++) {
    myOLED.drawCircle(63, 63, i); //окружности - светило
  }
  for (int i = 30; i < 63; i = i + 10) {
    myOLED.drawCircle(63, 63, i); //окружности - орбиты
  }
  //////
  myOLED.update(); delay(t);
}

 

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

Шкалы закончились, начался энтертеймент.

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

Komandir пишет:

Вот тут SSD1306 работал на почти 1.5 МГц - http://arduino.ru/forum/programmirovanie/programmnyi-i2c-1-mgts-dlya-16-mgts-ustroistv-dlya-avr - для 128х64 это ~144 FPS

Быстрее уже AVR на 16 МГц не может :-(

Также на 1 МГц можно запустить и аппаратный I2C.

1. По моему опыту i2c на SSD1306 можно разогнать максимум до 2 МГц. Уже 2.1 МГц приводит к жесткому зависанию, из которого - только отключением питания. Проверял на Due.

2. Аппаратный i2c на Atmega328, насколько помню, максимум где-то 880 кГц. При попытке установить больше пачки импульсов сливаются в один (если верить осциллографу).

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

sadman41 пишет:
Шкалы закончились, начался энтертеймент.

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

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

andriano пишет:

Komandir пишет:

Вот тут SSD1306 работал на почти 1.5 МГц - http://arduino.ru/forum/programmirovanie/programmnyi-i2c-1-mgts-dlya-16-mgts-ustroistv-dlya-avr - для 128х64 это ~144 FPS

Быстрее уже AVR на 16 МГц не может :-(

Также на 1 МГц можно запустить и аппаратный I2C.

1. По моему опыту i2c на SSD1306 можно разогнать максимум до 2 МГц. Уже 2.1 МГц приводит к жесткому зависанию, из которого - только отключением питания. Проверял на Due.

2. Аппаратный i2c на Atmega328, насколько помню, максимум где-то 880 кГц. При попытке установить больше пачки импульсов сливаются в один (если верить осциллографу).

А как разогнать? Используемая здесь библиотека ссылается на Wire, а в той есть команда Wire.setClock( 400000L );

Пробовал ставить числа больше, подключая библиотеку. Визуально ничего не менялось. Внутри OLED_I2C не нашёл способа регулировки.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

lilik SCL frequency = CPU Clock frequency / (16 + 2(TWBR) PrescalerValue)

Запись 0 в TWBR = 1 МГц

Или http://arduino.ru/forum/programmirovanie/programmnyi-i2c-1-mgts-dlya-16-mgts-ustroistv-dlya-avr?page=1#comment-572687

максимальная программная скорость на любых пинах (прописывается в первых строках)

для 128х64 нужно в 97 строке 0x03 поменять на 0x07

lilik
Offline
Зарегистрирован: 19.10.2017
void OLED::_initTWI()
{
	// activate internal pullups for twi.
	digitalWrite(SDA, HIGH);
	digitalWrite(SCL, HIGH);
	//delay(1);  // Workaround for a linker bug

	// initialize twi prescaler and bit rate
	__cbi2(TWSR, TWPS0);
	__cbi2(TWSR, TWPS1);
	TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;

	// enable twi module, acks, and twi interrupt
	TWCR = _BV(TWEN) | _BV(TWIE)/* | _BV(TWEA)*/;

Тёмный лес. Нашёл в файлах библиотеки используемой вот этот фрагмент. Строка для изменений 11 ?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Теме я первый плюсанул, есичо)) Слежу)) Еще осталось свечной график нарулить и можно на биржЕ с ардуины спекулировать)) Кстати, удобно для отображения статистики за длинный период с разными таймфреймами

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

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

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

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

///////////////////стрелочный индикатор уровня сигнала
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);

int t = 50; // пауза между считываниями потенциометра
void setup()
{
  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
}

void loop()
{
  myOLED.clrScr(); // очищаем дисплей
  int x = map(analogRead(A0), 0, 1023, 5, 126); //считывание данных с потенциометра и задание координаты стрелки

  myOLED.drawRect(0, 0, 127, 63); //рамка
  myOLED.drawLine(x, 5, x, 58); // стрелка и её положение
  myOLED.drawRect(5, 22, 90, 42); //шкала прогресса
  for (int i = 0; i < 11; i++) {
    myOLED.drawRect(95, 22 + i, 124, 42 - i);
  }
  myOLED.update(); delay(t);
}

 

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

lilik пишет:

А как разогнать? Используемая здесь библиотека ссылается на Wire, а в той есть команда Wire.setClock( 400000L );

Прежде, чем задавать вопрос "как?", следовало бы ответить на вопрос "что?". Т.е. что именно Вы хотите разогнать?

Цитата:

Пробовал ставить числа больше, подключая библиотеку. Визуально ничего не менялось. Внутри OLED_I2C не нашёл способа регулировки.

"Визуально" - это совершенно негодный способ измерения. Для измерения существуют осциллограф, логический анализатор и собственные таймеры Ардуино.

Komandir пишет:

lilik SCL frequency = CPU Clock frequency / (16 + 2(TWBR) PrescalerValue)

Запись 0 в TWBR = 1 МГц

А Вы пробовали?

И к какому выводу пришли?

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

Соответственно, максимальная частота, на которой аппаратный i2c еще сохраняет работоспособность, 16млн/(16 + 2(TWBR=1)) т.е. 16000/18=889кГц.

 

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

lilik пишет:

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

Мне кажется, слишком контрастно. 

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

 

И еще одно замечание: судя по myOLED.upgate(), используется библиотека с буферизацией. Во многих проектах это недопустимо ресурсоемко. Ну и, кроме того, не позволяет подключить к одному контроллеру типа Atmega328 более одного дисплея. 

Отсюда пожелание: переделать все примеры на библиотеку без экранного буфера. К сожалению, это вопрос не чисто механического переноса, т.к. нужно будет адаптировать сами "картинки" под аппаратные возможности дисплея. 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

andriano пишет:

А Вы пробовали?

Сейчас точно не помню насчет железа, но в Proteus точно работает.

С железками мне своих нескольких строк на ASM хватает с головой, плюс на любых ножках ...

andriano пишет:

Отсюда пожелание: переделать все примеры на библиотеку без экранного буфера. К сожалению, это вопрос не чисто механического переноса, т.к. нужно будет адаптировать сами "картинки" под аппаратные возможности дисплея. 

drawCircle без экранного буфера ?