Ну после каждого она не равна millis, проблема то в другом, а именно используется одна и та же переменная previousMillis для разных интервалов и они мешают друг другу, и sw тоже общая, а надо свою.
В общем надо или динамической массив переменных, или заранее создавать переменные, и в обоих случаях передавать ключ в функцию, например, smartdelay(0, 1000); smartdelay(1, 2000); а в функции уже использовать ключ, sw[key] = ... и т.п.
Ну после каждого она не равна millis, проблема то в другом, а именно используется одна и та же переменная previousMillis для разных интервалов и они мешают друг другу, и sw тоже общая, а надо свою. В общем надо или динамической массив переменных, или заранее создавать переменные, и в обоих случаях передавать ключ в функцию, например, smartdelay(0, 1000); smartdelay(1, 2000); а в функции уже использовать ключ, sw[key] = ... и т.п.
Ну после каждого она не равна millis, проблема то в другом, а именно используется одна и та же переменная previousMillis для разных интервалов и они мешают друг другу, и sw тоже общая, а надо свою. В общем надо или динамической массив переменных, или заранее создавать переменные, и в обоих случаях передавать ключ в функцию, например, smartdelay(0, 1000); smartdelay(1, 2000); а в функции уже использовать ключ, sw[key] = ... и т.п.
Да, не заметил, но там чуть поправить надо, иначе sw 1, только один цикл будет, почти всегда будет 0. Ну и оптимизировать, чтобы if, if не делать, просто sw[i] = и x, y, также на i заменить, а сверху объявить previous и sw[] = {0, 0}; и добавлять по мере надобности.
Да, не заметил, но там чуть поправить надо, иначе sw 1, только один цикл будет, почти всегда будет 0. Ну и оптимизировать, чтобы if, if не делать, просто sw[i] = и x, y, также на i заменить, а сверху объявить previous и sw[] = {0, 0}; и добавлять по мере надобности.
Все нормально там работает. х = 1 с частотой 1Гц. у = 1 с частотой 0,5Гц. то что можно написать подругому или оптимизировать, спорить не буду, написал как могу, програмирую только вторую неделю, с массивами еще не разобрался.
ЗЫ. точнее наверное сказать х = 1 раз в секунду, у = 1 раз в две секунды
Частота то такая, но светодиод будет светить всего 100мс, как указано в delay. А когда используют millis, то значит для того чтобы не использовать delay, и вот если убрать delay, то можно даже не заметить вспышки. Так что там, что-то типа такого можно написать: sw[i] = !sw[i]; правда тогда будет, 1 сек. горит, 1 не горит, и с 2мя также, тоже не очень, значит надо разные интервалы свечения и не свечения делать.
сначала (тихонько в углу, чтобы никто не видел) рисуешь её для себя, потом пишешь код, и когда тебя спрашивают про алгоритм, постишь фото с этими кубиками и описанием к каждому подробно.
а если ты и сам не знаешь чего хочешь, то как же тебе помочь?
сначала (тихонько в углу, чтобы никто не видел) рисуешь её для себя, потом пишешь код, и когда тебя спрашивают про алгоритм, постишь фото с этими кубиками и описанием к каждому подробно.
а если ты и сам не знаешь чего хочешь, то как же тебе помочь?
prevMillis после каждого прохода равна millis() и никогда не достигнет разницы в две секунды.(((((
Вам уже ответили, почему не работает.
Вам уже ответили, почему не работает.
просто просили расписать как не работает
Ну после каждого она не равна millis, проблема то в другом, а именно используется одна и та же переменная previousMillis для разных интервалов и они мешают друг другу, и sw тоже общая, а надо свою.
В общем надо или динамической массив переменных, или заранее создавать переменные, и в обоих случаях передавать ключ в функцию, например, smartdelay(0, 1000); smartdelay(1, 2000); а в функции уже использовать ключ, sw[key] = ... и т.п.
В 37 посту это тоже уже было http://arduino.ru/forum/programmirovanie/podskazhite-po-funktsii#comment-165330
Спасибо, я тоже склоняюсь в эту сторону
Да, не заметил, но там чуть поправить надо, иначе sw 1, только один цикл будет, почти всегда будет 0. Ну и оптимизировать, чтобы if, if не делать, просто sw[i] = и x, y, также на i заменить, а сверху объявить previous и sw[] = {0, 0}; и добавлять по мере надобности.
Все нормально там работает. х = 1 с частотой 1Гц. у = 1 с частотой 0,5Гц. то что можно написать подругому или оптимизировать, спорить не буду, написал как могу, програмирую только вторую неделю, с массивами еще не разобрался.
ЗЫ. точнее наверное сказать х = 1 раз в секунду, у = 1 раз в две секунды
Частота то такая, но светодиод будет светить всего 100мс, как указано в delay. А когда используют millis, то значит для того чтобы не использовать delay, и вот если убрать delay, то можно даже не заметить вспышки. Так что там, что-то типа такого можно написать: sw[i] = !sw[i]; правда тогда будет, 1 сек. горит, 1 не горит, и с 2мя также, тоже не очень, значит надо разные интервалы свечения и не свечения делать.
сделал вот так, все работает
Функцию можно сократить до:
да можно, но у меня она будет работать по другому, поэтому мне надо сначала приравнять
чтобы начинало правильно считать
всем спасибо, все работает как надо
вот на этом месте тебя должны начать бить
Есть такое понятие: блок-схема программы.
сначала (тихонько в углу, чтобы никто не видел) рисуешь её для себя, потом пишешь код, и когда тебя спрашивают про алгоритм, постишь фото с этими кубиками и описанием к каждому подробно.
а если ты и сам не знаешь чего хочешь, то как же тебе помочь?
пы.сы.
блок-схема - это важно
вот на этом месте тебя должны начать бить
Есть такое понятие: блок-схема программы.
сначала (тихонько в углу, чтобы никто не видел) рисуешь её для себя, потом пишешь код, и когда тебя спрашивают про алгоритм, постишь фото с этими кубиками и описанием к каждому подробно.
а если ты и сам не знаешь чего хочешь, то как же тебе помочь?
пы.сы.
блок-схема - это важно
вот и иди туда
http://arduino.ru/forum/programmirovanie/arduino-rasshirennaya-peredacha-dannykhv-tom-chisle-na-processing