128 битное число как?

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

#include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                           //

 const long long  risunok_[]PROGMEM =                     // Создаём массив myImageInRAM содержащий изображение 
{
0b1111111111111111111111111111111111111111111111111111111111111111,
0b1111111111111111111111111111111111111111111111110000011111111111,
0b1111111111111111111111111111111111111110000000000000001111111111,
0b1111111111111111111111111111111111000000000111111111101111111111,
0b1111111111111111111111111111110000000111111111111111100111111111,
0b1111111111111111111111111111100011111111111111111111110011111111,
0b1111111111111111111111111111100111111111111111111111110011111111,
0b1111111111111111111111111111100111111111111111111111111001111111,
0b1111111111111111111111111111100011111111111000111111111001111111,
0b1111111111111111111111011111001011111111110000011111111100111111,
0b1111111111111111111000000111001011111111100000011111111100111111,
0b1111111111111111100001110001101111111111100000011111111110011111,
0b1111111111111110000111111000111111111111111001111111111110011111,
0b1111111111111000111111111110001111111111111111111111111111001111,
0b1111111111100011111111111111000111111111111111111111111111001111,
0b1111111110000111111111111111110011111111111111111111111111101111,
0b1111111000011111111111111111111000111111111111111111111111100111,
0b1111110001111111111111111111111100011111111111111111111000000111,
0b1111000111111111110000011111111110001111111111111100000000000111,
0b1110001111111111110000001111111111000111111110000000001111100111,
0b1110000111111111110000001111111111110011111111111111111111100111,
0b1110000011111111111000011111111111100011111111111111111111101111,
0b1110010001111111111111111111111111000001110111111110000011101111,
0b1110011000111111111111111111111100001001000001111110000011001111,
0b1110011110011111111111111111111000111001000001111111000111001111,
0b1110011111001111111111111111100011111001100001111111111111001111,
0b1110011111100111111111111111001111111001111111111111111111001111,
0b1110011001111011111111111100111110011001111111111111111111011111,
0b1110010000111101111111110111111100001001111111111111111111011111,
0b1110011000111111111111111111111100011001111111111111001110011111,
0b1111011000111111111111111111111100111001100011111100000110011111,
0b1111011111111111111111111111111111111001000001111100000110111111,
0b1111011111111111111111111111111111111001000001111110001100111111,
0b1111011111111111111111111111110111111001100011111111111000111111,
0b1111001111111111111111111111100111111001111111111100000001111111,
0b1111001111111111111111111111000111111001000000000000011111111111,
0b1111001111111111111111111111000111111010000000001111111111111111,
0b1111001111111111110011111111101111111011111111111111111111111111,
0b1111100111111011110011111111111111110011111111111111111111111111,
0b1111110011110001110011111111111111110011111111111111111111111111,
0b1111111001110000110011111001111111100111111111111111111111111111,
0b1111111100110000110011110001111110001111111111111111111111111111,
0b1111111110011001110011110001111100011111111111111111111111111111,
0b1111111111000111110011110011110001111111111111111111111111111111,
0b1111111111100011110011111111100011111111111111111111111111111111,
0b1111111111110001110001111110001111111111111111111111111111111111,
0b1111111111111100110001111000011111111111111111111111111111111111,
0b1111111111111110010001000001111111111111111111111111111111111111,
0b1111111111111111111001001111111111111111111111111111111111111111,
0b1111111111111111111111111111111111111111111111111111111111111111

};      
                                                           
void setup(){                                             
    myOLED.begin();
  for(int j=0;j<50;j++){  
  for(int i=0;i<64;i++){                                        
  myOLED.drawPixel(100-i,5+j,bitRead(pgm_read_dword(&risunok_[j]),i) );                                                         
  }
  } 
}                                                        
void loop(){} 
 
                                    

Прикупил экранчик 128*64, балуюсь с простой и понятной библиотекой. Но в ней нет толком как картинки выводить из побитной разрисовки. Вот пример написал. 64 битное число из озу читает, а из прогмем фокус с ddword не проходит. Как просто оптимизировать код чтоб 0b и , как можно меньше вбивать? 

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

А при чём тут 128-битное числа? В Вашем коде 64-битное.

Кстати, интересно сколькибитное число Вам понадобится, чтобы вывести картинку размером, скажем, 1024х768?

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

Не страдайте ерундой, делайте рисунки в обычном графическом редакторе. Хоть в Paint'е.

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

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

А при чём тут 128-битное числа? В Вашем коде 64-битное.

Кстати, интересно сколькибитное число Вам понадобится, чтобы вывести картинку размером, скажем, 1024х768?

Да, 64 - long long long  ардуино не принимает. Пусть даже 64, уже хорошо. Можно на 2 части делить картинку.

  

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

andriano пишет:

Не страдайте ерундой, делайте рисунки в обычном графическом редакторе. Хоть в Paint'е.

Рисовать не надо. Это готовые через конвертер - 0 и 1 без запятых и 0b

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

Зачем 128-битное число человеку, который для получения 64-х бит читает с флеша 64 битное число 64 раза? Вы хотите ардуину пригрузить по полной, чтобы знала, зачем микросхеме транзисторы нужны?

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

lilik пишет:

long long long  ардуино не принимает. 

А "не ардуино" принимает?

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

