Jak v C / Arduino pridat funkci do knihovny?

Pavel Kutina hw na prelude.cz
Sobota Leden 20 01:17:49 CET 2024


Zdravim,

resim drobnost, ale trochu si s ni lamu hlavu, v C fakt nejsem moc dobrej.

Mam Arduino, v nem pouzivam jednu ze sdilenych knihoven (standardni 
LiquidCrystal), ale protoze ji pouzivam ve spojeni s Futaba VFD, docela by 
se mi hodilo mit tam rizeny i jas, coz u LCD neni potreba. Tohle jsou 
originaly:

https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.cpp
https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.h

Ja potrebuju pripsat v podstate jednu funkci:

// This will set bright of text
void LiquidCrystal::bright(uint8_t brg) {
  command(LCD_FUNCTIONSET | _displayfunction | brg);
}

Blbe je, ze _displayfunction je v .h definovana jako private, takze se k ni 
z meho kodu nedostanu (nebo to neumim). Resenim je upravit si kod knihovny i 
headeru natvrdo - funkci jsem pripsal, v .h jsem ji deklaroval, pridal jsem 
definice pro nastaveni jasu. V mem kodu ji zavolam jako:

lcd.bright(LCD_BRIGHT25);

A vsechno funguje.

Potud OK. Ale protoze je to jedna se sdilenych knihoven, muze u ni dojit 
casem k nejake uprave a predpokladam, ze pri updatu to moji lokalni upravu 
zahodi. Da se tohle nejak resit? Udelat si vlastni fork a udrzovat to se mi 
uplne nechce - da se ta knihovna nejak rozsirit a dostanu se pak i k te 
privatni promenne? V ni je schovane aktualni nastaveni displeje - pocet 
radku, zpusob komunikace. V podstate jde o stav tri bitu, ale protoze z 
displeje nectu, jen se do nej zapisuje, tak neni jak je zjistit, takze se 
jejich stav udrzuje v pameti.

Napadne nekoho, jak to udelat pokud mozno spravne?

Diky.

Pavel Kutina



Další informace o konferenci Hw-list