Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ------------------------------------------------------------------------------------------------------------- //
- // --- LcdBigDigit v0.0.4 beta by Tomasz Majcher (10.10.2018) -------------------------------------------------- //
- // --- email: [email protected] ----------------------------------------------------- //
- // --- optymalizacja dla wyświetlacza 20x4 ----------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------- //
- class LcdBigDigit //
- { //
- // --- prywatne klasy BigDigit ----------------------------------------------------------------------------- //
- private: //
- // --- definicje nowych znaków ------------------------------------------------------------------------- //
- byte LGc[8] = { B00111, B01111, B11111, B11111, B11111, B11111, B11111, B11111 }; // lewy górny ----- //
- byte LDc[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111 }; // lewy dolny ----- //
- byte PGc[8] = { B11100, B11110, B11111, B11111, B11111, B11111, B11111, B11111 }; // prawy górny ---- //
- byte PDc[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100 }; // prawy dolny ---- //
- byte UDb[8] = { B11111, B11111, B11111, B11111, B11111, B00000, B00000, B00000 }; // górny 1/2 ------ //
- byte DDb[8] = { B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111 }; // dolny 1/2 ------ //
- byte blk[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; // blok pełny ----- //
- byte emp[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000 }; // blok pusty ----- //
- //
- // --- wskaźnik do obiektu lcd klasy LiquidCrystal_I2C ----------------------------------------------------- //
- LiquidCrystal_I2C *lcd; // wskaźnik do LC --------------------- //
- //
- // --- publiczne klasy BigDigit ---------------------------------------------------------------------------- //
- public: //
- // ----------------------------------------------------------------------------------------------------- //
- // --- konstruktor klasy ------------------------------------------------------------------------------- //
- // ----------------------------------------------------------------------------------------------------- //
- LcdBigDigit() //
- { //
- //
- } //
- // ----------------------------------------------------------------------------------------------------- //
- void INIT(LiquidCrystal_I2C *_lcd) //
- { //
- lcd = _lcd; // przypisz do wskaznika w klasie // //
- lcd -> createChar(0,LGc); // 0 -> lewy górny narożnik ------------ //
- lcd -> createChar(1,LDc); // 1 -> lewy dolny narożnik ------------ //
- lcd -> createChar(2,PGc); // 2 -> prawy górny narożnik ----------- //
- lcd -> createChar(3,PDc); // 3 -> prawy dolny narożnik ----------- //
- lcd -> createChar(4,UDb); // 4 -> górny pół-blok ----------------- //
- lcd -> createChar(5,DDb); // 5 -> dolny pół-blok ----------------- //
- lcd -> createChar(6,blk); // 6 -> pełny blok --------------------- //
- lcd -> createChar(7,emp); // 7 -> pusty blok --------------------- //
- } //
- // --- Duża liczba 0 ----------------------------------------------------------------------------------- //
- void Liczba0(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ------------------------ //
- lcd->write(0); // lewy górny narożnk ------------------ //
- lcd->write(4); // kropa górna ------------------------- //
- lcd->write(2); // prawy górny narożnik ---------------- //
- lcd->setCursor(x,y+1); // ustaw kursor ------------------------ //
- lcd->write(6); // pełny 5x8 --------------------------- //
- lcd->write(7); // pusty 5x8 --------------------------- //
- lcd->write(6); // pełny 5x8 --------------------------- //
- lcd->setCursor(x,y+2); // ustaw kursor ------------------------ //
- lcd->write(1); // lewy dolny narożnik ----------------- //
- lcd->write(5); // kropa dolna ------------------------- //
- lcd->write(3); // prawy dolny narożnik ---------------- //
- } //
- // --- Duża liczba 1 ----------------------------------------------------------------------------------- //
- void Liczba1(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(4); // górna kropa ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->setCursor(x,y+1); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->setCursor(x,y+2); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- } //
- // --- Duża liczba 2 ----------------------------------------------------------------------------------- //
- void Liczba2(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(5); // kropa dolna ------------------------ //
- } //
- // --- Duża liczba 3 ----------------------------------------------------------------------------------- //
- void Liczba3(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(3); // prawy dolny narożnik --------------- //
- } //
- // --- Duża liczba 4 ----------------------------------------------------------------------------------- //
- void Liczba4(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(1); // lewy dolny narożnik ---------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- } //
- // --- Duża liczba 5 ----------------------------------------------------------------------------------- //
- void Liczba5(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(1); // lewy dolny narożnik ---------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- } //
- // --- Duża liczba 6 ----------------------------------------------------------------------------------- //
- void Liczba6(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(0); // lewy górny narożnk ----------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(1); // lewy dolny narożnik ---------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(3); // prawy dolny narożnik --------------- //
- } //
- // --- Duża liczba 6 ----------------------------------------------------------------------------------- //
- void Liczba7(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- } //
- // --- Duża liczba 8 ----------------------------------------------------------------------------------- //
- void Liczba8(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(0); // lewy górny narożnk ----------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(1); // lewy dolny narożnik ---------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(3); // prawy dolny narożnik --------------- //
- } //
- // --- Duża liczba 9 ----------------------------------------------------------------------------------- //
- void Liczba9(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(0); // lewy górny narożnk ----------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->write(2); // prawy górny narożnik --------------- //
- lcd->setCursor(x, y+1); // ustaw kursor ----------------------- //
- lcd->write(1); // lewy dolny narożnik ---------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(6); // pełny 5x8 -------------------------- //
- lcd->setCursor(x, y+2); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(5); // kropa dolna ------------------------ //
- lcd->write(3); // prawy dolny narożnik --------------- //
- } //
- // ----------------------------------------------------------------------------------------------------- //
- void Dwukropek(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->setCursor(x,y+1); // ustaw kursor ----------------------- //
- lcd->write(4); // kropa górna ------------------------ //
- lcd->setCursor(x,y+2); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- } //
- // ----------------------------------------------------------------------------------------------------- //
- void Kropka(uint_fast8_t *x, uint_fast8_t *y) //
- { //
- lcd->setCursor(x,y); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->setCursor(x,y+1); // ustaw kursor ----------------------- //
- lcd->write(7); // pusty 5x8 -------------------------- //
- lcd->setCursor(x,y+2); // ustaw kursor ----------------------- //
- lcd->write(5); // kropa dolna ------------------------ //
- } //
- // ----------------------------------------------------------------------------------------------------- //
- void WyswietlCyfre(uint_fast8_t *x, uint_fast8_t *y, uint_fast8_t numer) //
- { //
- // --- sprawdz czy liczba miesci sie na wyswietlaczu ------------------------------------------------- //
- if(x > 17) x = 17; // jesli pozycja x większa niż 17, ustaw maksymalną ------- //
- if(y > 1) y = 1; // jesli pozycja y wieksza niz 1 , ustaw maksymalna ------- //
- // --- sprawdz jaka cyfre wyswietlic ----------------------------------------------------------------- //
- switch (numer) //
- { //
- case 0: Liczba0(x,y); break; //
- case 1: Liczba1(x,y); break; //
- case 2: Liczba2(x,y); break; //
- case 3: Liczba3(x,y); break; //
- case 4: Liczba4(x,y); break; //
- case 5: Liczba5(x,y); break; //
- case 6: Liczba6(x,y); break; //
- case 7: Liczba7(x,y); break; //
- case 8: Liczba8(x,y); break; //
- case 9: Liczba9(x,y); break; //
- } //
- } //
- // ----------------------------------------------------------------------------------------------------- //
- void WyswietlCzas(uint8_t tablica[4]) //
- { //
- static bool flaga = false; // flaga zmiany : na . --------------- //
- int x = 2; // pozycja x ------------------------- //
- int y = 0; // pozycja y ------------------------- //
- // --- wyswietl pierwsze 2 cyfry z tablicy --------------------------------------------------------- //
- WyswietlCyfre(x , y, tablica[0]); //
- WyswietlCyfre(x+4, y, tablica[1]); //
- // --- w zależności od stanu na fladze FALSE/TRUE wyświetl dwukropkę lub kropkę -------------------- //
- switch (flaga) //
- { //
- case 0 : { Dwukropek(x+8,y); flaga = true; break; } // dwukropek i przestaw flagę -------- //
- case 1 : { Kropka(x+8, y); flaga = false; break; } // kropka i przestaw flagę ----------- //
- default: break; //
- } //
- // --- wyswietl ostatnie 2 cyfry z tablicy --------------------------------------------------------- //
- WyswietlCyfre(x+10,y, tablica[2]); //
- WyswietlCyfre(x+14,y, tablica[3]); //
- // koniec ------------------------------------------------------------------------------------------ //
- } //
- }; //
- // --- END FILE ------------------------------------------------------------------------------------------------ //
Advertisement
Add Comment
Please, Sign In to add comment