Официальный сайт компании Arduino по адресу arduino.cc
Инвалид в программировании
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 12/09/2017 - 22:12
Начал заниматься программированием и создал вот такой скетч для устройства управления звуковым сигналом при открытой двери более 15ти секунд. Millis покачто не освоил в полной мере. Вот выношу на ваш суд супер топорную программу (если её можно так назвать). Может кто советом поможет.
const int ledPin = 7;
// const int ledPin2 = 8;
const int buttonPin =2;
int Bstate = LOW;
// unsigned long previousMillis = 0;
// const long interval = 2500;
// const long interval_3 = 300;
int ledState = LOW;
//int butonState = digitalRead(buttonPin);
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}
void loop() {
Bstate = digitalRead(buttonPin);
// unsigned long currentMillis = millis();
// unsigned long currentMillis2 = millis();
Serial.begin(9600);
Serial.println(Bstate);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
delay(10);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
delay(10);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
delay(10);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
delay(10);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
delay(10);
Bstate = digitalRead(buttonPin);
if (Bstate == HIGH)
{
delay(2000);
digitalWrite(ledPin, HIGH);
Bstate = digitalRead(buttonPin);
}
else
digitalWrite(ledPin, LOW);
delay(2000);
Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
}
// if (currentMillis - previousMillis >= interval)
// previousMillis = currentMillis;
Вы инвали не только в программировании, Вы ещё и читать не умеете. Иначе прочитали бы как на этом форуме положено выкладывать код.
Увидел только эту кнопку. Подскажите по миллис как его понять.
Увидел только эту кнопку. Подскажите по миллис как его понять.
Если НЕ нашли кнопки чтобы правильно прикрепить код, думаю вы НЕ поймете "милис"...
Увидел только эту кнопку.
Почитайте http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Увидел только эту кнопку. Подскажите по миллис как его понять.
Вы чего-то недопоняли. Пока код не вставлен как положено, его вряд ли кто-нибудь вообще смотреть будет. Я не буду точно.
Данная программа не компилируется потому, что в строке 14 используется необъявленная переменная ledPin2. Это был Ваш вопрос? Если нет, потрудитесь сформулировать вопрос понятнее.
У меня всё компелируется и работает нормально, Вопрос в том что как заменить данную конструкцию с помошью оператора "millis". Или может быть у кого-то есть принципиально новое решения таймера в этой среде.
У нас не компилируеца, не тот скеч нам подсунули
может быть у кого-то есть принципиально новое решения таймера в этой среде.
в Сколково есть нанотаймеры.
У меня всё компелируется и работает нормально,
Так, вечер перестаёт быть томным.
Берёте код из Вашего поста №6 (прямо из поста копипастом), проверяете и соглашаетесь, что он не компилируется. После этого постите правильный код копипастом из IDE, чтобы не получалось, что мы смотрим разные коды, как это есть сейчас.
Если же у Вас компилируется код из Вашего поста №6, то Вам лучше обратить в другой форум
А вообще еще хорошо бы внятно сформулировать логику работы программы, что есть, что должно делаться и по каким условиям.
Вообще в идеале нужно: дверь 15 секунд открыта загорается светодиод, еще 3 секунды включается зумер, походят развязные роскошные девочки с 3им размером(про девочек с 3им размером шутка, конечно же с 4ым).
Давайте,для начала определимся. что у нас не компилируется и выложим таки правильный скетч, а то ведь девочки засмеют!
Вот оригинальный код, работает клЯнусь. Там много лишнего потому что пытался сделать по "нормальному". Но он работает точно...
Ну, вот так бы сразу. Нафига было сюда неправильный код постить? Поиздеваться?
Ну, а теперь попробуйте прокомментировать это код, что и зачем в нём делается (комментарии умеете вставлять). Зачем Вы чёртову уёму раз кнопку опрашиваете и т.д., просто построчно прокомментируйте.
Сейчас работу текущую разгребу...
А если в течении delay(2000) разомкнулась и снова замкнулась, как МК об этом узнает?
А если в течении delay(2000) разомкнулась и снова замкнулась, как МК об этом узнает?
а, ты когда спишь, себя контролируешь?
а, ты когда спишь, себя контролируешь?
Пока, вроде, да. О памперсах не размышлял.))))
Нет если в течении этого оператора разомкнуть цепь он этого не видит, но это понятно ядро на паузе, но даже после него он продолжает считать что положение не изменилось, пока снова не прочитает строку со значением этой переменной.
Нет если в течении этого оператора разомкнуть цепь он этого не видит, но это понятно ядро на паузе, но даже после него он продолжает считать что положение не изменилось, пока снова не прочитает строку со значением этой переменной.
это был риторический вопрос, заданный для того, что бы ты не отвечал, а запустил мыслительные процессы в предмете, который у тебя формально считается мосгом.
Вообще вопрос филосовский, как работает работает эта функция, как её понять (millis). Для подобной задачи я использую и вот такой скетч(его подобие), но с ним не так лекгко работать. Может есть кто простым языкам расскажет физический смысл для таких долбозавров как я... Книгу Джеремми Блума я потихоньку читаю, но интересно услышать мысли умных людей.
Чтобы понять, расскажи начиная с 13 строки, своими словами, что в какой момент происходит. Если неверно, подправлю.
мысли умных людей.
С этим напряг :)
Вообще вопрос филосовский, как работает работает эта функция, как её понять (millis). Для подобной задачи я использую и вот такой скетч(его подобие), но с ним не так лекгко работать. Может есть кто простым языкам расскажет физический смысл для таких долбозавров как я... Книгу Джеремми Блума я потихоньку читаю, но интересно услышать мысли умных людей.
Я тебе прокоментирую этот код, если и так не дойдет, то надежды нет!
Короче я писал длинное письмо... ПК завис... Я всё понял спасибо, смысл в том что "секундомер" начинает работать только тогда когда программа обрашается к строке
if
(currentMillis - previousMillis > interval).
Спасибо за внимание, я уже разобрался. Смысл в том что таймер запускаеться при обращении программы к строке, а я думал что он начинает работать при подачи питания на ардуино сразу.
Спасибо за внимание, я уже разобрался. Смысл в том что таймер запускаеться при обращении программы к строке, а я думал что он начинает работать при подачи питания на ардуино сразу.
- Что за бред? - сразу и начинает. Мы запоминаем показания тогда, когда нужно.
Спасибо за внимание, я уже разобрался. Смысл в том что таймер запускаеться при обращении программы к строке, а я думал что он начинает работать при подачи питания на ардуино сразу.
- Что за бред? - сразу и начинает. Мы запоминаем показания тогда, когда нужно.
Влад, вот поэтому и хотел, чтобы он сам рассказал как видит.
Все. Отползаю. У меня нет скилла в коррекционной педагогике.
Надо бы админа попросить из проектов это убрать в программирование или в общий.
Убрано в программирование, хотя мне более уместными кажутся "Отвлечённые темы".
Короче я писал длинное письмо... ПК завис... Я всё понял спасибо, смысл в том что "секундомер" начинает работать только тогда когда программа обрашается к строке
if
(currentMillis - previousMillis > interval).
Ну, да, всё правильно, это такой солипсистский таймер и существует только в "сознании" программы, а пока программа на него не посмотрит, его и нет вовсе. Всё правильно :)
Ну в принципе это не влияет ведь мы вычитаем предыдущие значение... правильно?
Я понял как он работает физически, очень всем признателен. Действительно понял физический смысл.
Ну в принципе это не влияет ведь мы вычитаем предыдущие значение... правильно?
Предыдущие, чего?
Если поняли, то модифицируйте, чтобы две секунды горел светодиод, а пять секунд пауза.))))
Попробую.
Сало как сало, чего его пробовать. Если поняли, то там делов на пять минут.