查看: 152|回复: 0

[经验] 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);
    }

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    小爱同学+Blinker控制灯
    小爱同学+Blinker控制灯
    来这个社区已经很久了,有很多问题都是在这里解决的。在此谢谢他们!这里我也分享一个
    使用74hc595驱动一位数码管
    使用74hc595驱动一位数码
    74hc595是一种常用的I/O拓展芯片,今天我尝试用一个74hc595来驱动一个一位七段数码管
    74HC595的疑惑终于解开
    74HC595的疑惑终于解开
    对于74HC595的教程中和网上的资料看完还是模糊,于是一边接线测试,一边反复看图研究
    数据转换求助!!!
    数据转换求助!!!
    如何将 String str =“123,2132,1321,11”; 转换成 uint16_t A[4]= str
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表