Arduino - Ультразвуковой датчик (SR04T) только мера 0
У меня есть ультразвуковой датчик (SR04T), который я подключил к своему Arduino. Я использую порты TX и RX в Arduino UNO. Проблема в том, что он читает только значение 0 см. Может ли кто-нибудь помочь мне найти ошибку?
Код, который я использую, выглядит следующим образом:
const int trigPin = 1;
const int echoPin = 0;
void setup() {
Serial.begin(9600);
}
void loop()
{
long duration, inches, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// convert time into cm
cm = microsecondsToCentimeters(duration);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
1 ответ
Решение
Вы делаете две вещи неправильно здесь.
Вы устанавливаете pinMode в цикле. Нет необходимости в этом. Поместите их в настройку. Вам не нужно постоянно устанавливать пин-мод.
Вы используете контакты 0 и 1 для ввода и вывода при использовании последовательного интерфейса. Последовательный использует контакты 0 и 1 для последовательной связи. Используйте другие контакты для ввода и вывода. Посмотрите на http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png