sadman41 пишет:
Зачем 128-битное число человеку, который для получения 64-х бит читает с флеша 64 битное число 64 раза? Вы хотите ардуину пригрузить по полной, чтобы знала, зачем микросхеме транзисторы нужны?

Честно, не хотел её обидеть :) Думал, что читает только бит (сразу бах и извлекает).  Но это уже оптимизация, а мне ещё далеко до неё.

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

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

lilik пишет:

long long long  ардуино не принимает. 

А "не ардуино" принимает?

Не знаю, просто думал, что ей ровно, что 0b11111111,0b11111111 ,что 0b1111111111111111

nik182
Offline
Зарегистрирован: 04.05.2015

Прочитайте про union. Поле данных любой длины, к которому можно обращаться простыми байтами, не заморачиваясь на 128.  

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

Ладно, держите, я сегодня пьяный и добрый. Можно и 128, и 256, и даже 1024. Без 0b, но и без запятых (если очень хотите именно с 0b - можно, но надо обсудить литраж и годы выдержки). Для доступа к отдельным байтам есть length() (в байтах) и оператор []. Также я сделал метод печати. В EEPROM (или на экран) пихается точно также, как печатается.

Пример

#include "int100500.h"

int128_t a = "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101";
int128_t b = "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010";

void setup() {
	Serial.begin(9600);
	Serial.print("a=");
	Serial.println(a);
	Serial.print("b=");
	Serial.println(b);
}	
void loop(void) {}

результат работы в мониторе порта

a=01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
b=10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

библиотека int100500

#ifndef INT100500_H
#define INT100500_H

template<size_t totalBits>
struct int_t : public Printable {
	int_t(const char bitField[totalBits]) {
		for (size_t byteNum = 0, bitCount = 0; byteNum < totalBytes; byteNum++) {
			byte & currentByte = buffer[byteNum];
			currentByte = 0;
			for (size_t bitNum = 0; bitNum < 8; bitNum++, bitCount++) {
				if (bitCount < totalBits && bitField[bitCount] != '0') {
					currentByte |= (1 << (7 - bitNum));
				}
			}
		}
	}
	size_t length(void) const { return totalBytes; };
	byte & operator [] (const size_t indx) { return buffer[indx]; }

	size_t printTo(Print& p) const { 
		size_t res = 0;
		for (size_t n = 0; n < totalBytes; n++) {
			const byte currentByte = buffer[n];
			for (size_t bitNum = 0; bitNum < 8; bitNum++) {
				const bool currentBit = currentByte & (1 << (7 - bitNum));
				res += p.print(currentBit);
			}
		}
		return res;
	}

private:
	static const size_t totalBytes = (totalBits + 7) / 8;
	byte buffer[totalBytes];
};

typedef int_t<128> int128_t;
typedef int_t<256> int256_t;
typedef int_t<512> int512_t;
typedef int_t<1024> int1024_t;

#endif	// INT100500_H

Вроде, работает. Но ежели где чего ляпнул - звиняйте.

Green
Offline
Зарегистрирован: 01.10.2015

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

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


И это настораживает.)
Отчего то ткнул на отзывы об Ардуино.ру и вдруг...

 Это Вы Евгений?))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

lilik пишет:

Да, 64 - long long long  ардуино не принимает. Пусть даже 64, уже хорошо. Можно на 2 части делить картинку.

uint64_t, библиотек не нужно.

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

Green пишет:
Это Вы Евгений?))

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

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

Дак сразу видно по "Знаток интернета 3 уровня". С таким уровнем порнуху в интернете не найдешь. А наш-то находит!

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

:--)))

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

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

Ладно, держите, я сегодня пьяный и добрый. Можно и 128, и 256, и даже 1024. Без 0b, но и без запятых (если очень хотите именно с 0b - можно, но надо обсудить литраж и годы выдержки). Для доступа к отдельным байтам есть length() (в байтах) и оператор []. Также я сделал метод печати. В EEPROM (или на экран) пихается точно также, как печатается.

Пример

#include "int100500.h"

int128_t a = "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101";
int128_t b = "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010";

void setup() {
	Serial.begin(9600);
	Serial.print("a=");
	Serial.println(a);
	Serial.print("b=");
	Serial.println(b);
}	
void loop(void) {}

результат работы в мониторе порта

a=01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
b=10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

библиотека int100500

#ifndef INT100500_H
#define INT100500_H

template<size_t totalBits>
struct int_t : public Printable {
	int_t(const char bitField[totalBits]) {
		for (size_t byteNum = 0, bitCount = 0; byteNum < totalBytes; byteNum++) {
			byte & currentByte = buffer[byteNum];
			currentByte = 0;
			for (size_t bitNum = 0; bitNum < 8; bitNum++, bitCount++) {
				if (bitCount < totalBits && bitField[bitCount] != '0') {
					currentByte |= (1 << (7 - bitNum));
				}
			}
		}
	}
	size_t length(void) const { return totalBytes; };
	byte & operator [] (const size_t indx) { return buffer[indx]; }

	size_t printTo(Print& p) const { 
		size_t res = 0;
		for (size_t n = 0; n < totalBytes; n++) {
			const byte currentByte = buffer[n];
			for (size_t bitNum = 0; bitNum < 8; bitNum++) {
				const bool currentBit = currentByte & (1 << (7 - bitNum));
				res += p.print(currentBit);
			}
		}
		return res;
	}

private:
	static const size_t totalBytes = (totalBits + 7) / 8;
	byte buffer[totalBytes];
};

