Первый скетч, раскритикуйте плиз.
- Войдите на сайт для отправки комментариев
Пнд, 25/02/2013 - 20:08
Доброе время суток уважаемые форумчане.
Дождался я наконец то сенсоры, и вот выкладываю первое творение своих шаловливых ручек. Сознаюсь сразу что чесно скопировал из других скетчей, и прошу подсказать мне как этот код сделать более компактным и стройным.
// подключаем библиотеки для работы с LCD и Ультрасоником #include <LiquidCrystal.h> #include <Ultrasonic.h> Ultrasonic ultrasonic(8, 9); // Цепляем Соник на: Trig - 8, Echo - 9 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); // инициализируем LCD, указывая контакты данных void setup() { //Serial.begin(9600); // start the serial port lcd.begin(16, 2); // указываем размерность экрана и начинаем работать lcd.print("Hello, world!"); // пишем первую строку // Пишем вторую строку lcd.print("I love Habr!"); } void loop() { //float dist_cm int dist = ultrasonic.Ranging(CM); // get distance lcd.clear(); lcd.setCursor(0, 1); // сдвигаем курсор на вторую строку, первый столбец (нумерация с 0) lcd.print("DISTANCE"); lcd.setCursor(10, 1); // сдвигаем курсор на вторую строку, 10 столбец (нумерация с 0) lcd.print(dist); lcd.print(" CM"); if (dist >4, dist <= 10) // если дистанция более 4 см, но меньше 10 см { lcd.setCursor(0, 0); lcd.print("DANGER"); //светим надпись "Опасность" } if (dist <= 4) // если дистанция меньше или равно 4 см { lcd.setCursor(10, 0); lcd.print("STOP"); //светим надпись "Стоп" } if (dist > 20) // если дистанция более 20 см { lcd.setCursor(0, 0); lcd.print("Forward"); // светим надпись "Вперед" } delay(500); // пауза пол сек. }
Странно что компилятор пропустил вот такую конструкцию
работает? что у вас на самом деле происходит в этой строке знает только компилятор, поэтому замените лучше на такую:
Мне кажется, что в логику ветвлений забрался глюк, хотя может так и задумано
Что будет делать если дистанция меньше 4 - понятно
больше 4, но меньше 10 - понятно
больше 20 - понятно
А вот больше 10, но меньше 20 - непонятно. Хотя может так задумано.
maksim спасибо за подсказку, еще одна песчинка в мою пустую копилку.
А подскажи, можно ли это код взять за основу для управления эл. машинкой? поставить туда три соника: один вперед и два по бокам и управлять ею на основе показаний с них?
Я так понял что для каждого оника надо будет завести свою строчку типа так:
ну и соответственно и вывода подключить на разные пины. Я прав?
На экране горит "DANGER". Я еще не разобрался, по идее надо чтоб гасла надпись, но пока горит.
В каждом операторе if нужно очищать дисплей один раз при запуске этого оператора.
Есть болле дровяной метод. Во все ячейки дисплея, кроме тех куда выводится каждая конкретная надпись, вписывать пробелы.
В каждом операторе if нужно очищать дисплей один раз при запуске этого оператора.
А команда очистки действует на весь экран сразу, или есть возможность очищать этой командой адресно?
И что можете сказать по поводу поста #3, я прав или нет?
>>А команда очистки действует на весь экран сразу, или есть возможность очищать этой командой адресно?<<
На весь сразу.
>>И что можете сказать по поводу поста #3, я прав или нет?<<
Я бы как минимум поставил датчики разного класса. Как максимум выкинул УЗ и поствил ИК (только не дальномер).
И поставил бы я его на серву.
Я бы как минимум поставил датчики разного класса. Как максимум выкинул УЗ и поствил ИК (только не дальномер).
И поставил бы я его на серву.
К сожалению в наличии пока только УЗ в количестве 3 шт.
У меня есть РУ машинка, я хочу выкинуть с нее приемник а регулятор двигателя и рулевую серву оставить, поставить туда дуину чтоб она сама каталась.
P.S.
Вот новый вариант кода, добавил PWM управление контрастом и яркостью дисплея, и еще по мелочи.