使用RP2040_Raspberry Pi Pico来驱动一个1.14寸的LCD屏,首先需要确定LCD屏的接口类型,接口是SPI(Serial Peripheral Interface)接口。
下面看我的开发过程:
1、准备工作:
连接LCD屏:SPI引脚连接:通常包括SCLK(时钟)、MOSI(主设备输出从设备输入)、MISO(可选,主设备输入从设备输出,对于某些LCD可能不需要)、CS(片选)和DC/RS(数据/命令选择)。
电源和地:连接适当的电源和地线。
背光:如果需要,连接背光控制引脚到RP2040的一个GPIO引脚。
下面接好舵机与安装好屏的底板照片:
2. 查看屏资料及屏信息
了解LCD屏的分辨率、接口类型、工作电压、引脚定义等。
查看屏引脚分布及宝:
SPI具体引脚:
舵机资料:
示例代码:
/* Sweep by BARRAGAN <https://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald https://www.arduino.cc/en/Tutorial/Sweep */ #include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
3、软件
初始化SPI
代码中初始化SPI接口,设置正确的时钟速率、数据位、CPOL和CPHA等。
初始化LCD
发送初始化序列到LCD屏,这通常是一系列的命令和参数,用于设置分辨率、色彩模式、显示方向等。
编写显示函数
编写函数来绘制像素、线条、矩形、文字等。
上拉引脚 UP = Pin(2, Pin.IN, Pin.PULL_UP) DOWN = Pin(18, Pin.IN, Pin.PULL_UP) LEFT = Pin(16, Pin.IN, Pin.PULL_UP) RIGHT = Pin(20, Pin.IN, Pin.PULL_UP) AKEY = Pin(17, Pin.IN, Pin.PULL_UP) BKEY = Pin(17, Pin.IN, Pin.PULL_UP) 文字显示 score = self.snake_length - START_SNAKE_SIZE self.display.text('Score:%d' % score, 170, 110, self.display.red) self.display.text('Lets do ', 0, 50, self.display.black) self.display.text(' Digikey', 10, 60, self.display.black) self.display.text(' CONGCONG', 10, 80, self.display.black) self.display.text(' GEGE', 10, 90, self.display.black) self.display.text('www.eepw.', 0, 10, self.display.black) self.display.text('com.cn', 10, 20, self.display.black) 开始游戏 self.display.text('Game begins', 65, 110, self.display.black) self.display.text('go go go ', 65, 120, self.display.black) 游戏结束 self.display.text('GAME END', 30, 110, self.display.red) 键方向 for direction, pin in enumerate((UP, LEFT, DOWN, RIGHT)): if pin.value() == 0 and not (direction == (self.direction + 2) % 4): self.new_direction = Direction.setter(direction) return ...
4、演示效果
B站连接:
https://www.bilibili.com/video/BV1wmWMeLETT/?vd_source=0e4686609dd9c60a63b3f7fe54080c03
总结:
根据LCD屏的数据手册确认接口类型SPI,并正确插入RP2040的底板与核心板上,从这个开发过程中整个流程涵盖了从硬件连接到软件设置再到调试的全过程,实现RP2040驱动LCD屏贪吃蛇功能,与使用定时器驱动舵机工作,从中体会到了,会使用软件的神奇与开发过程的快乐,后续会继续努力。