// menu_oled_i2c.h // Affiche un menu sur LCD Oled 1306 l'encodeur rotatif raccordé sur I2C // Affichage/Saisie depuis le menu et retourne le choix de l'utilisateur // Castoo // avril 2020 /* menu_oled_i2c.h - Objet destiné à être utilisé avec Arduino ou ESPxxx. Possibilité de supporter différents LCD mais l'objet a été créée avec un OLED SD1306 Possibilité de supporter différents Encodeurs rotatifs mais l'objet a été créée avec un KY-040 30 pas Création Jean Michel Castille décembre 2019 / castoo.fr Cette bibliothèque est un logiciel libre; Vous pouvez la redistribuer et ou la modifier. Cette bibliothèque est distribuée dans l'espoir qu'elle sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de QUALITÉ MARCHANDE ou ADÉQUATION À UN USAGE PARTICULIER. */ #ifndef menu_oled_i2c_h #define menu_oled_i2c_h // Adresse I2C du 4585 #define adr_i2c_4585 0x3F #include #include "SSD1306Wire.h" // circuit I2C PCF8574 correspondance des broches sur le connecteur I2C LCD // Ce tableau est à revoir suivant schèma réél de la plaquette ! // exemple => menu_oled mes_menus_oled(2, 1, 0, display); //clk en P2 dt en P1 sw en P0 donc broches 6, 5 et 4 // P0 P1 P2 P3 P4 P5 P6 P7 // 4 5 6 NC 11 12 13 14 class menu_oled{ private: SSD1306Wire *_ecran; // Ecran OLED uint8_t PinCLK; // P x sur sortie Clk du selecteur rotatif uint8_t PinDT; // P x sur sortie DT du selecteur rotatif uint8_t PinSW; // P x sur sortie SW du selecteur rotatif int max_ch; // Nb max de chaine du menu String * _ch_menu; // Pointeur sur tableau des chaines public: // Constructeur permet de passer les cnx du bouton de commande et le nom du LCD menu_oled(uint8_t vclk, uint8_t vdt, uint8_t vsw, SSD1306Wire &ecran); // Initialisation du menu permet de passer le nb de choix et un tableau des chaines de choix uint8_t init(int nb_ch_menu, String &ch_menu); // retourne etat du signal CLK bool li_rot_clk(); // retourne etat du signal CLK bool li_rot_dt(); // retourne etat du signal CLK bool li_rot_sw(); private: // Affichage du menu A void aff_menu(int pos); // Selection dans le menu A à l'aide selecteur rotatif uint8_t sel_menu(int max); }; #endif