HC-SR04

Ультразвуковой сонар HC-SR04 дешев (около 50рублей) и прост в управлении. Два вывода — триггер-эмиттер и микрофон-детектор. Акустика трансмиттера и ресивера выглядит одинаковой. Алгоритм использования — включить trigger на 10мс, и затем измерить появление импулься на echo. Разница во времени выдаст два расстояния до препятствия (звук должен сходить до препятствия и вернуться обратно). Излучаются пачки по 8 импульсов на частоте 40кгц. Детальнее можно почитать тут.

hc-sr04

Примерный код

#define trigPin 13
#define echoPin 12
#define led 8


void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led, OUTPUT);
}


long getSonar(int tPin,int ePin ) { // trigger, echo pins
  
  long duration, distance;
  digitalWrite(tPin, LOW);  
  delayMicroseconds(2); 
  digitalWrite(tPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(tPin, LOW);
  duration = pulseIn(ePin, HIGH);
  distance = (duration/2) / 29.1;
  return distance;
}

int state = 0;
void toggle_switch() {
  state=!state;
  digitalWrite(led,state?HIGH:LOW);
  Serial.println("trigger:"+String(state));
}

int iam_near = 0;

void loop() {
  long  distance;
  distance = getSonar(trigPin, echoPin);
  int near = (distance<15);
  //Serial.println(String(distance)+"cm");
  if (near && !iam_near) { // switch on please
    toggle_switch();
  }
  iam_near = near;
  
  delay(100);
} 

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.