]> vault307.fbx.one Git - RPI-PICO-I2C-LCD.git/blob - README.md
037e92e7c3bc7337c2fbecca47a6272cbdf1d91f
[RPI-PICO-I2C-LCD.git] / README.md
1 # RPI-PICO-I2C-LCD
2 This is a project which adapts code from another user to allow usage of the PCF8574 I2C lcd backpack for either 20x4 or 16x2 lcd screens.
3
4 Credit: https://github.com/dhylands/python_lcd/tree/master/lcd mostly to Dave Hylands for the basic api and lcd driver code.
5
6 This is code adaptded for micropython and the Raspberry Pi PICO specifically.
7
8 Usage:
9 - Download all 3 .py files included.
10 - Open Thonny IDE with the 3 files
11 - Make pin edits or setup changes (See below for options)
12 - DO NOT EDIT FILE NAMES!
13 - In Thonny, go to top menu File => Save Copy => Raspberry Pi Pico and save each .py file to the board.
14 - Switch to the pico_i2c_lcd_test.py and click run. This should be able to initalize the LCD display if settings are right.
15 - If you get errors, see below for a known list of errors and their fixes
16 - Wiring Diagram LCD_bb.jpg! Please look here for a fritzing diagram!
17
18 Requirements:
19 - 3.3 - 5V level translator. This is crucial to encure the lcd recieves the commands properly. I recommend this: https://www.adafruit.com/product/757 (Must be Bi-Directional)
20 - PCF8574 I2C LCD backpack. (These are common to find)
21
22 Setup Changes:
23 - Make sure the top address is set correctly!
24 Use this small program to scan for I2C devices:
25
26 import machine
27 sda=machine.Pin(0)
28 scl=machine.Pin(1)
29 i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
30 print(i2c.scan())
31
32 - Once you get an address through the console (REPL), this will be in decimal and not hex. You can convert the decimal to hex or simply put a decimal address in the setup.
33 in my case, the decimal addr. was 39 which converts to 0x27 in hex.
34 - Ensure that your SCL and SDA pins are selected properly in accordance with the Pico's pin table. These connect to the low voltage side of the translator with a 3.3V Reference from the board. The high voltage side gets a 5V reference from the VBUS pin of the Pico.
35 - Finally, assure the I2C_NUM_ROWS and I2C_NUM_COLS are set properly!
36
37 Usage:
38
39 Printing is simple :lcd.putstr("") This requires a string input! if you want to feed a changing value such as a temperature, it must be: lcd.putstr(str(Variable))
40
41 Errors:
42
43 OSERROR : 5 (This is quite a common error, 5 means I/O error. Check Your connections. This means codes can't be sent or recieved ensure SCL and SDA are properly connected through the level translator!
44
45 Feel to leave comments or questions and I will try to answer them as quick as possible!