Что такое «Continue statement not within a loop»…?
- Войдите на сайт для отправки комментариев
Пнд, 13/01/2014 - 01:31
Написал (точнее немного изменил) простейший пример скетча для управления яркостью светодиода. По идее он должен медленно увеличивать яркость, а затем при достижении максимума сразу гасить светодиод.
Примерно так:
Вот код скетча:
int led = 9; // вывод для подключения светодиода int brightness = 0; // начальная яркость int fadeAmount = 5; // шаг измениния яркости void setup() { pinMode(led, OUTPUT); // настраиваем на выход } // бесконечный цикл void loop() { // яркость на выходе led бедет равна... analogWrite(led, brightness); // пошагово изменяем яркость в цикле... brightness = brightness + fadeAmount; // когда яркость повысится до 200, // cбрасываем напряжение со светодиода if (brightness == 200) {fadeAmount = -200;} else continue; // пауза 30 мс delay(30); }
Но в итоге, почему-то программа выдает ««Continue statement not within a loop»…?
Помогите пожалуйста? Что я написал неправильно? Что нужно изменить?
Раз уж не понимаете зачем эта строка, то выкинбте ее просто из скетча. Но работать все равно будет неправильно )))
Раз уж не понимаете зачем эта строка, то выкинбте ее просто из скетча. Но работать все равно будет неправильно )))
Почему неправильно? Буквально, если перевести эти две строки
с языка Arduino на нормальный, то получится:
ЕСЛИ яркость увеличиться до значения 200, ТОГДА уменьшить её значение на 200.
ИНАЧЕ ПРОДОЛЖИТЬ
Разве это не соответствует алгоритму, приведенном на графике в начале темы? В чем тогда ошибка???
Попробуйте написать так:
а else убрать.
оператор continue используется внутри циклов do/for/while. А "цикл" по-английски "loop".
А "loop", который "void ..." - это вовсе не цикл, а очень даже функция.
На что вам компилятор мягко намекаЭ...
Почему неправильно? Буквально, если перевести эти две строки
с языка Arduino на нормальный, то получится:
ЕСЛИ яркость увеличиться до значения 200, ТОГДА уменьшить её значение на 200.
ИНАЧЕ ПРОДОЛЖИТЬ
да, это с ардуинского на русский, но в гоблинском переводе :)
fadeamount - не яркость, а шаг изменения яркости
Народ, что вы стебаетесь над человеком, просто помогите и все. Видно же, что начинающий программер, у него еще все впереди, а так охоту отобьете заниматься.
Народ, что вы стебаетесь над человеком, просто помогите и все. Видно же, что начинающий программер, у него еще все впереди, а так охоту отобьете заниматься.
запретить отбивать охоту заниматься!
Народ, что вы стебаетесь над человеком, просто помогите и все. Видно же, что начинающий программер, у него еще все впереди, а так охоту отобьете заниматься.
да никто не стебется, это ободряющее дружеское похлопывание по плечу :)
Народ, что вы стебаетесь над человеком, просто помогите и все. Видно же, что начинающий программер, у него еще все впереди, а так охоту отобьете заниматься.
Тут все просто. Либо начинаешь с азов, либо лепишь "красивый" код и веселишь народ. Бумажку с ручкой + ручной прогон алгоритма еще никто не отменял.
Раз уж не понимаете зачем эта строка, то выкинбте ее просто из скетча. Но работать все равно будет неправильно )))
Почему неправильно? Буквально, если перевести эти две строки
с языка Arduino на нормальный, то получится:
ЕСЛИ яркость увеличиться до значения 200, ТОГДА уменьшить её значение на 200.
ИНАЧЕ ПРОДОЛЖИТЬ
Разве это не соответствует алгоритму, приведенном на графике в начале темы? В чем тогда ошибка???
Не соответствует. В Вашем скетче написано
ЕСЛИ яркость увеличиться до значения 200, ТОГДА изменить шаг увеличения яркости за проход на -200.
И уже через максимум 2 прохода у нас яркость становится -200 и продожает уменьшатся. Все! Поздравляю! Вы создали черную дыру и нашей галактики приходит веселый пушной зверек!
Не соответствует. В Вашем скетче написано
ЕСЛИ яркость увеличиться до значения 200, ТОГДА изменить шаг увеличения яркости за проход на -200.
И уже через максимум 2 прохода у нас яркость становится -200 и продожает уменьшатся. Все! Поздравляю! Вы создали черную дыру и нашей галактики приходит веселый пушной зверек!
мне кажется, что чёрная дыра должна иметь категрически нулевую яркость - отрицательную яркость будет иметь источник антивещества, низвергающийся в нашу вселенную.
мне кажется, что чёрная дыра должна иметь категрически нулевую яркость - отрицательную яркость будет иметь источник антивещества, низвергающийся в нашу вселенную.
Антивещество просто аннигилирует, черная дыра в свою очередь имеет настолько отрицательное давление после коллапса супер-гиганта, что засасывает все включая световые волны. В общем брутальная смесь пылесоса и Саши Грэй.
Написал (точнее немного изменил) простейший пример скетча для управления яркостью светодиода. По идее он должен медленно увеличивать яркость, а затем при достижении максимума сразу гасить светодиод.
Примерно так:
График красивый. Без него я бы не понял суть и ничем бы не помог :)
Помогите пожалуйста? Что я написал неправильно? Что нужно изменить?
Запусти исправленный код. Но, вообще, начинать надо с азов программирования, с какой-либо книжки по С++.
мне кажется, что чёрная дыра должна иметь категрически нулевую яркость - отрицательную яркость будет иметь источник антивещества, низвергающийся в нашу вселенную.
Это так должно казаться наблюдателю снаружи. Внутри она очень яркая, просто свет не может вырваться за её пределы.
Написал (точнее немного изменил) простейший пример скетча для управления яркостью светодиода. По идее он должен медленно увеличивать яркость, а затем при достижении максимума сразу гасить светодиод.
Примерно так:
График красивый. Без него я бы не понял суть и ничем бы не помог :)
Помогите пожалуйста? Что я написал неправильно? Что нужно изменить?
Запусти исправленный код. Но, вообще, начинать надо с азов программирования, с какой-либо книжки по С++.
Ваш код работает правильно! Большое СПАСИБО за подсказку! Но теперь у меня появился ещё вопрос, как добавить паузу после того, как светодиод погаснет! То есть, чтобы он не сразу начинал увеличивать яркость, а например через 1-2 секунды! Я попробовал дописать в код "delay(1000);" Вот так:
Но почему-то код не работает, так как я думал! По идее ведь после того, как яркость достигнет 200, она должна стать нулевой и затем
Но работает почему-то не так??? Подскажите ПОЖАЛУЙСТА почему? В чём здесь ошибка???
Вы обнулили яркость, но это только переменная! Вначале новое значение нужно отправить в порт!
То есть сделать так:
Иначе, как светодиод узнает, что его обнулили?
Да! Вы правы! Об этом я к сожалению не подумал. Большое спасибо Вам за подсказку!
C помощью цикла FOR легко задать увеличение/уменьшение яркости по отдельности, а вот интересно можно ли обойтись без него, чтобы изменять яркость так:
Это возможно без цикла FOR ?
C помощью цикла FOR легко задать увеличение/уменьшение яркости по отдельности, а вот интересно можно ли обойтись без него, чтобы изменять яркость так:
Это возможно без цикла FOR ?
Так или иначе циклическая конструкция будет присутствовать. Та же функция loop() вызывается внутри цикла -- только ты из неё вышел, как сразу она начала исполняться сначала. Процессор должен постоянно исполнять какие то инструкции, поскольку память конечна, то они исполняются по циклу :)
... Но, вообще, начинать надо с азов программирования, с какой-либо книжки по С++.
Я новичок и в программировании ни бум бум... Посоветуйте ПОЖАЛУЙСТА, с какой книжки по C++ начать? Желательно, чтобы в ней всё было описано просто и понятно - без трехэтажных формул и заумных выражений!
И ещё важный вопрос! Программирование микроконтроллеров лучше начинать с C++ или с ассемблера? Как думаете, что проще ? И что перспективнее?
Сколько времени нужно потратить, чтобы научиться писать программы (имею ввиду не мигание светодиодами ), а те что выполняют реально полезные функции?