【Follow me第二季第4期】- 任务准备:底板制作与开发环境搭建
[复制链接]
本帖最后由 慕容雪花 于 2024-12-16 22:03 编辑
这次活动中,特意购买了一个屏幕扩展板用于显示一些传感器数据。 本文主要介绍底板扩展板的设计,以及Arduino开发环境搭建,最后展示成功驱动屏幕。
硬件:
主开发板:Nano RP2040 Connect https://docs.arduino.cc/hardware/nano-rp2040-connect/#features
LCD扩展板:Pico LCD 1.14 https://www.waveshare.com/wiki/Pico-LCD-1.14
下图展示的是微雪的屏幕扩展板与树莓派PICO的接口图。
接下来的第一步就是找到微雪开发板与树莓派PICO的引脚关系,然后再找到对应到Arduino Nano RP2040 Connect的引脚。
有一点需要注意,Arduino Nano RP2040 Connect开发板的VUSB引脚与JP2扩展接口实际上默认是未焊接状态。因此需要手工焊接上去。
设计原理图与PCB:
JLC标准版,设计简单的连接。
主控板是Arduino Nano的尺寸,DY方向间距:15.24mm,DX方向间距:2.54mm
扩展板是树莓派PICO的尺寸:
两层如下:
3D展示:
打样回来的板子:
搭建开发环境与屏幕驱动:
接下来Arduino IDE 2以上版本,安装开发板驱动:
选择板卡:
使用的屏幕驱动是:
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
指定屏幕SPI相关引脚:
#define TFT_CS D10 // Chip select control pin
#define TFT_RST D4 // Reset pin (could connect to Arduino RESET pin)
#define TFT_DC D12 // Data Command control pin
#define TFT_MOSI D11
#define TFT_SCLK D13
#define TFT_MISO D15
核心代码:
void setup(void) {
Serial.begin(9600);
Serial.print(F("Hello! ST77xx TFT Test"));
// OR use this initializer (uncomment) if using a 1.14" 240x135 TFT:
tft.init(135, 240); // Init ST7789 240x135
// SPI speed defaults to SPI_DEFAULT_FREQ defined in the library, you can override it here
// Note that speed allowable depends on chip and quality of wiring, if you go too fast, you
// may end up with a black screen some times, or all the time.
//tft.setSPISpeed(40000000);
Serial.println(F("Initialized"));
uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;
Serial.println(time, DEC);
delay(500);
// large block of text
tft.fillScreen(ST77XX_BLACK);
testdrawtext("HELLO THERE Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST77XX_WHITE);
delay(1000);
// tft print function!
tftPrintTest();
delay(4000);
// a single pixel
tft.drawPixel(tft.width()/2, tft.height()/2, ST77XX_GREEN);
delay(500);
// line draw test
testlines(ST77XX_YELLOW);
delay(500);
// optimized lines
testfastlines(ST77XX_RED, ST77XX_BLUE);
delay(500);
testdrawrects(ST77XX_GREEN);
delay(500);
testfillrects(ST77XX_YELLOW, ST77XX_MAGENTA);
delay(500);
tft.fillScreen(ST77XX_BLACK);
testfillcircles(10, ST77XX_BLUE);
testdrawcircles(10, ST77XX_WHITE);
delay(500);
testroundrects();
delay(500);
testtriangles();
delay(500);
mediabuttons();
delay(500);
Serial.println("done");
delay(1000);
}
编译代码:
实物验证:
|