typedef int_t<128> int128_t;
typedef int_t<256> int256_t;
typedef int_t<512> int512_t;
typedef int_t<1024> int1024_t;

#endif	// INT100500_H

Вроде, работает. Но ежели где чего ляпнул - звиняйте.

После работы попробую обязательно.

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

brokly пишет:

lilik пишет:

Да, 64 - long long long  ардуино не принимает. Пусть даже 64, уже хорошо. Можно на 2 части делить картинку.

uint64_t, библиотек не нужно.

Подсказку не понял. Пробовал так:

long long Stroka = pgm_read_uint_64(&risunok_[j]);

ругается...

Green
Offline
Зарегистрирован: 01.10.2015

Буквально недавно использовал uint64_t - как из пистолета).

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

lilik пишет:

После работы попробую обязательно.

...

Втр, 06/04/2021 - 06:11

Чисто из дюбопытства, если не секрет, где Вы находитесь?

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

Смоленская область. Сегодня работа с 7.00 началась.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

lilik пишет:

long long Stroka = pgm_read_uint_64(&risunok_[j]);

ругается...

Правильно. Так и должно быть. А вы хотели добиться чего то другого ?

Скажите, а если у вас спрайт будет шириной 345 бит, вы будете искать переменную на 345 бит ? 

Допустим вы нашли такую переменную и даже считали туда данные из eeprom, дальше вы что будете делать ?

#include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                           //

 const long long  risunok_[]PROGMEM =                     // Создаём массив myImageInRAM содержащий изображение 
{
0b11111111111111111111111111111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111110000011111111111,
0b11111111111111111111111111111111,0b11111110000000000000001111111111,
0b11111111111111111111111111111111,0b11000000000111111111101111111111,
0b11111111111111111111111111111100,0b00000111111111111111100111111111,
0b11111111111111111111111111111000,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111111001111111,
0b11111111111111111111111111111000,0b11111111111000111111111001111111,
0b11111111111111111111110111110010,0b11111111110000011111111100111111,
0b11111111111111111110000001110010,0b11111111100000011111111100111111,
0b11111111111111111000011100011011,0b11111111100000011111111110011111,
0b11111111111111100001111110001111,0b11111111111001111111111110011111,
0b11111111111110001111111111100011,0b11111111111111111111111111001111,
0b11111111111000111111111111110001,0b11111111111111111111111111001111,
0b11111111100001111111111111111100,0b11111111111111111111111111101111,
0b11111110000111111111111111111110,0b00111111111111111111111111100111,
0b11111100011111111111111111111111,0b00011111111111111111111000000111,
0b11110001111111111100000111111111,0b10001111111111111100000000000111,
0b11100011111111111100000011111111,0b11000111111110000000001111100111,
0b11100001111111111100000011111111,0b11110011111111111111111111100111,
0b11100000111111111110000111111111,0b11100011111111111111111111101111,
0b11100100011111111111111111111111,0b11000001110111111110000011101111,
0b11100110001111111111111111111111,0b00001001000001111110000011001111,
0b11100111100111111111111111111110,0b00111001000001111111000111001111,
0b11100111110011111111111111111000,0b11111001100001111111111111001111,
0b11100111111001111111111111110011,0b11111001111111111111111111001111,
0b11100110011110111111111111001111,0b10011001111111111111111111011111,
0b11100100001111011111111101111111,0b00001001111111111111111111011111,
0b11100110001111111111111111111111,0b00011001111111111111001110011111,
0b11110110001111111111111111111111,0b00111001100011111100000110011111,
0b11110111111111111111111111111111,0b11111001000001111100000110111111,
0b11110111111111111111111111111111,0b11111001000001111110001100111111,
0b11110111111111111111111111111101,0b11111001100011111111111000111111,
0b11110011111111111111111111111001,0b11111001111111111100000001111111,
0b11110011111111111111111111110001,0b11111001000000000000011111111111,
0b11110011111111111111111111110001,0b11111010000000001111111111111111,
0b11110011111111111100111111111011,0b11111011111111111111111111111111,
0b11111001111110111100111111111111,0b11110011111111111111111111111111,
0b11111100111100011100111111111111,0b11110011111111111111111111111111,
0b11111110011100001100111110011111,0b11100111111111111111111111111111,
0b11111111001100001100111100011111,0b10001111111111111111111111111111,
0b11111111100110011100111100011111,0b00011111111111111111111111111111,
0b11111111110001111100111100111100,0b01111111111111111111111111111111,
0b11111111111000111100111111111000,0b11111111111111111111111111111111,
0b11111111111100011100011111100011,0b11111111111111111111111111111111,
0b11111111111111001100011110000111,0b11111111111111111111111111111111,
0b11111111111111100100010000011111,0b11111111111111111111111111111111,
0b11111111111111111110010011111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111111111111111111111
};      
                                                           
void setup(){                                             
  myOLED.begin();
  for(int j=0;j<50;j++){  
     for(int i=0;i<32;i++){                                        
        myOLED.drawPixel(100-i,5+j,bitRead(pgm_read_dword(&risunok_[j]),i) );                                                         
     }
     for(int i=0;i<32;i++){                                        
        myOLED.drawPixel(132-i,5+j,bitRead(pgm_read_dword(&risunok_[j+1]),i) );                                                         
     }
  } 
}                                                        
void loop(){} 

