Arduino czujnik ultradźwiękowy z 2 diodami LED , schemat +kod z wyjaśnieniem

in #polish7 years ago

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 :
29341078_2063775267199998_1820439629_n.jpg
Zielona dioda(odległość większa lub równa 20 cm):
29020129_2063766083867583_927597259_n.jpg
Czerwona dioda(odległość mniejsza od 20 cm)
29547735_2063766070534251_694301179_n.jpg
a oto schemat :
29134938_2063766153867576_1612685700_n.jpg
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 .
Sort:  

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