Если я правильно понял - это ультразвуковой датчик топлива с аналоговым выходом. Соответственно тебе нужно повесить что-то с АЦП на одной стороне и RS232 на другой. Можно и Arduino, но сначала надо замерить что датчик выдает. На самом HC-05 АЦП вроде нет, да и для прошивки программатор понадобится.
Похоже? https://www.google.kz/#q=УЗ+датчик+Arduino http://arduino-project.net/podklyuchenie-ul-trazvukovogo-dal-nomera-hc-sr04-k-arduino/
Скинь, что за стрела. То, что я по стреле нашел так это уже готовые устройства а не платы. Хотя бы модификацию.
Судя по всему должно работать. Скорее всего ошибка с пинами. Попробуйте диодом помигать на тех пинах к которым подключаете. И как не работает - совсем ноль или неправильно
Код (C++): #include <Strela.h> void setup() // процедура setup { uPinMode(P9, OUTPUT); uPinMode(P10, OUTPUT); } void loop() // процедура loop { uDigitalWrite(P9, 1); uDigitalWrite(P10, 1); delay(500); uDigitalWrite(P9, 0); uDigitalWrite(P10, 0); delay(500); } Светодиоды мигают
Уже хорошо! На вывод trig (OUTPUT) ты подаешь сигнал начала измерения - допустим это будет светодиод параллельно с датчиком (должен вспыхивать) На Echo (INPUT) на плате должен ловить импульс длительности прохождения звука. Можно подать сигнал 5 вольт проводком. Если DigitalRead отрабатывает, надо проверить выход на датчике: теоретически его можно отключить от платы и повесить светодиод (прямо на Echo, GND), но видно ли будет глазом вспышку такой длительности я не знаю (дома попробую). Таким образом можно проверить выход платы, вход платы, выход датчика. Если датчик дает импульс остается померить его длительность это и будет дистанция.
Он простой как валенок. На пин trig нужно кинуть цифровой имульс 10uS. А затем функцией pulseIn определить длительность сигнала на пине Echo. Это время путешествия ультразвукового пакета от датчика до мишени и обратно. Остается по скорости звука в воздухе пересчитать время в сантиметры. Distance (in cm) = (elapsed time * sound velocity (340 m/s)) / 100 / 2
Код (C++): #include <Strela.h> #define trigPin P9 #define echoPin P10 int duration, cm; void setup() // процедура setup { Serial.begin (9600); uPinMode(P9, OUTPUT); uPinMode(P10, INPUT); uPinMode(P11, OUTPUT); uDigitalWrite(P11, 1); } void loop() { uDigitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал delayMicroseconds(2); // ставим задержку в 2 ммикросекунд uDigitalWrite(trigPin, HIGH); // посылаем сигнал delayMicroseconds(10); // ставим задержку в 10 микросекунд uDigitalWrite(trigPin, LOW); // выключаем сигнал duration = pulseIn(echoPin, HIGH); // включаем прием сигнала cm = duration / 58; // вычисляем расстояние в сантиметрах Serial.print(cm); // выводим расстояние в сантиметрах Serial.println(" cm"); delay(500); } Нули выводятся на мониторе
При таком скетче выдает значение "0" и "1" при подключении P10 к GND или 5В. Значит порт читает значения. Код (C++): #include <Strela.h> #define echoPin P10 int duration, cm; void setup() // процедура setup { Serial.begin (9600); uPinMode(P9, OUTPUT); uPinMode(P10, INPUT); uPinMode(P11, OUTPUT); } void loop() { uDigitalRead(echoPin); // изначально датчик не посылает сигнал Serial.print(uDigitalRead(echoPin)); delay(500); }
Ты проверь датчик HIGH дает вообще? Может на нем питания нет А расстояние до цели сколько тестируйте?
Спасибо. Заработало Код (C++): #include <Strela.h> #define trigPin P11 #define echoPin P12 int duration, cm; void setup() // процедура setup { Serial.begin (9600); pinMode(P11, OUTPUT); pinMode(P12, INPUT); uDigitalWrite(P11, 1); } void loop() { digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал delayMicroseconds(2); // ставим задержку в 2 ммикросекунд digitalWrite(trigPin, HIGH); // посылаем сигнал delayMicroseconds(10); // ставим задержку в 10 микросекунд digitalWrite(trigPin, LOW); // выключаем сигнал duration = pulseIn(echoPin, HIGH); // включаем прием сигнала cm = duration / 58; // вычисляем расстояние в сантиметрах Serial.print(cm); // выводим расстояние в сантиметрах Serial.println(" cm"); delay(500); }
У Strela с пинами все довольно сложно. Часть пинов используется для управления интегрированными устройствами. Например пин 10. Часть реализована через мультиплексор и функционально ограничены. Нужно аккуратно выбирать пины. http://wiki.amperka.ru/продукты:strela