All Projects → zadi15 → picoLCD

zadi15 / picoLCD

Licence: BSD-3-Clause license
Example code for interfacing with a LCD with a Raspberry Pi Pico

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to picoLCD

OpenLCD
An open source serial LCD (HD44780) controller based on the ATmega328.
Stars: ✭ 28 (+12%)
Mutual labels:  lcd-display, lcd16x2, lcd20x4
vrEmuLcd
Character LCD emulator library (C99 engine, web front-end).
Stars: ✭ 45 (+80%)
Mutual labels:  lcd, lcd-display
qnapdisplay
Qnap lcd python module, features both writing to the display as wel as reading keypresses from the panel keys. It was developed on a Qnap TS-459 and a TS-453A, it works on some other models as well.
Stars: ✭ 37 (+48%)
Mutual labels:  lcd, lcd-display
LiquidCrystal I2C Hangul
아두이노 16x2 LCD 한글 출력 라이브러리
Stars: ✭ 16 (-36%)
Mutual labels:  lcd16x2, lcd20x4
pico-emu
a little hobby raspberry pi pico emulator
Stars: ✭ 27 (+8%)
Mutual labels:  pico, raspberry-pi-pico
digital-electronics-2
AVR course at Brno University of Technology
Stars: ✭ 12 (-52%)
Mutual labels:  lcd
pico-rectangle
Joybus protocol (Gamecube controller) implementation for the Raspberry Pi Pico (ARM Cortex M0+). Translates GPIO to modelized Gamecube controller states based on the B0XX/F1 layout.
Stars: ✭ 113 (+352%)
Mutual labels:  raspberry-pi-pico
pcd8544
Minimal footprint library for Philips PCD8544 LCDs on the Arduino.
Stars: ✭ 87 (+248%)
Mutual labels:  lcd
U8g2
U8glib library for monochrome displays, version 2
Stars: ✭ 2,737 (+10848%)
Mutual labels:  lcd
MD Menu
Menu system for displays with up to 2 lines
Stars: ✭ 49 (+96%)
Mutual labels:  lcd
lcd
This repository contains all of the code for interfacing with a 16x2 Character I2C LCD Display. This accompanies my YouTube tutorial here: https://www.youtube.com/watch?v=fR5XhHYzUK0
Stars: ✭ 116 (+364%)
Mutual labels:  lcd
dpf-ax
Tools and firmware for AX206 photo frames, from http://sourceforge.net/projects/dpf-ax/
Stars: ✭ 17 (-32%)
Mutual labels:  lcd
pico-ssd1306
Simple library for using ssd1306 displays with the Raspberry Pi Pico and the pico-sdk.
Stars: ✭ 57 (+128%)
Mutual labels:  raspberry-pi-pico
chisel
A library to sculpt text on any device that you can handle pixels
Stars: ✭ 37 (+48%)
Mutual labels:  lcd
PicoVGA
VGA/TV display on Raspberry Pico
Stars: ✭ 119 (+376%)
Mutual labels:  pico
5110LCD PCD8544.swift
A Swift library for the Nokia3310/5110 PCD8544 Monochrome LCD display
Stars: ✭ 28 (+12%)
Mutual labels:  lcd
mpy-lib
HTS221, LPS22, LIS2DW12, LIS2MDL, LSM6DSO, STTS751, bme280, bmp280, APDS9930, TM1650, TM1637, LCD1602, all kinds of micropython drives, examples, libs
Stars: ✭ 118 (+372%)
Mutual labels:  lcd
EByte LoRa E22 Series Library
Arduino LoRa EBYTE E22 device library complete and tested with Arduino, esp8266, esp32, STM32 and Raspberry Pi Pico (rp2040 boards).. sx1262/sx1268
Stars: ✭ 67 (+168%)
Mutual labels:  pico
Adafruit CircuitPython CharLCD
Library code for character LCD interfacing
Stars: ✭ 54 (+116%)
Mutual labels:  lcd
PrecIR
You know what this is for ;-)
Stars: ✭ 60 (+140%)
Mutual labels:  lcd

picoLCD

About picoLCD

picoLCD is a collection of functions to make interfacing with HD44780 (and other pin & instruction compatible chips such as the Sitronix ST7066) based LCD screens easier on the Raspberry Pi Pico. Rather than reading through data sheets to figure out the correct set of instructions to send to the screen, picoLCD attempts to make it a simpler process, while still being extremely versatile. It's as simple as copying the .c & .h files to your project, add some #includes, set some pins and off you go!

This is still very much a work in progress. This is known to work on the following LCD sizes in 8-bit mode:

16x2 status (HD44780)

20x4 status (HD44780)

40x2 status (ST7066)

16x4 status

8x2 status

4-bit operation is also on the way once more progress is done on the current version.

Basic Instructions are below, with more detailed function documentation in 'picoLCD/FUNCTIONS.md'

Demo .uf2 files can be found at picoLCD/demos.

Current Version = 0.5.0

Changelog can be found at picoLCD/CHANGELOG.md.

Wiring the pico

The Pico should be wired to the LCD as follows for 8-bit operation, with the Pico being plugged into USB:

diagram depicting the wiring of the LCD to the PICO

Please note the LCD backlight should be powered by an external 5v power source, as the Pico may not be able to power both the LCD and backlight.

Basic Usage:

Please Note: This describes the minimum steps needed to get an LCD functioning. An example main.c can be found at picoLCD/8-bit/example. Use of the more advanced features are detailed below.

To get started all you need to do is move all .c & .h files (found at either picoLCD/8-bit for 8-bit operation) to your project folder, and do the following:

At the top of your main file add the following #includes:

#include "pico/binary_info.h"
#include "LCDops.h"
#include "generalOps.h"

Additionally, you need to declare which GPIOs the LCD is connected to and the LCD size (Make sure these are not in main()). The example below is for a 16x2 LCD connected as in the above diagram.

{D0,D1,D2,D3,D4,D5,D6,D7, E , RS , RW , LCD Line Length (eg. 16 characters across), Number of Lines on LCD}

int LCDpins[14] = {0,1,2,3,4,5,6,7,15,16,17,16,2};

Finally these pins that we just defined (excluding the LCD line length and line count values) need to be initialized, set as output and pulled low. Here is an example:

for(int gpio = 0; gpio < 11; gpio++){
    gpio_init(LCDpins[gpio]);
    gpio_set_dir(LCDpins[gpio], true);
    gpio_put(LCDpins[gpio], false);
}

And inside your CMakeLists.txt, add LCDops.c and generalOps.c to your add_executable() e.g.

add_executable(project
    main.c
    LCDops.c
    generalOps.c
)

You're now able to use picoLCD's functions as explained in picoLCD/FUNCTIONS.md!

Advanced Features

Included Custom Characters

If you want to use the set of pre-designed custom characters this library provides, detailed in FUNCTIONS.md, you must also:

Move the .c and .h files found at picoLCD/8-bit/presetChars/ to your project folder

Add #include presetChars.h to your main.c and presetChars.c to your add_executable() in CMakeLists.txt.

Custom Message Presets

If you want to use the set of pre-designed custom message functions this library provides, detailed in FUNCTIONS.md, you must also:

Move the .c and .h files found at picoLCD/8-bit/presetMessages/ to your project folder

Add #include presetMessages.h to your main.c and presetMessages.c to your add_executable() in CMakeLists.txt.

To Do

--> Clean up FUNCTIONS.md

--> Continue adding LCD functions

--> Expand custom characters

--> Secret additions :D

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].