Помощь с кодом
- Войдите на сайт для отправки комментариев
Вс, 23/12/2012 - 19:13
Здравствуйте. В этом совсем новичок. Помогите пожалуйста с кодом. Не происходит компиляция кода. Использовал пример для работы с ультразвуковым датчиком (делал парктроник).
Вот принципиальная схема
и сам код:
/* Ping))) Sensor Схема: * +V выход датчика подсоединяется к +5V * GND выход датчика подсоединяется к земле * SIG выход датчика подсоединяется к цифровому выводу 7 */ pinMode(13, OUTPUT); // синий pinMode(12, OUTPUT); // зеленый pinMode(11, OUTPUT); // красный const int pingPin = 7; void setup() { Serial.begin(9600); } void loop() { long duration, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // конвертируем время в расстояние cm = microsecondsToCentimeters(durations); // показ определенного цвета, в зависимости от расстояния if(cm > 0 && cm <= 15) { // горит красный цвет digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, HIGH); } else if(cm <= 60 && cm > 15) { // горит голубой digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(13, HIGH); } else { // горит зеленый цвет digitalWrite(13, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(1000); } long microsecondsToCentimeters(long microseconds) { // Скорость звука 340 м/с или 29 мкс на сантиметр. // Во время измерения расстояния волна проходит туда и обратно, // поэтому нужно еще поделить пополам полученное значение от датчика return microseconds / 29 / 2; }
Не хватает данных - ссылки на даташит датчика, упоминания, что за микроконтроллер используется..
И на вскидку видно несоответствие схемы и кода. На схеме датчик подключается к ADC1 (это A1 или что?), а в скетче используется pingPin (7).
Кстати, откуда эта схема?
Микроконтроллер arduino duemilanove (atmega 168). Признаюсь честно, мне схему скинули.
а датчик-то какой? куда он "по правде" подключен?
Человеку делали курсовой, после того как сбросили данные, больше не отвечают. Могу сбросить ту часть, где идет разработка. Сам я не разбираюсь. Может там что и указано.
с такой "постановкой задачи", боюсь, помощь придет не скоро...
Вроде датчик Ultrasonic Range Finder
Естественно не компилируется если вы допускаете грубейшие синтаксические ошибки:
- не верно вызываете функции pinMode(), они должны вызываться в функции setup().
- путаете название переменной duration с durations.
и посмотрите как правильно вставлять код в комментарии.
бралось отсюда http://iwearshorts.com/portfolio/diy-parking-sensor/
Вы просите помощи, но вместо того, чтобы прочитать советы, даже ничего не пытаетесь сделать самостоятельно. Нам не важно, откуда исходники. Если нужен результат, сделайте хотя бы то, что Вам посоветовали. В противном случае - купите готовое и не майтесь
Естественно не компилируется если вы допускаете грубейшие синтаксические ошибки:
- не верно вызываете функции pinMode(), они должны вызываться в функции setup().
Вызов функции pinMode() вне функции setup() не является ошибкой. Тем более грубейшей или синтаксической.
Здесь речь может идти разве что о неоптимальном использовании ресурсов мк - выполнение операции чаще, чем это необходимо по логике задачи.
Естественно не компилируется если вы допускаете грубейшие синтаксические ошибки:
- не верно вызываете функции pinMode(), они должны вызываться в функции setup().
Вызов функции pinMode() вне функции setup() не является ошибкой. Тем более грубейшей или синтаксической.
Здесь речь может идти разве что о неоптимальном использовании ресурсов мк - выполнение операции чаще, чем это необходимо по логике задачи.
Вы о чем? Я не писал что ошибка в том что они вызываются именно вне setup(), ошибка в том что они не верно вызываются. А в конкретном данном случае они (речь шла и идет только о 3-х раз выделенных в коде выше) должны (но не обязаны) вызываться в setup() - это уже совет по исправлению ошибки.
Если считаете что вызывать их так не грубейшая ошибка... то какая это ошибка???
Топик-стартер допускает еще такие грубые ошибки:
1. Не читает прекрепленные ветки http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii (я поправил, в стартовом).
2. Не информативно называет темы (желательно все-таки придумывать какое-то уникальное название темы, хоть и не всегда это просто. 99% тем требуют помощи с к кодом, так что все их так называть?)
Если считаете что вызывать их так не грубейшая ошибка... то какая это ошибка???
Но размещение вызова функции pinMode() вне функции setup() ошибкой не является.
Не забывайте: новички могут понять ваши слова буквально и могут вбить себе в подкорку, что pinMode внутри loop() или любой другой функции кроме setup() - это уже ошибка.
Не забывайте: новички могут понять ваши слова буквально и могут вбить себе в подкорку, что pinMode внутри loop() или любой другой функции кроме setup() - это уже ошибка.
Не волнуйтесь. Как вобъют, так и выбъют. Максим любит в примерах pinMode вместо digitalWrite :)
... а также не при объяелении переменных при условии что функция может возвращать значения.
Не забывайте: новички могут понять ваши слова буквально и могут вбить себе в подкорку, что pinMode внутри loop() или любой другой функции кроме setup() - это уже ошибка.
Не волнуйтесь. Как вобъют, так и выбъют. Максим любит в примерах pinMode вместо digitalWrite :)
Это только с динамической индикацией при прямом подключении к МК.