]> vault307.fbx.one Git - RPI-PICO-I2C-LCD.git/blobdiff - README.md
Create LICENSE.md
[RPI-PICO-I2C-LCD.git] / README.md
index 037e92e7c3bc7337c2fbecca47a6272cbdf1d91f..ea6bd6ee713119c6399c355753663b1ff55a2187 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@ This is a project which adapts code from another user to allow usage of the PCF8
 
 Credit: https://github.com/dhylands/python_lcd/tree/master/lcd mostly to Dave Hylands for the basic api and lcd driver code.
 
 
 Credit: https://github.com/dhylands/python_lcd/tree/master/lcd mostly to Dave Hylands for the basic api and lcd driver code.
 
+Project: Check it out for a full step-by-setp guide on Instructables: https://www.instructables.com/RPI-Pico-I2C-LCD-Control/ 
+
 This is code adaptded for micropython and the Raspberry Pi PICO specifically.
 
 Usage: 
 This is code adaptded for micropython and the Raspberry Pi PICO specifically.
 
 Usage: 
@@ -10,8 +12,8 @@ Usage:
 - Open Thonny IDE with the 3 files
 - Make pin edits or setup changes (See below for options) 
 - DO NOT EDIT FILE NAMES!
 - Open Thonny IDE with the 3 files
 - Make pin edits or setup changes (See below for options) 
 - DO NOT EDIT FILE NAMES!
-- In Thonny, go to top menu File => Save Copy => Raspberry Pi Pico and save each .py file to the board.
-- Switch to the pico_i2c_lcd_test.py and click run. This should be able to initalize the LCD display if settings are right.
+- In Thonny, go to top menu File => Save Copy => Raspberry Pi Pico and save each file to the board with the same name as downloaded and with a .PY extension when saving it to the board. 
+- Switch to the pico_i2c_lcd_test.py (this is the main file) and click run. This should be able to initalize the LCD display if settings are right.
 - If you get errors, see below for a known list of errors and their fixes
 - Wiring Diagram LCD_bb.jpg! Please look here for a fritzing diagram!
 
 - If you get errors, see below for a known list of errors and their fixes
 - Wiring Diagram LCD_bb.jpg! Please look here for a fritzing diagram!
 
@@ -23,23 +25,37 @@ Setup Changes:
 - Make sure the top address is set correctly!
 Use this small program to scan for I2C devices:
 
 - Make sure the top address is set correctly!
 Use this small program to scan for I2C devices:
 
+```python
 import machine
 sda=machine.Pin(0)
 scl=machine.Pin(1)
 i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
 print(i2c.scan())
 import machine
 sda=machine.Pin(0)
 scl=machine.Pin(1)
 i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
 print(i2c.scan())
+```
 
 - 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.
 in my case, the decimal addr. was 39 which converts to 0x27 in hex.
 - 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.
 - Finally, assure the I2C_NUM_ROWS and I2C_NUM_COLS are set properly!
 
 
 - 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.
 in my case, the decimal addr. was 39 which converts to 0x27 in hex.
 - 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.
 - Finally, assure the I2C_NUM_ROWS and I2C_NUM_COLS are set properly!
 
-Usage: 
+Functions / Usage: 
 
 
-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))
+These are the python commands used in a program! (They can all be found in the lcd_api.py file with definitions to their functions)
+- lcd.putstr("Text goes here!")                     - Send a string of chars to the display IMPORTANT: Use this for printing a variable: lcd.putstr(str(Variable)) [Turns variable into string] 
+- lcd.show_cursor() / lcd.hide_cursor()             - Show / Hide the cursor of the lcd (White bar)
+- lcd.blink_cursor_on() / lcd.blink_cursor_off()    - Turn on / Off the blinking cursor upon printing
+- lcd.backlight_on() / lcd.backlight_off()          - Turn on / Off backlight of the LCD (Controlled by a small transistor on the backpack)
+- lcd.display_on() / lcd.display_off()              - Turn on / Off the display (Not backlight but the entire chip)
+- lcd.clear()                                       - Clear all chars or anything written to the display
+- lcd.move_to(Col, Row)                             - Move to position based on row and col values (Y, X)
+- lcd.custom_char(Num, bytearray([HEX chars])))     - Num can be any integer 0 - 8 (Writing to CGRAM locations) merely used for numbering. The HEX chars are simply made by using this link: https://maxpromer.github.io/LCD-Character-Creator/. It will provide a string of Hex charecters which can replace the "HEX chars" in the example command.
 
 Errors:
 
 
 Errors:
 
-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!
+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 or, use 2x 1K resistors, connected between +5V and the SCL and SDA pins, as external pullups.
+
+Feel to leave comments or questions / issues and I will try to answer / resolve them as quick as possible!
+
+For people wondering how to use this code, Tinkernut on Youtube created a very nice guide + some more features! https://www.youtube.com/watch?v=B8Kr_3xHjqE&t
+
 
 
-Feel to leave comments or questions and I will try to answer them as quick as possible!