Понятия не имею будет это работать или нет, но надеюсь мою мысль вы поймете.

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

brokly пишет:

lilik пишет:

long long Stroka = pgm_read_uint_64(&risunok_[j]);

ругается...

Правильно. Так и должно быть. А вы хотели добиться чего то другого ?

Скажите, а если у вас спрайт будет шириной 345 бит, вы будете искать переменную на 345 бит ? 

Допустим вы нашли такую переменную и даже считали туда данные из eeprom, дальше вы что будете делать ?

#include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                           //

 const long long  risunok_[]PROGMEM =                     // Создаём массив myImageInRAM содержащий изображение 
{
0b11111111111111111111111111111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111110000011111111111,
0b11111111111111111111111111111111,0b11111110000000000000001111111111,
0b11111111111111111111111111111111,0b11000000000111111111101111111111,
0b11111111111111111111111111111100,0b00000111111111111111100111111111,
0b11111111111111111111111111111000,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111111001111111,
0b11111111111111111111111111111000,0b11111111111000111111111001111111,
0b11111111111111111111110111110010,0b11111111110000011111111100111111,
0b11111111111111111110000001110010,0b11111111100000011111111100111111,
0b11111111111111111000011100011011,0b11111111100000011111111110011111,
0b11111111111111100001111110001111,0b11111111111001111111111110011111,
0b11111111111110001111111111100011,0b11111111111111111111111111001111,
0b11111111111000111111111111110001,0b11111111111111111111111111001111,
0b11111111100001111111111111111100,0b11111111111111111111111111101111,
0b11111110000111111111111111111110,0b00111111111111111111111111100111,
0b11111100011111111111111111111111,0b00011111111111111111111000000111,
0b11110001111111111100000111111111,0b10001111111111111100000000000111,
0b11100011111111111100000011111111,0b11000111111110000000001111100111,
0b11100001111111111100000011111111,0b11110011111111111111111111100111,
0b11100000111111111110000111111111,0b11100011111111111111111111101111,
0b11100100011111111111111111111111,0b11000001110111111110000011101111,
0b11100110001111111111111111111111,0b00001001000001111110000011001111,
0b11100111100111111111111111111110,0b00111001000001111111000111001111,
0b11100111110011111111111111111000,0b11111001100001111111111111001111,
0b11100111111001111111111111110011,0b11111001111111111111111111001111,
0b11100110011110111111111111001111,0b10011001111111111111111111011111,
0b11100100001111011111111101111111,0b00001001111111111111111111011111,
0b11100110001111111111111111111111,0b00011001111111111111001110011111,
0b11110110001111111111111111111111,0b00111001100011111100000110011111,
0b11110111111111111111111111111111,0b11111001000001111100000110111111,
0b11110111111111111111111111111111,0b11111001000001111110001100111111,
0b11110111111111111111111111111101,0b11111001100011111111111000111111,
0b11110011111111111111111111111001,0b11111001111111111100000001111111,
0b11110011111111111111111111110001,0b11111001000000000000011111111111,
0b11110011111111111111111111110001,0b11111010000000001111111111111111,
0b11110011111111111100111111111011,0b11111011111111111111111111111111,
0b11111001111110111100111111111111,0b11110011111111111111111111111111,
0b11111100111100011100111111111111,0b11110011111111111111111111111111,
0b11111110011100001100111110011111,0b11100111111111111111111111111111,
0b11111111001100001100111100011111,0b10001111111111111111111111111111,
0b11111111100110011100111100011111,0b00011111111111111111111111111111,
0b11111111110001111100111100111100,0b01111111111111111111111111111111,
0b11111111111000111100111111111000,0b11111111111111111111111111111111,
0b11111111111100011100011111100011,0b11111111111111111111111111111111,
0b11111111111111001100011110000111,0b11111111111111111111111111111111,
0b11111111111111100100010000011111,0b11111111111111111111111111111111,
0b11111111111111111110010011111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111111111111111111111
};      
                                                           
void setup(){                                             
  myOLED.begin();
  for(int j=0;j<50;j++){  
     for(int i=0;i<32;i++){                                        
        myOLED.drawPixel(100-i,5+j,bitRead(pgm_read_dword(&risunok_[j]),i) );                                                         
     }
     for(int i=0;i<32;i++){                                        
        myOLED.drawPixel(132-i,5+j,bitRead(pgm_read_dword(&risunok_[j+1]),i) );                                                         
     }
  } 
}                                                        
void loop(){} 

Понятия не имею будет это работать или нет, но надеюсь мою мысль вы поймете.

