Помогите разобраться с кодом)
- Войдите на сайт для отправки комментариев
Сб, 31/12/2016 - 01:51
Как зставть не моргать дисплей и серву заставить не гудеть?) может что в коде не то?) не судите строго, самоучка, первый скетч))
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo;
int echoPin = 44; //44 и 45 пин подключен к ультрозвуковому датчику
int trigPin = 45;
int ledPin = 31; //31 и 30 пин светодиоды
int ledPinB = 30;
LiquidCrystal lcd(4, 5, 6, 7, 8, 9); //LCD дисплей
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPinB, OUTPUT);
servo.attach(10); //серво на 10 пину
}
void loop()
{
int duration, cm, mm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); //измеряем продолжительность импульса
cm = duration / 58; // преситываем продолжительность в см и мм
mm = duration / 5.8;
delay (400);
Serial.print(cm); // выводим через последовательный порт на экран результаты
Serial.print(" cm ");
Serial.print(mm);
Serial.println(" mm ");
lcd.begin(16, 2); // выводим а дисплей
lcd.setCursor(3, 0);
lcd.print("ZVUK SONAR");
lcd.setCursor(0, 1);
lcd.print("cm:");
lcd.setCursor(4, 1);
lcd.print(cm);
lcd.setCursor(9, 1);
lcd.print("mm:");
lcd.setCursor(12, 1);
lcd.print(mm);
if (cm >=7 )
{
servo.write(10);
digitalWrite(ledPin, LOW);
digitalWrite(ledPinB, HIGH);
}
if (cm <7)
{
servo.write(170);
digitalWrite(ledPinB, LOW);
digitalWrite(ledPin, HIGH);
}}
сам самоучка, но кажется проблема в delay (400);
Да уж разные значения подставлял и совсем убирал, но если убрать дисплей вообще сильно рябить начинает(
а что это вобще такое , можно в крации . и какая цель ?
а как рябить начинает ? может просто напряжения не хватает , серва много кушает. попробуйте начать просто с дисплея
Короче смысл в том, что при достижении 7 см срабытывает серво а на дисплей выводятся показания) ну еще 2 диода загораются) смысла пока в этом нет, просто эксперимент)
Моргает переодически, серву тоже отключал ничего не миняется, а питание 9 вольт отблока питания
Хотя моргает наверно грубо сказано, не прямо выключается и включается, а еле заметно как текст моргает с периодичностью
внутрений голос подсказывает, что вот тут
Данные правильные, сейчас попробую переделать не много
lcd.begin(16, 2); эту строчку в setup перетащил мигать перестал, зато данные стал не правильные показывать)) ладно короче, в обед попробую еще голову поломать, может что получиться)
Danilka,
Учитывая дату Вашей регистрации, по уму, я должен бы послать Вас нафиг и не реагировать на Ваш пост, т.к. для опытного юзера такое выкладывание скетча недопустимо. Но сегодня, в честь праздника, я добрый, а потому, сделаю Вашу работу за Вас.
А именно, код нужно публиковать вот так:
Теперь, когда есть номера строк, его можно и обсудить, а без номеров как обсуждать-то?.
Мигает и будет мигать, т.к. Вы при каждом проходе loop стираете весь экран (строка 38) и заново выводите всю информацию.
Строке 38 однозначно не место в функции loop и очень хорошо, что Вы её оттуда убрали. Точно также, туда же нужно убрать весь вывод на экран статической (никогда не изменяемой) информации, а именно строки 39-40, 41-42, 45-46 - это никогда не меняется, так зачем выводить это по многу раз? Один раз вывели и достаточно.
Что касается "неправильного вывода" после переноса строки 38 в setup, то посмотрите на строки 44 и 48. Вы там выводите числа. Прежде, чем выводить их надо стирать то. что там было. Иначе, если Вы сначала выведете 321, а потом захотите на то же место вывести 33, у Вас получится 331, т.к. единицу никто за Вас не сотрёт.
Идея понятна? Спрашивайте, если что, только при вопросе публикуйте свежую версию скетча.
С наступающим!
Спасибо за помощь, с наступающим
а питание 9 вольт отблока питания
На всякий случай: в Ардуино есть свой маломощный стабилизатор напряжения на 5 В, который позволяет питать ее от любого напряжения в диапазоне 7-20 В. Но, повторяю, он очень маломощный, поэтому питать от него электромеханику (например, серву) нельзя. Т.е. питание на моторчики, сервы, реле, Wi-Fi и пр. недопустиммо подавать через стабилизатор Ардуино.
Спасибо всем огромное за помощь, всем признателен. С Новым 2017 годом ардуинщики))))
После многочисленных проб и ошибок, а так же уйму потраченного времени, получилось правильно составить скетч) Хотел бы отдельно поблагодорить ЕвгенийП за его так сказать пинок)) а так же за ценный совет andriano и Marchenko за то что откликнулся на мою просьбу)
Вот конечный вариант:
Всего то нужно было перенести строки с 19 по 25 в setup и дописать строки 48...51, 55...58)) Очень хороший получился для меня урок)
Как я понял тоже самое только по другому написано?
Ну да. Как я мог узнать, что вам надо. Просто я предложил вариант, который с моей точки лучше.