这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » DigiKeyLet'sdo墨水屏DIY活动+过程贴2驱动LCD屏及转动舵机

共7条 1/1 1 跳转至

DigiKeyLet'sdo墨水屏DIY活动+过程贴2驱动LCD屏及转动舵机

工程师
2024-08-21 23:54:55     打赏

使用RP2040_Raspberry Pi Pico来驱动一个1.14寸的LCD屏,首先需要确定LCD屏的接口类型,接口是SPI(Serial Peripheral Interface)接口。

下面看我的开发过程:

1、准备工作:

连接LCD屏:SPI引脚连接:通常包括SCLK(时钟)、MOSI(主设备输出从设备输入)、MISO(可选,主设备输入从设备输出,对于某些LCD可能不需要)、CS(片选)和DC/RS(数据/命令选择)。

电源和地:连接适当的电源和地线。

背光:如果需要,连接背光控制引脚到RP2040的一个GPIO引脚。

下面接好舵机与安装好屏的底板照片:

1724254463001.png

2. 查看屏资料及屏信息

了解LCD屏的分辨率、接口类型、工作电压、引脚定义等。

查看屏引脚分布及宝:

image.png

SPI具体引脚:

image.png

舵机资料:

image.png

image.png

示例代码:

/* 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屏贪吃蛇功能,与使用定时器驱动舵机工作,从中体会到了,会使用软件的神奇与开发过程的快乐,后续会继续努力。







专家
2024-08-22 01:03:27     打赏
2楼

感谢楼主分享


专家
2024-08-22 07:16:12     打赏
3楼

看看


菜鸟
2024-08-22 08:47:03     打赏
4楼

棒棒哒!


专家
2024-08-23 08:37:57     打赏
5楼

看看


助工
2024-08-28 10:11:48     打赏
6楼


专家
2024-09-16 15:24:03     打赏
7楼

都很给力


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]