Подскажите новичку
- Войдите на сайт для отправки комментариев
Пт, 12/08/2016 - 20:41
//имитатор датчика глубины #define SK_PLUS 13 //импульсы по одному проводу (датчик вращается по часовой) #define SK_MINUS 12 //импульсы по другому проводу (датчик вращается против часовой) #define LED 11 //светодиод индикатор 10 оборотов void setup() { pinMode(SK_MINUS, OUTPUT); pinMode(SK_PLUS, OUTPUT); pinMode(LED, OUTPUT); } void loop() { for (int x = 0; x < 100; x++) { digitalWrite(SK_PLUS, HIGH); delay(100); digitalWrite(SK_PLUS, LOW); delay(100); if (x == 10 ) { //моргает через 10 циклов for всего один раз digitalWrite(LED, HIGH); //как сделать, что бы через каждые 10 метров(циклов) delay(100); //вспыхивал светодиод digitalWrite(LED, LOW); delay(100); } } for (int y = 0; y < 100; y++) { digitalWrite(SK_MINUS, HIGH); delay(100); digitalWrite(SK_MINUS, LOW); delay(100); if (y == 10, 20, 30, 40, 50) { digitalWrite(LED, HIGH); delay(100); digitalWrite(LED, LOW); } } }
if (x % 10 == 0)
Спасибо огромное
Подскажите пожалйуста как этот код написать без delay?
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Попробуйте сменить подход. Вот Вам пример для спуска, для подема напишите сами. Код делает тоже что и for но не вешает систему
Во первых, спасибо за правильный вектор
объясните пожалуйста, если вас не затруднит что происходит в 39 и 47 строке
if
(pause(100))
Sharlatan. попробую я объяснить.Хотя vosara код другой, но подход тот же.
Вoт код Blink
На что уходит мощь процессора ? На паузы delay. А вот этот код
На постояную проверку millis.
берем аналогию. У вас есть часы и вы пытаетесь организовать работу по разгрузке машин. Машины приходят по 1 в час. Можно постоянно торчать на месте разгрузки машин . А можно разгрузить машину и свалить с места разгрузки , но поглядывать на часы. Вот это и есть millis(). Но есть маленькая заморочка. Если вы подрядились на почасовую разгрузку машин, вы не можете пойти на весь день на рыбалку. Точнее можете. Но вам придется бегать как Фигаро тут, Фигаро там. Так это я к чему. Программы с millis любят циклы с for. Особенно если они долгие. Вот и приходится размыкать такие циклы. Откладывать следующий проход цикла for, на следующий проход цикла loop.
С 18й по 25ю строчки написана функция паизы "
int
pause(
int
y)"
построеная не на "делай" - которая останавлюет систему а на милис, вот к ней мы и обращаемся не тормозя систему, задав паузу в 100 мс " " номожно задать любое число. После 100 мс возвращается 1 разрешая нам выполнить код в блокеif
(pause(100)) {}