查看: 1177|回复: 2

[经验] STM32+ST7789+XPT2046测试程序

[复制链接]
  • TA的每日心情
    开心
    2020-1-14 13:13
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2020-1-13 00:36 | 显示全部楼层 |阅读模式
    这个是STM32+ST7789+XPT2046测试程序,可以随意画图形、写字等,点击Clear按钮就可以清除,用于测试用,这是在实例中修改一些代码。

    #include <Arduino.h>
    #include <SPI.h>
    #include <Adafruit_ST7789.h>
    #include <Adafruit_GFX.h>
    #include <XPT2046.h>

    // Modify the following two lines to match your hardware
    // Also, update calibration parameters below, as necessary

    // For the esp shield, these are the default.
      #define TFT_CS        PB11
      #define TFT_RST       -1 // Or set to -1 and connect to Arduino RESET pin
      #define TFT_DC        PB10
      #define TFT_MOSI PB0  // Data out
      #define TFT_SCLK PB1  // Clock

    Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
    XPT2046 touch(/*cs=*/ PA4, /*irq=*/ PA1);// MOSI=11, MISO=12, SCK=13

    Adafruit_GFX_Button button;

    void setup() {
      delay(1000);
        tft.init(240,320);
      Serial.begin(115200);
      tft.setRotation(0);//旋转屏幕
      touch.ROT0;
      touch.begin(tft.width(), tft.height());  // Must be done before setting rotation
      Serial.print("tftx ="); Serial.print(tft.width()); Serial.print(" tfty ="); Serial.println(tft.height());
      tft.fillScreen(ST77XX_BLACK);
      // Replace these for your screen module
      touch.setCalibration(209, 1759, 1775, 273);
      button.initButton(&tft, 35, 300, 70, 40, ST77XX_GREEN, ST77XX_BLUE, ST77XX_YELLOW, "Clear", 2);
      button.drawButton();

    }

    static uint16_t prev_x = 0xffff, prev_y = 0xffff;

    void loop() {
        uint16_t x, y;
      if (touch.isTouching()) {
        touch.getPosition(x, y);
        if (prev_x == 0xffff) {
          tft.drawPixel(x,y,ST77XX_BLUE);
        } else {
          tft.drawLine(prev_x, prev_y, x, y,ST77XX_BLUE);
        }
        prev_x = x;
        prev_y = y;
      } else {
        prev_x = prev_y = 0xffff;
      }


      button.press(button.contains(x, y)); // tell the button it is pressed


    // now we can ask the buttons if their state has changed
        if (button.justReleased()) {
            tft.fillScreen(ST77XX_BLACK);
            button.drawButton(); // draw normal
        }

        if (button.justPressed()) {
            button.drawButton(true); // draw invert!
        }

      delay(20);
    }

    该用户从未签到

    发表于 2020-2-23 19:18 | 显示全部楼层
    谢谢你,真的很棒
  • TA的每日心情
    无聊
    2020-7-28 23:19
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2020-7-28 00:24 | 显示全部楼层
    这什么代码,,混乱。。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    求一份 新版 nano V3.0 ATMEGA328P 改进版原理图
    求一份 新版 nano V3.0 AT
    如标题,求一份 新版 nano V3.0 ATMEGA328P 改进版的原理图。 串口方案为 CH340C。
    中国电子学会提供fritzing的免费版本
    中国电子学会提供fritzing
    看到网上经常有朋友说找不到fritzing的免费版本,这里推荐一个绝对安全的下载方式http
    更智能的电脑远程开关机-基于继电器
    更智能的电脑远程开关机-
    我只是刚刚入门的萌新,所以有不足请指出 先展示下 功能:开关机,开关机检测,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表