Начал работу с ультразвуковым дальномером. Сначала всё было хорошо всё работало.На следующий день продолжил работу с ним и он мне начал постоянно выдаёт значения около 100 см (+ - 30 см) Я и ардуинки менял и ультразвуковой дальномер менял,НО ничего не происходит. КОД: #define Trig 9 #define Echo 8 #define ledPin 13 void setup() { pinMode(Trig, OUTPUT); //инициируем как выход pinMode(Echo, INPUT); //инициируем как вход pinMode(ledPin, OUTPUT); Serial.begin(9600); /* задаем скорость общения. В нашем случае с компьютером */ } unsigned int impulseTime=0; unsigned int distance_sm=0; void loop() { digitalWrite(Trig, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(Trig, LOW); // Отключаем impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса distance_sm=impulseTime/58; // Пересчитываем в сантиметры Serial.println(distance_sm); // Выводим на порт delay(100); if (distance_sm<30) // Если расстояние менее 30 сантиметром { digitalWrite(ledPin, HIGH); // Светодиод горит } else { digitalWrite(ledPin, LOW); // иначе не горит } delay(100); /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. */ } Ребят помогите.Мне разобраться с этой "летучей мышью" очень важно.
Загоните код в специальную вставку вот так: Код (C++): unsigned int getDistance(byte trig, byte ping) { // указать тригерную и приемную ноги unsigned int duration = 0; unsigned int Distance = 0; digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(ping,HIGH); Distance = duration/29/2; return Distance; } Если все работало, а потом вдруг перестало, значит проблема в контактах. Проверьте те места, которые не меняются при смене датчиков и ардуин.
Если все работало, а потом вдруг перестало, значит проблема в контактах. Проверьте те места, которые не меняются при смене датчиков и ардуин.[/QUOTE] Растолкуйте пожалуйста. В рамочку брать раньше пытался, но не получалось.Научите пожалуйста.
Растолкуйте пожалуйста. В рамочку брать раньше пытался, но не получалось.Научите пожалуйста.[/QUOTE] Красным выделил
Я слегка не корректно написал. Растолкуйте пожалуйста код. Код (C++): unsigned int getDistance(byte trig, byte ping) { // указать тригерную и приемную ноги unsigned int duration = 0; unsigned int Distance = 0; digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(ping,HIGH); Distance = duration/29/2; return Distance; } Учусь.
На излучатель подается импульс. Приемник засекает время за которое звук вернется (точнее его окончание) от препятствия и далее, зная скорость звука, мы вычисляем расстояние до этого препятствия. Попробовали этот код у себя? Главное не забывать между вызовами этой функции делать паузу милисекунд 10.
А где сетап и луп? Я поставил в таком же виде как вы мне его дали и он мне выдаёт ошибку нет лупа и сетапа К чему подключены пи ны УЗ дальномера? И почему с самого начало всё работало а сейчас нет?
Я самоучка сам по книжке одной учусь и про функции там не сказано. Можете посоветовать в каких источниках я могу повысить свой навык.
В интернете можно найти все и в первую очередь обучающие статьи с примерами. Первая же ссылка раскрывает тему. Вы мини-проекты из Амперкиной википедии поделвли бы, они очень неплохо дают стартовые умения и понимания.
вот два неплохих пособия для чайников: http://robot-kit.ru/manual/Arduino_Sketch_Robot-kit.ru.pdf http://robocraft.ru/files/books/arduino_notebook_rus_v1-1.pdf