Моргает светодиод (для новичков)
- Войдите на сайт для отправки комментариев
Пт, 11/01/2013 - 00:22
Добрый день! Я только знакомлюсь с программированием так что не бросайте камни.!)..
Программа взятая из примера должна плавно зажигать светодиод и так же плавно его гасить по алгоритму , но по какойто причине в момент максимума когда светодид максимально яркий он на долю секунды гаснет потом снова зажигается и только затем начинается плавно затухать. Не пойму в чем ошибка.
#define LED 6
int step (0);
int brightness (0);
int sign;
void setup ()
{
pinMode (LED, OUTPUT);
}
void loop ()
{
analogWrite (LED, brightness);
step++;
sign = (step / 255) % 2;
brightness = sign ? brightness + 1 : brightness - 1;
delay (40);
Обьяснять долго.
Добрый день! Я только знакомлюсь с программированием так что не бросайте камни.!)..
Брошу: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
И почему все считают что очень важно/интересно указать свою новичковость и "знакомплюс с програмированием"?
1. Это не редкость, новичков большинство. Собственно ардуина так и позиционируется
2. Это всегда самоочевидно из вопроса
3. Это не постыдная болезнь за которую нужно извинятся
4. Это вызывает только раздражение (так как читаешь эти реверансы/вступления 10-ть раз на день).
Программа взятая из примера
Кстати очень не удачного примера. Лучше воспользуйте базовым официальный примером.
Идите в открывайте ArduinoIDE, идите в File/Examples/Basic/Fade
Делает он тоже самое, но содержит гораздо меньше подводных камней.
Ну либо прямо тут на сайте посмотрите его, с русскими коментариями
http://arduino.ru/Tutorial/Fade
P.S. Кстати, раз новичок, то советую начать знакомсто с чтения раздела "Програмрование" в шапке сайта и чтения прикрепленных веток на форуме. Так же можете посмотреть всякие соседние ветки. Велика вероятность что вопросы которые у вас будут возникать - уже обсуждались. Поэтому и поиск стоит освоить (вверхнем правом углу сайта).
Всем огромное! Замечанию учту.
я правильно понимаю что лучше писать простыми алгоритмами а не математическими формулами ?
Всем огромное! Замечанию учту.
я правильно понимаю что лучше писать простыми алгоритмами а не математическими формулами ?
Не уподобляйтесь американской домохозяйке которая попав в ДТП выполняя левый поворот на перекрестке - сделала вывод "левые повороты опасны для жизни". И все свои маршруты начала прокладывать с тем что-бы в них были только правые повороты. Наматывыя лишние сотни-километров.
Не нужно делать общий вывод по одному примеру. Все зависит от конретной задачи.
В данном случае, в вашем примере происходит и неявное приведение типов, и переполнение, используется и сокращенный синтаксис, и в голове, что-бы понять, нужно выполнить "остаток от деления" - поэтому Максим и написал "долго объяснять". А пример который "долго объяснять" - явно плохой "пример". Особенно для новичка :)
Поэтому в данном случае, раз без ущерба можно обойтись "простым алгоритмом", на уровне "бытовой логики" - лучше им и обойтись.
Понял буду изучать дальше!Спасибо.
Если человек пишет программы только для себя и никому не показывает, то неважно, как он их пишет, если они работают правильно. Но в наше время - это плохая практика. Поэтому, чтобы другие могли разобраться в тексте программы, мы в нашей группе, например, пишем более простой (без извратов) код, который более читабельный, более понятный, меньше шансов сделать ошибку при исправлениях. Остальное за нас сделает оптимизатор.
Безусловно бывают отступления от этого, когда нужно оптимизировать программу "вручную", в этом случае я рекомендую добавлять понятные и подробные комментарии.
По поводу комментариев - их нужно писать всегда. Поверьте, помогает очень. Иногда бывает, берешь исходник через год и долго вспоминаешь, что это ты там наколбасил, тогда и помогают комментарии, которые вытаскивают из уголков памяти воспоминания о том, для чего и как этот код написан. Другое дело, что комментарии обычно нужны в ключевых моментах алгоритма, не нужно писать комментарий, типа "// присвоить переменной i значение 5", это точно никому не поможет. Часто помогает посмотреть на этот текст "чужими" глазами. Конечно же это приходит со временем и сейчас мне уже трудно объяснить почему я пишу тот или иной комментарий.
Еще, очень показательная вещь - если всплывают мысли "сделаю потом, когда доделаю" или что то в этом духе - считайте у Вас в голове вирус лени и никогда это "потом" не наступит. Поверьте моему опыту. Делайте всегда всё сразу, даже если пишите небольшую программу, думайте о том, что она может кому то понадобиться и не стесняйтесь добавлять комментарии. Для чего это всё нужно? Можно подумать, что это увеличит время на разработку программы, однако это не так страшно, когда это войдет в привычку, этого уже не замечаешь и делаешь быстро. Второе - это наработка навыка - вот это уже очень полезная и нужная для любого программиста вещь. И это уже относится не только к комментариям.
Часто в текстах находишь имена переменных, типа iii, xxx или что то в этом духе и никаких комментариев. Прекрасно, человек пишет программы и не думает, кто будет ими пользоваться. Я сторонник называть переменные более понятными словами, фразами. В нашем случае ledPin вполне понятное имя переменной, нежели i, например.
Может быть немного сумбурно и не всё понятно, но немного о важном с моей точки зрения. Конечно еще есть куча других правил, но это уже совсем другая история.
Скажу еще и немного противоположную вещь - правила - хорошо, но не нужно уподобляться дятлу и пользоваться ими слепо и бездумно, поскольку времена меняются, меняются инструменты проектирования и нужно перестраиваться в ногу со временем. Нас в свое время в институте учили, что примерно раз в 5 лет меняются технологии и т.п. а сейчас это происходит меньше чем за год.
Ладно, хватит для начала :)