”легкая” библиотека для oled 0.96

мне помнится у нас на старом форуме была тема перлов, я чЁт пропустил, тут еще не создавали, а то вот первый претендент так сказать :grinning:

я проверю позже библу. мне не сложно. хорошо будет если заработает
сейчас функцию drawBitmap тестирую

крутая библиотека. вообще ноль ресурсов ест

#include <OzOLED.h>

const uint8_t myImage[] PROGMEM =  
{0x3C,0x42,0x91,0xA5,0xA1,0xA5,0x91,0x42,0x3C};  

void setup(){

  OzOled.init();  //initialze Oscar OLED display



}

void loop(){
                                         
            OzOled.drawBitmap(myImage,5,6,2,1); 

}

Она их просто ЖРЁТ !!!

подскажите где можно скачать аналогичную прогу?
здесь ссылка нерабочая: www.ikarab.narod.ru/KS0108.html

В онлайн можно генерировать - image2cpp

1 лайк

а standalone бывают как на скриневыше простые?

Написать? Пара дней и 20 тыр. Для “друзей” можно 15. :wink:

та не, поищу сам. только найти ничего не могу. только для 16х2 дисплея есть (

У меня есть в Excel…

И у меня по ссылке http://www.ikarab.narod.ru/KS0108.rar нормально всё скачивается !

1 лайк

Дык там же ж

image

для AVR поди не подойдёт :frowning:

1 лайк

Для вертикальной организации подойдёт …

Но, для надёжности, лучше поискать для AVR :slight_smile:

Кончайте клиентуру отпугивать :slight_smile:

уже качнул и только что проверил. работает идеально после того как cpp файл подкрутил. а то сразу вылазили лишние пиксели. но уже ок все :slight_smile:

работает хорошо. в 16 ричную систему переводит иконку. пару штук создал и такой же результат на экране. и в гугле что то выбор не большой из простого )

пытаюсь вывести число 323.4 на экран но вместо него вижу 323.39. float такое выдает (

#include <Wire.h>
#include <OzOLED.h>


void setup(){

  OzOled.init(); 

}

void loop(){
           float www = 323.4;
          // long sens[] = {11.2, 333.4, -8.5};

              OzOled.clearDisplay();          
              OzOled.printNumber(www,2,5,5);       
    
}

Ужость! И куда смотрит правительство?

а это функция printNumber

byte OzOLED::printNumber(float float_num, byte prec, byte X, byte Y){

	if ( X < 128 )
		setCursorXY(X, Y);

// prec - 6 maximum

	byte num_int = 0;
	byte num_frac = 0;
	byte num_extra = 0;
	
	long d = float_num; // get the integer part
	float f = float_num - d; // get the fractional part
	
	
	if (d == 0 && f < 0.0){
	
		printChar('-');
		num_extra++;
		printChar('0');
		num_extra++;
		f *= -1;
		
	}
	else if (d < 0 && f < 0.0){
	
		num_int = printNumber(d); // count how many digits in integer part
		f *= -1;
		
	}
	else{
	
		num_int = printNumber(d); // count how many digits in integer part
	
	}
	
	// only when fractional part > 0, we show decimal point
	if (f > 0.0){
	
		printChar('.');
		num_extra++;
	
		long f_shift = 1;
		
		if (num_int + prec > 8) 
			prec = 8 - num_int;
		
		for (byte j=0; j<prec; j++){
			f_shift *= 10;
		}

		num_frac = printNumber((long)(f*f_shift)); // count how many digits in fractional part
		
	}
	
	return num_int + num_frac + num_extra;

}

Кашмар!

а почему он float округляет так? что делать