#include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
                                                           //

 const long long  risunok_[]PROGMEM =                     // Создаём массив 
{
0b11111111111111111111111111111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111110000011111111111,
0b11111111111111111111111111111111,0b11111110000000000000001111111111,
0b11111111111111111111111111111111,0b11000000000111111111101111111111,
0b11111111111111111111111111111100,0b00000111111111111111100111111111,
0b11111111111111111111111111111000,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111110011111111,
0b11111111111111111111111111111001,0b11111111111111111111111001111111,
0b11111111111111111111111111111000,0b11111111111000111111111001111111,
0b11111111111111111111110111110010,0b11111111110000011111111100111111,
0b11111111111111111110000001110010,0b11111111100000011111111100111111,
0b11111111111111111000011100011011,0b11111111100000011111111110011111,
0b11111111111111100001111110001111,0b11111111111001111111111110011111,
0b11111111111110001111111111100011,0b11111111111111111111111111001111,
0b11111111111000111111111111110001,0b11111111111111111111111111001111,
0b11111111100001111111111111111100,0b11111111111111111111111111101111,
0b11111110000111111111111111111110,0b00111111111111111111111111100111,
0b11111100011111111111111111111111,0b00011111111111111111111000000111,
0b11110001111111111100000111111111,0b10001111111111111100000000000111,
0b11100011111111111100000011111111,0b11000111111110000000001111100111,
0b11100001111111111100000011111111,0b11110011111111111111111111100111,
0b11100000111111111110000111111111,0b11100011111111111111111111101111,
0b11100100011111111111111111111111,0b11000001110111111110000011101111,
0b11100110001111111111111111111111,0b00001001000001111110000011001111,
0b11100111100111111111111111111110,0b00111001000001111111000111001111,
0b11100111110011111111111111111000,0b11111001100001111111111111001111,
0b11100111111001111111111111110011,0b11111001111111111111111111001111,
0b11100110011110111111111111001111,0b10011001111111111111111111011111,
0b11100100001111011111111101111111,0b00001001111111111111111111011111,
0b11100110001111111111111111111111,0b00011001111111111111001110011111,
0b11110110001111111111111111111111,0b00111001100011111100000110011111,
0b11110111111111111111111111111111,0b11111001000001111100000110111111,
0b11110111111111111111111111111111,0b11111001000001111110001100111111,
0b11110111111111111111111111111101,0b11111001100011111111111000111111,
0b11110011111111111111111111111001,0b11111001111111111100000001111111,
0b11110011111111111111111111110001,0b11111001000000000000011111111111,
0b11110011111111111111111111110001,0b11111010000000001111111111111111,
0b11110011111111111100111111111011,0b11111011111111111111111111111111,
0b11111001111110111100111111111111,0b11110011111111111111111111111111,
0b11111100111100011100111111111111,0b11110011111111111111111111111111,
0b11111110011100001100111110011111,0b11100111111111111111111111111111,
0b11111111001100001100111100011111,0b10001111111111111111111111111111,
0b11111111100110011100111100011111,0b00011111111111111111111111111111,
0b11111111110001111100111100111100,0b01111111111111111111111111111111,
0b11111111111000111100111111111000,0b11111111111111111111111111111111,
0b11111111111100011100011111100011,0b11111111111111111111111111111111,
0b11111111111111001100011110000111,0b11111111111111111111111111111111,
0b11111111111111100100010000011111,0b11111111111111111111111111111111,
0b11111111111111111110010011111111,0b11111111111111111111111111111111,
0b11111111111111111111111111111111,0b11111111111111111111111111111111
};      
                                                           
void setup(){                                             
  myOLED.begin();
  for(int j=0;j<100;j=j+2){
     uint64_t Stroka1_2 = pgm_read_dword(&risunok_[j]);
     uint64_t Stroka2_2 = pgm_read_dword(&risunok_[j+1]);  
     for(int i=0;i<32;i++){                                        
        myOLED.drawPixel(64-i,5+j/2,bitRead(Stroka1_2,i) );
        myOLED.drawPixel(96-i,5+j/2,bitRead(Stroka2_2,i) );                                                           
     }
    
  } 
}                                                        
void loop(){} 

 

Да, мысль ясна. Такой вариант, с учётом поправок. Но осевая вертикальная гармонию кубиков рушит )

Изначально я привязался к размеру экрана 128*64, соответственно и картинки такие хочется. А конвертер и "нотепад" имеющуюся картинку вгонят в размер.

lilik
Offline
Зарегистрирован: 19.10.2017
#include <iarduino_OLED.h>                               
#include "int100500.h"
iarduino_OLED myOLED(0x3C);   

int128_t risunok_[] = {"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100001111111111111111",
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000001111111111111111",
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111",
"11111111111111111111111100111111111111111111111111111111111111111111111111111011111111111111111111111111110000000111111111111111",
"11111111111111111111100001110000111111111111111111111111111111111111111111101111111111111111111111111111100000000111111111111111",
"11111111111111111111000011111111110000011111111111111111111111111111111111011111111111111111100000111111100000000011111111111111",
"11111111111111111110011001111111111111111000011111111111111111111111111110111111111111111110000000011111000000000011111111111111",
"11111111111111111110111000111111111111111111111101111111111111111111111101111111111111111100000000011111000000000011111111111111",
"11111111111111111101111100111111111111111111111111111111111111111111111011111111111111111100000000111110000001000001111111111111",
"11111111111111111101111110011111100000011111111111110111111111111111110111111111111111111000000000111100000011100001111111111111",
"11111111111111111011111111001111100000001111111111111111111111111111111111111111111111111000000001111100000111110001111111111111",
"11111111111111111011111111100111100000000111111111111111111111111111101111111111111111111100000111111000000111110000111111111111",
"11111111111111110111111111100111100000000011111111111111111111111111011111111111111111111111111111110000000111110000111111111111",
"11111111111111110111111111110011110000000011111111111111111111111110111111111111111111111111111111110000000111110000111111111111",
"11111111111111101111100111111001111000000011111111111111111111111101111100001111111111111111111111100000000011110000011111111111",
"11111111111111101110000001111100111110000111111111111111111111111011110000000111111111111111111111100000000011100000011111111111"};

