[ARDUINO] Oko Cyklopa – ultradźwiękowy „radar” do lokalizacji obiektów
odpowiedź. Następnie przekazujemy wynik pomiaru poprzez port szeregowy (listing 2).
List. 2. Kod obliczający odległość do obiektu i wysyłający dane szeregowo przez RS232
int TX1 = 10;
int RX1 = 11;
long TIME1;
void setup()
{
pinMode(TX1, OUTPUT);
pinMode(RX1, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(TX1, HIGH);
delayMicroseconds(10);
digitalWrite(TX1, LOW);
TIME1 = pulseIn(RX1, HIGH);
Serial.print(" Czujnik 1: ");
Serial.println(TIME1/58);
}
W programie z listingu 2 wykorzystano funkcję:
pulseIn(port , oczekiwany_stan)
Funkcja ta zwraca wartość wyrażoną w jednostce czasu informującą o osiągnięciu na danym porcie oczekiwanego stanu logicznego. W powyższym programie po wysłaniu impulsu oczekujemy na pojawienie się na linii 11 wysokiego poziomu napięcia. Otrzymany wynik poprzedzony odpowiednią adnotacją wysyłamy do komputera.
Po zakończeniu testów czujnika przechodzimy do kolejnego etapu, jakim jest jednoczesne uruchomienie trzech czujników oraz określenie, który czujnik znajduje się najbliżej przeszkody. Do wykonania tego zadania warto skorzystać schemat z rysunku 2. Zgodnie z tym schematem czujniki zostały dołączone następująco:
- Czujnik 1: nadajnik – linia 10, odbiornik – linia 11,
- Czujnik 2: nadajnik – linia 12, odbiornik – linia 13,
- Czujnik 3: nadajnik – linia 6, odbiornik – linia 7,
- Zasilanie oraz masa zostały dołączone równolegle.

Rys. 2. Schemat dołączenia 3 czujników ultradźwiękowych do Arduino Leonardo
Po odpowiednim połączeniu elementów urządzenia kolejnym celem będzie oprogramowanie tego układu. Do tego powielimy kod z listingu 2 odpowiednio konfigurując porty. Wynik tej operacji znajduje się na listingu 3.
List. 3. Kod obliczający odległość do obiektu zmierzoną przez trzy czujniki ultradźwiękowe
int TX1 = 10; //port nadajnik Ultrasonic
int RX1 = 11; //port odbiornik Ultrasonic
int TX2 = 12; //port nadajnik Ultrasonic
int RX2 = 13; //port odbiornik Ultrasonic
int TX3 = 6; //port nadajnik Ultrasonic
int RX3 = 7; //port odbiornik Ultrasonic
int CM; //odległość w cm
long TIME1,TIME2,TIME3; //długość powrotnego impulsu w uS
void setup()
{
pinMode(TX1, OUTPUT);
pinMode(RX1, INPUT);
pinMode(TX2, OUTPUT);
pinMode(RX2, INPUT);
pinMode(TX3, OUTPUT);
pinMode(RX3, INPUT);
Serial.begin(9600);
}
void loop()
{
pomiar_odleglosci();
// szerokość odbitego impulsu w uS podzielone przez
// 58 to odleglosc w cm - patrz dokumentacja
Serial.print(" Czujnik 1: ");
Serial.print(TIME1/58);
Serial.print(" Czujnik 2: ");
Serial.print(TIME2/58);
Serial.print(" Czujnik 3: ");
Serial.println(TIME3/58);
delay(100);
}
void pomiar_odleglosci ()
{
// impuls 10 uS inicjalizujacy - patrz dokumentacja
digitalWrite(TX1, HIGH);
delayMicroseconds(10);
digitalWrite(TX1, LOW);
TIME1 = pulseIn(RX1, HIGH);
digitalWrite(TX2, HIGH);
delayMicroseconds(10);
digitalWrite(TX2, LOW);
TIME2 = pulseIn(RX2, HIGH);
digitalWrite(TX3, HIGH);
delayMicroseconds(10);
digitalWrite(TX3, LOW);
TIME3 = pulseIn(RX3, HIGH);
}
Aby określić położenie obiektu, będziemy musieli wyznaczyć wartość minimalną wskazania czujników. Do tego celu posłuży algorytm przedstawiony na rysunku 3. Jego implementacja w języku C jest pokazana na listingu 4.

Rys. 3. Algorytm sortowania wartości odczytanych przez czujniki

Jak dobrać odpowiedni format banera reklamowego do wydarzenia plenerowego?
„Shadow AI” w firmach: dlaczego tak wielu pracowników korzysta ze sztucznej inteligencji bez zgody firmy?
ADALM2000 – Regulowany układ wyzwalania zewnętrznego 

![https://www.youtube.com/watch?v=XkeyLmtLfxo O konkursie organizowanym przez firmę TRUMPF Huettinger i polskie uczelnie techniczne opowiada Alicja Peresada i prof. Jacek Rąbkowski oraz kilkoro nagrodzonych dyplomantów: mgr inż. Jakub Dobosz, inż. Maja Zielińska, dr inż. Jakub Kołodziej, dr inż Weronika Hryniewska-Guzik i dr inż. Grzegorz Bartyzel. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/07/TRUMPF-czolowka.png)



