Library for interfacing to Nokia 5110 LCD display (as found on the SparkFun website). Used & amended by D.Leaming, University of Lincoln, December 2021 v01
Bitmap.h@53:200be703ee3b, 2021-12-17 (annotated)
- Committer:
- legstar85
- Date:
- Fri Dec 17 08:26:58 2021 +0000
- Revision:
- 53:200be703ee3b
- Parent:
- 52:09994ce3be7b
Used & amended by D.Leaming, University of Lincoln, December 2021
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
legstar85 | 53:200be703ee3b | 1 | /* * Print String |
legstar85 | 53:200be703ee3b | 2 | * |
legstar85 | 53:200be703ee3b | 3 | * Prints a string of characters to the screen buffer, string is cut off after the 83rd pixel. |
legstar85 | 53:200be703ee3b | 4 | * @param x - the column number (0 to 83) |
legstar85 | 53:200be703ee3b | 5 | * @param y - the row number (0-5) - the display is split into 6 banks - each bank can be considered a row |
legstar85 | 53:200be703ee3b | 6 | * @author - David Leaming - 25574043 |
legstar85 | 53:200be703ee3b | 7 | * @ Date - December 2021 |
legstar85 | 53:200be703ee3b | 8 | * |
legstar85 | 53:200be703ee3b | 9 | * Acknowledgements |
legstar85 | 53:200be703ee3b | 10 | * Craig A. Evans, University of Leeds, TMP102 Library ,Feb 2016 |
legstar85 | 53:200be703ee3b | 11 | * Dr Edmond Nurellari, University of Lincoln, Joystick & N5110 Libraries |
legstar85 | 53:200be703ee3b | 12 | * |
legstar85 | 53:200be703ee3b | 13 | */ |
legstar85 | 53:200be703ee3b | 14 | |
valavanisalex | 38:92fad278c2c3 | 15 | #ifndef BITMAP_H |
valavanisalex | 38:92fad278c2c3 | 16 | #define BITMAP_H |
valavanisalex | 38:92fad278c2c3 | 17 | |
valavanisalex | 38:92fad278c2c3 | 18 | #include <vector> |
valavanisalex | 38:92fad278c2c3 | 19 | |
valavanisalex | 40:c9262294f2e1 | 20 | // Forward declarations |
valavanisalex | 40:c9262294f2e1 | 21 | class N5110; |
valavanisalex | 40:c9262294f2e1 | 22 | |
valavanisalex | 38:92fad278c2c3 | 23 | /** |
valavanisalex | 40:c9262294f2e1 | 24 | * @brief A black & white bitmap that can be rendered on an N5110 screen |
legstar85 | 52:09994ce3be7b | 25 | * |
valavanisalex | 40:c9262294f2e1 | 26 | * |
valavanisalex | 40:c9262294f2e1 | 27 | * @code |
valavanisalex | 40:c9262294f2e1 | 28 | // First declare the pixel map data using '1' for black, |
valavanisalex | 40:c9262294f2e1 | 29 | // or '0' for white pixels |
valavanisalex | 40:c9262294f2e1 | 30 | static int sprite_data[] = { |
valavanisalex | 40:c9262294f2e1 | 31 | 0,0,1,0,0, |
valavanisalex | 40:c9262294f2e1 | 32 | 0,1,1,1,0, |
valavanisalex | 40:c9262294f2e1 | 33 | 0,0,1,0,0, |
valavanisalex | 40:c9262294f2e1 | 34 | 0,1,1,1,0, |
valavanisalex | 40:c9262294f2e1 | 35 | 1,1,1,1,1, |
valavanisalex | 40:c9262294f2e1 | 36 | 1,1,1,1,1, |
valavanisalex | 40:c9262294f2e1 | 37 | 1,1,0,1,1, |
valavanisalex | 40:c9262294f2e1 | 38 | 1,1,0,1,1 |
valavanisalex | 40:c9262294f2e1 | 39 | }; |
valavanisalex | 40:c9262294f2e1 | 40 | |
valavanisalex | 40:c9262294f2e1 | 41 | // Instantiate the Bitmap object using the data above |
valavanisalex | 40:c9262294f2e1 | 42 | Bitmap sprite(sprite_data, 8, 5); // Specify rows and columns in sprite |
valavanisalex | 40:c9262294f2e1 | 43 | |
valavanisalex | 40:c9262294f2e1 | 44 | // We can render the bitmap wherever we want on the screen |
valavanisalex | 40:c9262294f2e1 | 45 | sprite.render(lcd, 20, 6); // x and y locations for rendering |
valavanisalex | 40:c9262294f2e1 | 46 | sprite.render(lcd, 30, 10); |
valavanisalex | 40:c9262294f2e1 | 47 | |
valavanisalex | 40:c9262294f2e1 | 48 | // We can also print its values to the terminal |
valavanisalex | 40:c9262294f2e1 | 49 | sprite.print(); |
valavanisalex | 40:c9262294f2e1 | 50 | * @endcode |
valavanisalex | 38:92fad278c2c3 | 51 | */ |
valavanisalex | 38:92fad278c2c3 | 52 | class Bitmap |
valavanisalex | 38:92fad278c2c3 | 53 | { |
valavanisalex | 38:92fad278c2c3 | 54 | private: |
valavanisalex | 38:92fad278c2c3 | 55 | /** |
valavanisalex | 38:92fad278c2c3 | 56 | * @brief The contents of the drawing, with pixels stored in row-major order |
valavanisalex | 38:92fad278c2c3 | 57 | * @details '1' represents a black pixel; '0' represents white |
valavanisalex | 38:92fad278c2c3 | 58 | */ |
valavanisalex | 38:92fad278c2c3 | 59 | std::vector<int> _contents; |
valavanisalex | 38:92fad278c2c3 | 60 | |
valavanisalex | 38:92fad278c2c3 | 61 | unsigned int _height; ///< The height of the drawing in pixels |
valavanisalex | 38:92fad278c2c3 | 62 | unsigned int _width; ///< The width of the drawing in pixels |
valavanisalex | 38:92fad278c2c3 | 63 | |
valavanisalex | 38:92fad278c2c3 | 64 | public: |
valavanisalex | 40:c9262294f2e1 | 65 | Bitmap(int const *contents, |
valavanisalex | 40:c9262294f2e1 | 66 | unsigned int const height, |
valavanisalex | 40:c9262294f2e1 | 67 | unsigned int const width); |
valavanisalex | 38:92fad278c2c3 | 68 | |
valavanisalex | 38:92fad278c2c3 | 69 | int get_pixel(unsigned int const row, |
valavanisalex | 38:92fad278c2c3 | 70 | unsigned int const column) const; |
valavanisalex | 40:c9262294f2e1 | 71 | |
valavanisalex | 40:c9262294f2e1 | 72 | void print() const; |
valavanisalex | 40:c9262294f2e1 | 73 | |
valavanisalex | 40:c9262294f2e1 | 74 | void render(N5110 &lcd, |
valavanisalex | 40:c9262294f2e1 | 75 | unsigned int const x0, |
valavanisalex | 40:c9262294f2e1 | 76 | unsigned int const y0) const; |
valavanisalex | 38:92fad278c2c3 | 77 | }; |
valavanisalex | 38:92fad278c2c3 | 78 | |
valavanisalex | 40:c9262294f2e1 | 79 | #endif // BITMAP_H |