Преобразования аналогового значения в интервал для millis.
- Войдите на сайт для отправки комментариев
Чт, 22/02/2018 - 13:20
Всем привет!!! Разобрался ноконец с millis и возник вопрос, как с помощью переменного резистора изменять интервал? Пример скетча ниже подтолкните на мысль как измненять интервал резистором?
if (digitalRead(button1Pin) == 0)
if (ledState == LOW)
led1OnTime = millis();
if(millis() - led1OnTime > 1000) {
digitalWrite(led1Pin, 1);
led1On = 1
Вот так "читаем" резистор
Вот так преобразуем в интервал нужный
есть хорошая функция map()
int interval;//переменная которую будет менять резистором
interval=map(analogRead(pin),0,1023,0,1000);
if(millis()-ledOnTime>=interval){\\действие}
Я совсем не долго в ардуино, общий смысл понял но еще трудно с граматикой ардуино если не сложно напишите примерчик .
Хотябы до
Буду очень благодарен,
"граматика" Arduino прекрасно описана Керниганом и Ритчи в 60-х годах прошлого века. Осталось только почитать.
Типа такого ?
Тоесть пишем setup что
?
видима, чукча не читатель...
Получилось вот так но диод горит не ярко
int interval = analogRead(0); if (digitalRead(button1Pin) == 0) if (ledState == LOW) led1OnTime = millis(); if(millis() - led1OnTime > interval) { digitalWrite(led1Pin, 1); led1On = 1;Просто подсказать нелзя ?
Просто подсказать нелзя ?
пример из #3 чем не устраивает?
Без сарказма?
Не могу вписать выбивает ошибку.
Не пойму почему диод горит тускло ? interval привязал к резистору но что то не так где ошибка ?
Не могу вписать выбивает ошибку.
какую?
mag155 - вы на форуме 2 месяца. За два месяца вы открыли несколько новичковых тем с элементарными вопросами, но так и не удосужились прочитать хоть что-то про язык программирования, на котором пишете
Какого вы отношения к себе ждете?
Варианта два я вижу: резистор неправильный или Си нечестный.
Не пойму почему диод горит тускло ?
где вы видите такую строку в сообщении #3? - если сами ничего не смыслите, так хотя бы копируйте правильно.
const int button1Pin = 2; const int led1Pin = 4; unsigned long led1OnTime; int ledState = 0; bool led1On; void setup() { pinMode(led1Pin, OUTPUT); pinMode(button1Pin, INPUT); led1On = false; } void loop() { int interval; interval=map(analogRead (0),0,1023,0,1000); if (digitalRead(button1Pin) == 0) if (ledState == LOW) led1OnTime = millis(); if(millis() - led1OnTime > interval) { digitalWrite(led1Pin, 1); led1On = 1; } if (digitalRead(button1Pin) == 1) digitalWrite(led1Pin, 0); }Вот код.
А светодиод как подключен? - почему вы его зажигаете низким уровнем, а тушите высоким
Это не код, это пес...ц.
Теперь русским языком рассказывайте, что вы хотите получить. По шагам, плиз.
25 строка ошибка уровней спасибо всем за советы.
А светодиод как подключен? - почему вы его зажигаете низким уровнем, а тушите высоким
Вы еще про это спросите:
led1OnTime = millis(); if(millis() - led1OnTime > interval) {Я всё смотрел в телевизоре передачи про зомби и думал, что это выдумка. Но теперь всё больше убеждаюсь, что нет - они есть и зохватывают мир.
25 строка ошибка уровней спасибо всем за советы.
ошибок там не одна и не две.
Вы еще про это спросите:
led1OnTime = millis(); if(millis() - led1OnTime > interval) {я собирался :) Просто с этим скетчем светодиод вообще не должен гореть - а у ТС он "горит тускло" - вот я и заинтересовался.
А сам скетч меня не удивил - это автор такой :) я ник ТС уже запомнил про прошлым его темам.
Эстрада клоунов в вас много потеряла.
К стати все четко работает
Эстрада клоунов в вас много потеряла.
Маг, неужели до вас не доходит, что главный клоун в этой ветке - вы. Вы звезда! Мы в ваши ветки как на представленье ходим.
А зачем там вообще кнопка ? Что она делает ? Нажимаем и начинает мигать, нажимаем ещё раз перестает ?
К стати все четко работает
попробуйте поменять интервал резистором :)
Четко работает интервал меняется.
Получилось вот так но диод горит не ярко
int interval = analogRead(0); if (digitalRead(button1Pin) == 0) if (ledState == LOW) led1OnTime = millis(); if(millis() - led1OnTime > interval) { digitalWrite(led1Pin, 1); led1On = 1;Никто же вам не писал, что это просто можно взять и вставить в код.
Вам объяснили как написать отдельные фрагменты кода.
int interval; в сетапе, тьфу в каком нахер сетапе, выше сетапе , где все переменные, хотя пофиг объявляйте где хотите. В вашем случае и так будет работать.
В лупе значения считать и заремапить,
А строку с интервалом надо вообще вставлять в свое условие, и не забывать обновлять значение интервала.
Вроде пишите, что с миллисом разобрались.
правильный вопрос "Зачем там вообще ВСЕ?" - ибо интервал, заданный резистором - не используется, условие с миллис никогда не выполняется, переменная led1on задается. но никде не читается...
И это через 2 месяца чтения форума.
Эстрада клоунов в вас много потеряла.
Вот ей богу, вы препираться приходите или поучиться? Если второе, то наступаем на собственное самомнение и начинаем работать. Выбросьте свое сочинение и ответьте на ранее заданный мною вопрос. Если поп-ть, то без меня.
Четко работает интервал меняется.
врете.
Или код в ардуине совсем другой
Нужно менять интервал резистором
короче. ставлю на то, что скоро Маг придет и скажет, что при переносе кода в форум сделал несколько описок, а на самом деле код совсем другой - белый и пушистый :)
Продолжайте без меня, пойду работать, всем удачно повеселиться :)
я изначально так и сделал но не работает так как вы рекомендуете.
Да и припиратся я вовсе не хочу
Код чесно такой и все четко работает.
Но правельней конечно будет так
int interval; const int button1Pin = 2; const int led1Pin = 4; unsigned long led1OnTime; int ledState = 0; bool led1On; void setup() { int interval; pinMode(led1Pin, OUTPUT); pinMode(button1Pin, INPUT); led1On = false; } void loop() { interval=map(analogRead (0),0,1023,0,1000); if (digitalRead(button1Pin) == 0) if (ledState == 0) led1OnTime = millis(); if(millis() - led1OnTime > interval) { digitalWrite(led1Pin, 1); led1On = 1; } if (digitalRead(button1Pin) == 0) digitalWrite(led1Pin, 0); }Особенно interval в сетапе.
Маг, чем такой код лечить, проще новый написать. Я сейчас отъеду, а когда вернусь, если хотите, то напишете по шагам, что и как должен делать ваш код (просто русским языком, по пунктам). После можно начинать его писать в виде программы.
Буду благодарен если поможете
Удалить забыл.
то напишете по шагам, что и как должен делать ваш код (просто русским языком, по пунктам). После можно начинать его писать в виде программы.