W tym poście chciałbym przedstawić schemat i omówić kod w języku C . Jest to dosyć proste więc myślę ,że każdy zrozumie .
Na początek rzućmy okiem na cały układ :
Zielona dioda(odległość większa lub równa 20 cm):
Czerwona dioda(odległość mniejsza od 20 cm)
a oto schemat :
Ja użyłem pinów 12,11 do czujnika odległości i 2,4 do diod ale oczywiście można to dostosować pod siebie , należy jednak pamiętać aby w kodzie zdefiniować te porty.
Kod z wyjaśnieniem:
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Pin, wyjście
pinMode(echoPin, INPUT); //Pin, wejście
}
#define trigPin 12
#define echoPin 11
#define LED_zielona 2
#define LED_czerwona 4
<p dir="auto">void loop() {<br />
{Serial.print (zmierzOdleglosc()); // wyświetlane odległości w konsoli programu<br />
Serial.println(" cm od przeszkody");<br />
delay(100);}//odczekaj 100ms
<p dir="auto">if( zmierzOdleglosc() >= 20)//jeśli odległość jest większa bądź równa 20 wtedy zapala się zielona dioda<br />
{<br />
digitalWrite(LED_zielona,HIGH);//załącza się stan wysoki czyli nie płynie prąd<br />
digitalWrite(LED_czerwona,LOW);//załącza się stan niski czyli nie płynie prąd<br />
delay(500);//odczekaj 500ms<br />
}
<pre><code>if( zmierzOdleglosc() < 20)// jeśli odległość jest mniejsza niż 20 wtedy zapala się czerwona dioda
{
digitalWrite(LED_czerwona,HIGH);//załącza się stan wysoki czyli płynie prąd
digitalWrite(LED_zielona,LOW);}//załącza się stan niski czyli nie płynie prąd
}
<p dir="auto">int zmierzOdleglosc(){<br />
long czas, dystans;<br />
pinMode(LED_zielona,OUTPUT);//definiujemy pin jako wyjście<br />
pinMode(LED_czerwona,OUTPUT);//definiujemy pin jako wyjście<br />
digitalWrite(trigPin, LOW);// załącza się stan niski czyli nie płynie prąd<br />
delayMicroseconds(2);//odczekaj 2 us<br />
digitalWrite(trigPin, HIGH);//załącza się stan wysoki czyli płynie prąd<br />
delayMicroseconds(10);//odczekaj 10 us<br />
digitalWrite(trigPin, LOW);//załącza się stan niski czyli nie płynie prąd
<p dir="auto">czas = pulseIn(echoPin, HIGH);//funkcja mierząca czas w którym dźwięk z nadajnika trafił do odbiornika<br />
dystans = czas * 0.017;//mnożymy tutaj czas[uS] przez prędkość dźwięku [m/uS]
<p dir="auto">return dystans;}
<p dir="auto">Dziękuję za uwagę i zapraszam do dyskusji .
Napisz więcej o jakości czujnika. Jaką ma powtarzalność pomiaru, jaką precyzję, minimalną i maksymalną odległość. Ile kosztuje? To pozwoli porównać go z odpowiednikiem w Lego Mindstorms EV3 :)
Jestem ciekaw jak się sprawdza w praktyce, może wykresy rzeczywistej i zmierzonej odległości - temat na następny artykuł.
Acha dodaj etykietę pl-elektronika i pl-artykuly, gdy przekroczysz 200 słów.
Dodaję Cię do obserwowanych.
specyfikacje dodałem w poprzednim poście . Z moich testów wynika że ma dosyć dużą dokładność
ale jutro jeszcze coś wrzucę na ten temat, dzięki za kom
Popracuj nad formatowaniem. Schematy rysuj najlepiej w programie np Eagle