void setup() {
myOLED.begin();  
} 
void loop(void) {}

Попробовал так на кусочке картинки. Скетч использует... 169% динамической памяти...

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

lilik пишет:

Но осевая вертикальная гармонию кубиков рушит )

на экране ее не будет - вы об этом не догадываетесь?

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

lilik пишет:
Попробовал так на кусочке картинки. Скетч использует... 169% динамической памяти...

еще бы - при таком раскладе картинка занимает ровно в 8 раз больше места. чем битовый массив

заканчивайте фигней страдать. Картинку можно хранить по байтно, никакие uint64 uint128 тут нафик не нужны

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

lilik пишет:
Скетч использует... 169% динамической памяти...
Так ото ж.

Но, в принципе это легко переделать, чтобы эти строки в PROGMEM жили - изменить в библиотеке надо всего пару строк. Если Вам так приспичило - поменяйте. Будет засирать прогмем, но его побольше.

А вообще, рукоблудие всё это. Но если хочется - не вопрос. Перенести в прогмем несложно.

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

А почему картинка с горизонтальной раскладкой ? В дисплее она из 8 битных вертикальных полосок !

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

b707 пишет:

lilik пишет:

Но осевая вертикальная гармонию кубиков рушит )

на экране ее не будет - вы об этом не догадываетесь?

Конечно ) Её вбивать надо в массив 01(

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

Komandir пишет:

А почему картинка с горизонтальной раскладкой ? В дисплее она из 8 битных вертикальных полосок !

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

Вся тема с самого начала - сплошные гланды через Ж, искать логику тут бессмысленно

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

lilik пишет:

Конечно ) Её вбивать надо в массив 01(

чего чего??? вы совсем с дуба рухнули? Выводите два 64-битных массива подряд - и никакой полоски не будет.

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

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

b707 пишет:

lilik пишет:
Попробовал так на кусочке картинки. Скетч использует... 169% динамической памяти...

еще бы - при таком раскладе картинка занимает ровно в 8 раз больше места. чем битовый массив

заканчивайте фигней страдать. Картинку можно хранить по байтно, никакие uint64 uint128 тут нафик не нужны

Да, что в 8 раз больше это тоже ясно было вчера (не зря же эти 0 и 1 синенькие, а не черненькие))

Картинка и хранится по байтно в тхт, просто хотелось в массив её сразу опп!

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

b707 пишет:
можно выводить обычные байты
Да, не мешайте Вы человеку насладиться прямым переносом нулей и единичек из исходника в экран :-) Вот сейчас мой пример на прогмем переделает и нарисуется :-)

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

lilik пишет:
просто хотелось в массив её сразу опп!
Ну, так с пргмем так и будет. Она не будет в ОЗУ храниться.

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

А мыстурбации не стесняйтесь - все этим грешат.

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

Нет, вы не понимаете (к сожалению). В конвертере есть массив 01010101     ,     но нет 0b01010101,   как нет и  "01010101",

Ну да ладно, ясно.

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

Эмоций много напрасных. Остыньте, вникните, а впрочем не надо )))

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

lilik пишет:

Нет, вы не понимаете (к сожалению). В конвертере есть массив 01010101     ,     но нет 0b01010101,   как нет и  "01010101"

Это Вы мне? Можете пояснить чуть подробнее: 01010101 отличается от 0b01010101 и от "01010101" только отсутствием 0b и кавычек? Для Вас это важно? Но, вроде ж с 0b Вас устраивало? Перестало? Можете толком сказать что Вам, наконец, нужно?

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

lilik пишет:

Нет, вы не понимаете (к сожалению). В конвертере есть массив 01010101     ,     но нет 0b01010101,   как нет и  "01010101",

а это не все равно? - после конвертора кто мешает строчку переделать как надо? - напишите свой конвертер, это будет проще.

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

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

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

Можете толком сказать что Вам, наконец, нужно?

кажется понял.

ТС получает из конвертера биты сплошным потоком:

10010011110000111101110011110001110000000111100000111110000000...

и потом ВРУЧНУЮ!! добавляет в них 0b и запятые для разделения

Поэтому ему хочется иметь число с как можно большей "битностью" - чтобы 0b вставлять пореже :)

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

если я прав в предыдущем сообщении. то вопрос к ТС

А написать простенький скрипт в винде, который преобразует строчку

10010011110000111101110011110001110000000111100000111110000000...

в строчку

0b10010011, 0b11000011, 0b11011100, 0b11110001, 0b11000000, 0b01111....

в голову не приходило? - вы программист или где? - 4 года регистрации на форуме...

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

я трудовик (реально), догадались вы верно. Вбивать вручную нетрудно (особенно для 128 битных чисел), хотелось картинку видеть в массиве)...

Может правда попробовать в "HiAsm" правда надо было?, попробовать. 

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

Не надо ничего вбивать и писать не надо скрипт, в "нотепаде" всё можно преобразовывать оказывается)

