Drive a four line LCD panel from an Arduino. The project started out as a way to drive the LCD to display arbitrary information, but then evolved into a way to tell the time, read and write the EEPROM from the Atmel 328p, and measure voltage. I`m using many existing libraries: the Time library, and the two Controller LCD library. Segments the 40x4 display into 8 segments of 20 chars each. Segment 0 is
column 0, line 0. Segment 1 is column 20 line 0. This allows an easy way to display up to eight different status updates. To write "hello world" in segment 3, you write ":s3helloworld
" to the serial port. Read and write from EEPROM. The 1028 bytes of EEPROM is chunked into 8 segments of 128 bytes each. Segment 0 cannot be written to, which allows for 128 bytes of ROM. To write a segment 3, you index (:i3), then write (:wMySecretMessage
). To read from EEPROM, you index first (:i3), then read the full segment (:r). Voltage monitoring at analog pins can be toggled (:a). Voltages are displayed on the LCD (display shows all six pins in decivolts: 5. 0v is written 50) and written in raw form on serial (relative to 1023. 1023 = 5V, 0=0V) The entire Arduino source code is available as FourLinePanel. pde. It still has some debugging information left in, it prints the value of every new command it receives. This debugging could be removed. It supports a few commands: :t Displays the time :T sets the time :l
Writes message to current position :sN
Writes message starting at segment N :a Turns on analog voltage monitoring on LCD and serial :r Reads 128 bytes from EEPROM at current location :iN Index into segment N of the EEPROM :w
Write data into EEPROM starting at current location This requires one Atmega microcontroller, an LCD panel, two 22pF ceramic capacitors, and one 16Mhz crystal. To...