• 合宙Air101 的LCD怎么用Arudino IDE驱动


    屏幕怎么驱动

    有个官方的资料,可以了解到是ST7735,屏幕的分辨率

    https://doc.openluat.com/wiki/21?wiki_page_id=2672

     

    有个库但是这个库是LuatOS的,所以我这边没啥用

    https://gitee.com/openLuat/LuatOS/tree/master/demo/lvgl/Air101

    想要驱动,需要安装一个库,下载后放在Arduino的Library文件夹下面

    https://github.com/adafruit/Adafruit-ST7735-Library

    但是选择会出现这个情况,找不到文件 fatal error: Adafruit_SPITFT.h: No such file or directory

    原因是Arduino IDE自带的这个Adafruit-GFX-Library库不完整,缺少很多文件,所以,我们要完整的库文件

    GitHub - adafruit/Adafruit-GFX-Library: Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from

    下载并覆盖文件夹中的库

    然后就可以正常的编译了

    试一下DEMO代码

    1. #include
    2. #include
    3. #define TFT_SCLK 2 //SCL
    4. #define TFT_MOSI 3 //SDA
    5. #define TFT_RST 10 //RES
    6. #define TFT_DC 6 //DC
    7. #define TFT_CS 7 //CS
    8. Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
    9. void setup(void) {
    10. tft.initR(INITR_BLACKTAB);
    11. tft.fillScreen(ST7735_RED);
    12. tft.setTextColor(ST7735_YELLOW);
    13. tft.setTextSize(2);
    14. tft.setCursor(24,0);
    15. tft.print("Hello");
    16. }
    17. void loop(void) {
    18. }

    不过这个库配合下直接驱动,显示x坐标需要偏移24

    如果说黑屏

    那么通常是因为烧录设置有问题,主要注意Flash Mode设置为 DIO

    关于按键

    首先要了解,五轴方向键的左,上,中心,下这五个分别对应IO为IO6,IO8,IO4,IO5,右是IO13

    直接上测试代码,这里我发现RKEY有点问题

    1. #include
    2. #include
    3. #define TFT_SCLK 2 //SCL
    4. #define TFT_MOSI 3 //SDA
    5. #define TFT_RST 10 //RES
    6. #define TFT_DC 6 //DC
    7. #define TFT_CS 7 //CS
    8. #define SCREEN_WIDTH 128
    9. #define SCREEN_HEIGHT 64
    10. #define BUTTON_LEFT 13
    11. #define BUTTON_UP 8
    12. #define BUTTON_CENTER 4
    13. #define BUTTON_DOWN 5
    14. #define BUTTON_RIGHT 9
    15. Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
    16. int scroll_delay = 100; // 滚动速度,单位毫秒
    17. void testpin();
    18. void setup(void) {
    19. // 初始化左上中下按键
    20. pinMode(BUTTON_LEFT, INPUT);
    21. pinMode(BUTTON_UP, INPUT);
    22. pinMode(BUTTON_CENTER, INPUT);
    23. pinMode(BUTTON_DOWN, INPUT);
    24. pinMode(BUTTON_RIGHT, INPUT);
    25. Serial.begin(9600);
    26. tft.initR(INITR_BLACKTAB);
    27. tft.setRotation(3); // 竖屏显示
    28. tft.fillScreen(ST7735_RED);
    29. tft.setTextColor(ST7735_YELLOW);
    30. tft.setTextSize(2);
    31. tft.setCursor(24,0);
    32. tft.print("Hello");
    33. Serial.print("Begin");
    34. //delay(100);
    35. }
    36. int pointX = SCREEN_WIDTH / 2;
    37. int pointY = SCREEN_HEIGHT / 2;
    38. void drawpin()
    39. {
    40. int leftState = digitalRead(BUTTON_LEFT);
    41. int upState = digitalRead(BUTTON_UP);
    42. int centerState = digitalRead(BUTTON_CENTER);
    43. int downState = digitalRead(BUTTON_DOWN);
    44. int rightState = digitalRead(BUTTON_RIGHT);
    45. // 根据按键状态改变小点位置
    46. if (leftState == LOW) {
    47. pointX--;
    48. }
    49. if (rightState == LOW) {
    50. pointX++;
    51. }
    52. if (upState == LOW) {
    53. pointY--;
    54. }
    55. if (downState == LOW) {
    56. pointY++;
    57. }
    58. if(centerState == LOW)
    59. {
    60. tft.fillScreen(ST7735_BLACK);
    61. }
    62. // 边界检查,防止小点移出屏幕
    63. if (pointX < 0) {
    64. pointX = 0;
    65. }
    66. if (pointX > SCREEN_WIDTH - 1) {
    67. pointX = SCREEN_WIDTH - 1;
    68. }
    69. if (pointY < 0) {
    70. pointY = 0;
    71. }
    72. if (pointY > SCREEN_HEIGHT - 1) {
    73. pointY = SCREEN_HEIGHT - 1;
    74. }
    75. // 清空屏幕
    76. //tft.fillScreen(ST7735_BLACK);
    77. // 绘制小点
    78. tft.drawPixel(pointX, pointY, ST7735_WHITE);
    79. delay(50); // 延时一段时间,防止过快刷新屏幕
    80. }
    81. void testpin()
    82. {
    83. Serial.print("LEFT: ");
    84. Serial.print(digitalRead(BUTTON_LEFT));
    85. Serial.print("\tUP: ");
    86. Serial.print(digitalRead(BUTTON_UP));
    87. Serial.print("\tCENTER: ");
    88. Serial.print(digitalRead(BUTTON_CENTER));
    89. Serial.print("\tDOWN: ");
    90. Serial.print(digitalRead(BUTTON_DOWN));
    91. Serial.print("\tRIGHT: ");
    92. Serial.println(digitalRead(BUTTON_RIGHT));
    93. delay(100);
    94. }
    95. void testpinlcd()
    96. {
    97. tft.setTextSize(1); // 设置文本大小为1
    98. // tft.fillRect(0, 10, SCREEN_WIDTH, SCREEN_HEIGHT-10, ST7735_BLACK);
    99. tft.setCursor(0, 24);
    100. tft.setTextColor(ST7735_WHITE);
    101. tft.setTextSize(1);
    102. tft.println("Button Status:");
    103. tft.print("LEFT_BUTTON: ");
    104. tft.println(digitalRead(BUTTON_LEFT));
    105. tft.print("UP_BUTTON: ");
    106. tft.println(digitalRead(BUTTON_UP));
    107. tft.print("CENTER_BUTTON: ");
    108. tft.println(digitalRead(BUTTON_CENTER));
    109. tft.print("DOWN_BUTTON: ");
    110. tft.println(digitalRead(BUTTON_DOWN));
    111. tft.print("RIGHT_BUTTON: ");
    112. tft.println(digitalRead(BUTTON_RIGHT));
    113. delay(100);
    114. }
    115. void loop(void) {
    116. testpinlcd();
    117. }

     

  • 相关阅读:
    测试5年,功能测试为何要转自动化测试,自动化测试又有哪些特点。
    面试题:谈谈过滤器和拦截器的区别?
    [前端框架]-VUE(上篇)
    机器学习---拉格朗日乘子法、Huber Loss、极大似然函数取对数的原因
    C语言:结构体
    【c#版本Openfeign】Net8 自带OpenFeign实现远程接口调用
    ClickHouse进阶(七):Clickhouse数据查询-1
    java毕业设计乒乓球俱乐部管理源码+lw文档+mybatis+系统+mysql数据库+调试
    M2芯片的Mac上安装Linux虚拟机——提前帮你踩坑
    CVPR 2022上人脸识别相关的论文分类整理
  • 原文地址:https://blog.csdn.net/u012388993/article/details/126819094