lilik
Offline
Зарегистрирован: 19.10.2017
#include <iarduino_OLED.h>                                 // Подключаем библиотеку iarduino_OLED.
iarduino_OLED myOLED(0x3C);                                // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x3C или 0x3D.
//
const uint8_t myImageInROM[] PROGMEM =
{ 128, 56,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b10111111,
  0b11001111,
  0b11100111,
  0b11100111,
  0b11000111,
  0b10011011,
  0b00111111,
  0b11111111,
  0b11111111,
  0b11110111,
  0b11110111,
  0b11110111,
  0b01110111,
  0b01111111,
  0b01111111,
  0b01111111,
  0b01101111,
  0b11101111,
  0b11101111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b10111111,
  0b11111111,
  0b11111111,
  0b11110111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b00011111,
  0b00011111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b10001111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b00011111,
  0b00001111,
  0b00000011,
  0b00000001,
  0b10000000,
  0b10000000,
  0b10000000,
  0b00000000,
  0b00000111,
  0b00111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b10011111,
  0b11100111,
  0b11111001,
  0b11111110,
  0b00011111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00011111,
  0b11111110,
  0b11111100,
  0b11111001,
  0b11100011,
  0b11000111,
  0b10011111,
  0b00111100,
  0b01111000,
  0b11110000,
  0b11100000,
  0b11100000,
  0b11100000,
  0b11100000,
  0b11110001,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b10111111,
  0b11011111,
  0b11101111,
  0b11110111,
  0b00111111,
  0b00011110,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b11011111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111100,
  0b11111100,
  0b11111100,
  0b11111100,
  0b11111110,
  0b01111111,
  0b00111111,
  0b00001111,
  0b00000011,
  0b00000001,
  0b10000000,
  0b10000000,
  0b00000000,
  0b00000000,
  0b00000111,
  0b00011111,
  0b00011111,
  0b00011111,
  0b00000100,
  0b00000000,
  0b00000000,
  0b00000001,
  0b00001111,
  0b01111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b11011111,
  0b11100111,
  0b11111001,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111100,
  0b11111000,
  0b11111000,
  0b11111000,
  0b11111000,
  0b11111100,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111100,
  0b11111001,
  0b11110011,
  0b11000111,
  0b10001111,
  0b00111111,
  0b01111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11101111,
  0b10000111,
  0b10000011,
  0b00000011,
  0b00000111,
  0b00000111,
  0b00001111,
  0b00011111,
  0b11111111,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11001110,
  0b11001100,
  0b11001100,
  0b11001100,
  0b11101110,
  0b11101110,
  0b11101111,
  0b11101111,
  0b11101111,
  0b11100111,
  0b11100111,
  0b11100111,
  0b11100111,
  0b11110111,
  0b11110111,
  0b11110111,
  0b11110111,
  0b11110111,
  0b11110011,
  0b11110011,
  0b11110011,
  0b11110011,
  0b11100011,
  0b11000001,
  0b10000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00011111,
  0b00111111,
  0b01111111,
  0b00111111,
  0b00011110,
  0b00000000,
  0b11000000,
  0b11110000,
  0b11110000,
  0b11110000,
  0b10000000,
  0b00000000,
  0b11000000,
  0b11000000,
  0b11000000,
  0b10000001,
  0b00001111,
  0b01111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01110011,
  0b11111100,
  0b11011111,
  0b00000111,
  0b00000011,
  0b00000011,
  0b00000011,
  0b00000111,
  0b00001111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b10000011,
  0b00000001,
  0b00000001,
  0b00000001,
  0b00000001,
  0b10000011,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b00111000,
  0b00000011,
  0b00000111,
  0b00000111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001110,
  0b00001110,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00001111,
  0b00000111,
  0b11000111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111011,
  0b11100000,
  0b11000000,
  0b11000000,
  0b10000000,
  0b11000000,
  0b11000001,
  0b11100011,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11110000,
  0b11000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000011,
  0b00000011,
  0b00000011,
  0b00000000,
  0b00000000,
  0b00000111,
  0b00001111,
  0b00001111,
  0b00000111,
  0b11000000,
  0b11111000,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111101,
  0b11110111,
  0b11011110,
  0b10111110,
  0b11111100,
  0b11111110,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b00111111,
  0b00111111,
  0b01111111,
  0b01111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b00111111,
  0b00001111,
  0b00000111,
  0b00000001,
  0b00000000,
  0b10000000,
  0b10000000,
  0b10000000,
  0b10011100,
  0b00111110,
  0b00111111,
  0b00011111,
  0b00011111,
  0b00001111,
  0b00000010,
  0b10000000,
  0b10000000,
  0b11000000,
  0b11000000,
  0b10011100,
  0b00011110,
  0b00011111,
  0b00001111,
  0b00000111,
  0b10000010,
  0b11000000,
  0b11000000,
  0b00111000,
  0b11111100,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11110011,
  0b11100000,
  0b11000000,
  0b10000000,
  0b10000000,
  0b10000000,
  0b11000001,
  0b11100011,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111100,
  0b11110000,
  0b10000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00111111,
  0b01111111,
  0b01111111,
  0b00111110,
  0b00000000,
  0b00000000,
  0b11000000,
  0b11110000,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111011,
  0b11110111,
  0b11011111,
  0b01111111,
  0b11111111,
  0b11110000,
  0b11100000,
  0b11000000,
  0b11000000,
  0b11000000,
  0b11100000,
  0b11111111,
  0b11111111,
  0b11111111,
  0b01111111,
  0b00011111,
  0b00001111,
  0b00000011,
  0b00000001,
  0b10000000,
  0b11000000,
  0b11000000,
  0b11000000,
  0b11001110,
  0b00011111,
  0b00011111,
  0b00001111,
  0b00001111,
  0b00000111,
  0b10000000,
  0b11000000,
  0b11000000,
  0b11100000,
  0b11100000,
  0b11100110,
  0b00000111,
  0b00000111,
  0b00000111,
  0b11000011,
  0b11100001,
  0b11110000,
  0b11111000,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111100,
  0b11111011,
  0b11100111,
  0b10011111,
  0b01111111,
  0b11100001,
  0b11000000,
  0b11000000,
  0b10000000,
  0b10000000,
  0b11000000,
  0b11000001,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111000,
  0b11100000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b11000000,
  0b11110000,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,

  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111100,
  0b11111011,
  0b11101111,
  0b11011111,
  0b10111111,
  0b10111111,
  0b00011111,
  0b00000111,
  0b00000011,
  0b00000000,
  0b10000000,
  0b10000000,
  0b10000000,
  0b10000110,
  0b10001111,
  0b11001111,
  0b11001111,
  0b11000111,
  0b11000111,
  0b11000001,
  0b11000000,
  0b11100000,
  0b11100000,
  0b11100000,
  0b11100000,
  0b11100011,
  0b11110011,
  0b11110011,
  0b11110011,
  0b11111001,
  0b11111000,
  0b11111100,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111110,
  0b11111110,
  0b11111110,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111,
  0b11111111

};
//

