首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改四线制触摸屏的原点

更改四线制触摸屏的原点
EN

Stack Overflow用户
提问于 2021-06-09 18:25:04
回答 1查看 26关注 0票数 0

我可以读取我的四线制触摸屏的坐标。但是我在每个角落都得到了这样的值(见图I)。

现在,我希望获得与我的触摸屏大小匹配的值。我以前试过,但每次我触摸触摸屏时,我的测量都失败了1厘米。

我的代码如下:

代码语言:javascript
复制
#define Yin  A0
#define Yout A1
#define Xin  A2
#define Xout A3
int values[2];

void setup()
{
  pinMode(Xin,  INPUT);
  pinMode(Yin, INPUT);
  pinMode(Xout, INPUT);
  pinMode(Yout, INPUT);

  Serial.begin(9600);
}
void loop()
{   
    pinMode(Yin, OUTPUT);
    pinMode(Yout, OUTPUT);
    digitalWrite(Yin, LOW);
    digitalWrite(Yout, HIGH);
    delay(5); // Pause to allow lines to power up
    // Read and store X
    values[0] = analogRead(Xin);
    // Reset Y
    digitalWrite(Yout, LOW);
    delay(5); // Pause to allow lines to power down
    pinMode(Yin, INPUT);
    pinMode(Yout, INPUT);
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Read Y
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Set X to a gradient
    pinMode(Xin, OUTPUT);
    pinMode(Xout, OUTPUT);
    digitalWrite(Xin, LOW);
    digitalWrite(Xout, HIGH);
    delay(5); // Pause to allow lines to power up
    // Read and store Y
    values[1] = analogRead(Yin);
    // Reset X
    digitalWrite(Xout, LOW);
    delay(5); // Pause to allow lines to power down
    pinMode(Xin, INPUT);
    pinMode(Xout, INPUT);
    delay(250);
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Output our values
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Serial.print(values[0]);
    Serial.print("\t");
    Serial.println(values[1]);
           
  }

我的目标是将触摸屏的原点放在中间,并以厘米为单位获取每个位置的值。(见图二。)

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-06-10 19:02:31

我得到了答案,我必须在X和Y的输出中输入两行额外的代码。

看这里:

代码语言:javascript
复制
#define Yin  A0
#define Yout A1
#define Xin  A2
#define Xout A3

 double korrX = 1.2;
 double korrY = 1.1;

double values[2];

void setup()
{
  pinMode(Xin,  INPUT);
  pinMode(Yin, INPUT);
  pinMode(Xout, INPUT);
  pinMode(Yout, INPUT);
 

  Serial.begin(9600);
}

void loop()
{
  
    pinMode(Yin, OUTPUT);
    pinMode(Yout, OUTPUT);
    digitalWrite(Yin, LOW);
    digitalWrite(Yout, HIGH);
    delay(5); // Pause to allow lines to power up
    // Read and store X
    values[0] = analogRead(Xin);
    values[0] = values[0] -507;
    values[0] = (11.4*values[0]/507)*korrX;
    // Reset Y
    digitalWrite(Yout, LOW);
    delay(5); // Pause to allow lines to power down
    pinMode(Yin, INPUT);
    pinMode(Yout, INPUT);
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Read Y
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Set X to a gradient
    pinMode(Xin, OUTPUT);
    pinMode(Xout, OUTPUT);
    digitalWrite(Xin, LOW);
    digitalWrite(Xout, HIGH);
    delay(5); // Pause to allow lines to power up
    // Read and store Y
    values[1] = analogRead(Yin);
    values[1] = values[1] -501;
    values[1] = (15.2*values[1]/501)*korrY;
    // Reset X
    digitalWrite(Xout, LOW);
    delay(5); // Pause to allow lines to power down
    pinMode(Xin, INPUT);
    pinMode(Xout, INPUT);
    delay(250);
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Output our values
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Serial.print(values[0]);
    Serial.print("\t");
    Serial.println(values[1]);
    
    
  }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67902258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档