Jak v C / Arduino pridat funkci do knihovny?

Pavel Hudeček edizon na seznam.cz
Sobota Leden 20 07:53:32 CET 2024


Jestli je to normální C++, tak udělat vlastní knihovnu, která přes 
dědičnost rozšíří tu původní o požadované metody.

Nějak takhle:

soubor dispLcdVfd.h ------

#include "LiquidCrystal.h"

class dispLcdVfd : LiquidCrystal {

public:
     void bright(uint8_t brg);

}

soubor dispLcdVfd.cpp -----

#include "dispLcdVfd.h"

void dispLcdVfd::bright(uint8_t brg) {
     command(LCD_FUNCTIONSET | _displayfunction | brg);
}

PH

Dne 20.01.2024 v 1:17 Pavel Kutina napsal(a):
> 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?


Další informace o konferenci Hw-list