void setup() {                                             //
  myOLED.begin();                                        // Инициируем работу с дисплеем.
  //
  myOLED.drawImage(myImageInROM, 0, 60, IMG_ROM);     // Выводим картинку myImageInRAM в позицию 36x27, указав, что картинка хранится в оперативной памяти (IMG_RAM).

  //
}                                                          //
void loop() {}                                             //

Сделал как рекомендуют авторы библиотеки для спрайтиков от руки. Жаль что конвертера у них нет от слова совсем. Логика аховая (неужели так во всех библиотеках для экранов ?) - картинку режем на столбики, потом столбик на строчечки, а их в одну строку клеим. Из картинки - фарш в массиве))) Если все так делают, должен быть единый конвертер?

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

lilik пишет:

 картинку режем на столбики, потом столбик на строчечки, а их в одну строку клеим. Из картинки - фарш в массиве))) Если все так делают, должен быть единый конвертер?

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

Да и обычно эти картинки кладутся в отдельный файл и никто их глазами не разглядывает

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

b707 пишет:

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

Да и обычно эти картинки кладутся в отдельный файл и никто их глазами не разглядывает

Использование в HEX - да, а по поводу "глазами не разглядывает, помню, добивал кириллицу в фонты прямо в HEX и, вроде, ничего так получилось:

А вообще, как сделать по-хорошему, я уже писал выше: готовим рисунок в графическом редакторе, потом пишем программу, которая читает рисунок из BMP и преобразует в синтаксис Си. При необходимости со всякими поворотами и отражениями, т.к. структура экране не обязана повторять структуру BMP файла.

Именно так и были подготовлены картинки для этого проекта http://arduino.ru/forum/proekty/bibliotechka-dlya-oled-displeya-ssd1322-4-wire-spi-256x64-16-ottenkov-serogo

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

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

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

Можете толком сказать что Вам, наконец, нужно?

В принципе способ хороший - конвертер в двоичный код, быстрая редактура ручками в "нотепад", скетч с "прогмем"

А хотелось так: картинка - разбита на строки-числа, строка - 128 битное число, читаем-рисуем побитно от числа к числу. И делаем это по возможности быстро, но!, чисел таких нет, про быстро лучше не вспоминать. Итог: картинку в скетче лучше не видеть! )  

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

Я извиняюсь, а чем плоха запись 16-ти байт в бинарном представлении в одну строку? Конечно запятые и B немножко подпортят восприятие, но это такая мелочь...

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

lilik пишет:

А хотелось так: картинка - разбита на строки-числа, строка - 128 битное число, читаем-рисуем побитно от числа к числу. 

Вы вообще читаете, что Вам пишут? Или Вы чисто писатель?

Я не знаю, зачем Вам нужно такое извращение, но мой пример легко (путём замены пары строк) переделывается так, чтобы эти длинные строки жили в прогмем. А после этого можно (заменой ещё нескольких строк) сделать так, чтобы эти длинные строки вообще в од не попадали, но жили в ихсоднике и Вы могли бы их редактировать.

Вы это читали? Все делается и совсем нетрудно.

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

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

lilik пишет:

А хотелось так: картинка - разбита на строки-числа, строка - 128 битное число, читаем-рисуем побитно от числа к числу. И делаем это по возможности быстро...

И желательно, все это - в толстых рукавицах и стоя на коленях на горохе.

В общем, развлечение для тех еще мазохистов.

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

Да, соглашусь пожалуй, но конвертер картинок в массивы к библиотекам не помешал бы). Авторам написал, но вряд ли ответят.

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

lilik пишет:

конвертер картинок в массивы к библиотекам не помешал бы). Авторам написал, но вряд ли ответят.

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