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 ответ

Решение

Вы делаете две вещи неправильно здесь.

  1. Вы устанавливаете pinMode в цикле. Нет необходимости в этом. Поместите их в настройку. Вам не нужно постоянно устанавливать пин-мод.

  2. Вы используете контакты 0 и 1 для ввода и вывода при использовании последовательного интерфейса. Последовательный использует контакты 0 и 1 для последовательной связи. Используйте другие контакты для ввода и вывода. Посмотрите на http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png

Другие вопросы по тегам