我有一个Arduino Uno,一个TFT触摸显示器和一个超声波传感器。由于主板没有足够的引脚,因此我不得不同时将其中一些引脚用于传感器和显示器。不幸的是,如果我更改了其中一个引脚的PinMode(传感器正常工作所必需),则Display会停止正常工作。
我已经正确设置了所有内容,我唯一遇到的麻烦是pinMode。
void setup(void) {
//ULTRASONIC
pinMode(M1, HIGH); //to control motor
pinMode(M2, HIGH);
Serial.begin(9600);
//Serial.print("TFT size is "); Serial.print(tft.width());
Serial.print("x"); Serial.println(tft.height());
tft.reset();
uint16_t identifier = tft.readID();
if(identifier==0x0101)
{
identifier=0x9341;
Serial.println(F("Found 0x9341 LCD driver"));
}
tft.begin(identifier);
}
void loop(void) {
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
C = digitalRead(duration);
if (C > 2*cm)
{
digitalWrite(M1, HIGH);
}
else
{ digitalWrite(M1, LOW);}
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches); // to serially print the data
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
tft.fillScreen(WHITE);
tft.setRotation(1);
unsigned long start = micros();
tft.setCursor(20, 80);
tft.setTextColor(BLACK); tft.setTextSize(5);
if(cm < 10){
tft.println("Thank you");
delay(2000);
}
}
'''''''''''''
应该发生的是,如果Ultrasonic检测到一个距离小于10cm的物体,显示屏将显示“谢谢”。