LCD3WIre + функция стирания конкретной строки
- Войдите на сайт для отправки комментариев
Пт, 07/02/2014 - 23:54
Доброго времени суток.
Использую LCD3Wire в своём проекте СМС сигнализации и потребовалось не очищать дисплей полность , конкретную строку.
Добавил функцию clearRow(int line_num).
Если кто-то заинтересуется .
Если будут поправки учту.
LCD3Wire.h
#ifndef LCD3Wire_h #define LCD3Wire_h #include "Print.h" #include <inttypes.h> class LCD3Wire : public Print { public: LCD3Wire(int lcd_lines, int dat_pin, int str_pin, int clk_pin); void commandWrite(int value); void init(); virtual size_t write(uint8_t); //non-core--------------- void clear(); void cursorTo(int line_num, int x); void clearRow(int line_num); // Очистка строки void leftScroll(int chars, int delay_time); //end of non-core-------- private: void _pushByte(int value, bool command); void _pushNibble(int nibble, bool command); void _pushOut(int value); }; #endif
В LCD3Wire.cpp
// Стирание одной строки void LCD3Wire::clearRow(int line_num) { cursorTo(line_num,0); print(" "); cursorTo(line_num,0); }
а чем лучше чем i2c расширители ? просто интересно
Входы экономятся не 6 , а 3
где 6? в i2c расширителях?
При использовании расширителя i2c дисплей подключается по двум проводам. Без оного по 7. Но при этом естественно требуется больше процессорного времени. Tрех проводное подключение вроде быстрее, там дисплей работает в восьмибитном режиме, поэтому для выполнения одного и того же действия процессору нужно передать в два раза меньше данных.
При использовании аппаратного I2C процессорное время вообше не используется так как I2С аппаратный. В то время как если ваша библиотека не использует аппаратный SPI тратится то самое процессорное время.
Конечно, только я не видел ни одной i2c библиотеки для дисплеев без задержек, которые неизбежны при такой связке. И, знаете ли, они там ни разу не аппаратные. А "нашу" библиотеку, я, честно говоря не изучал :(