Кто на новенького?

roman6145
Offline
Зарегистрирован: 17.06.2015

Добрый всем день! Я абсолютно первый раз включил как положенно новичку диодную мигалку, но возник вопрос -что надо прописать, что бы диод помигал 6 раз и отключился? Не нашел пока ответа.

vk007
Offline
Зарегистрирован: 16.06.2015

Перенести код мигалки из loop() в setup() и завернуть его в шестикратный for.

roman6145
Offline
Зарегистрирован: 17.06.2015

Т.е loop()  не использовать вообще? А как завернуть в шестикратный for? Я ведь пока не знаю как это делать.

vk007
Offline
Зарегистрирован: 16.06.2015
roman6145
Offline
Зарегистрирован: 17.06.2015

Я посмотрел ссылку но к сожалению не понял, там слишком для меня  заумно написанно. Кто может, приведите простой пример.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Каникулы блин...

inspiritus
Offline
Зарегистрирован: 17.12.2012

Руководство по программированию

Разберитесь с for и приходите пересдавать через неделю.

roman6145
Offline
Зарегистрирован: 17.06.2015

Спасибо всем за полное развернутое объяснение моего вопроса...

dimOnOff
Offline
Зарегистрирован: 21.04.2015
#define led 12

void setup()
{
pinMode(led, OUTPUT);

for(int i=0; i < 6; i++)
{
 digitalWrite(led, HIGH);
 delay(200);
 digitalWrite(led, LOW); 
 delay(200);
}

}
void loop()
{
 
}  

 

roman6145
Offline
Зарегистрирован: 17.06.2015

Теперь все понял, большое спасибо за помощь!!! 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015
#define led 12
int counter = 6;
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
if (counter > 0)
{ 
 digitalWrite(led, HIGH);
 delay(200);
 digitalWrite(led, LOW); 
 delay(200);
 counter--; 
}
}
vk007
Offline
Зарегистрирован: 16.06.2015

Код с for немного меньше по объему и не используется глобальная переменная.

mkvmaks
Offline
Зарегистрирован: 07.07.2013

Прикольная ссылка )) 

roman6145
Offline
Зарегистрирован: 17.06.2015

Так, какой же код лучше использовать, точнее будет надежней -1 или 2-ой?  

vvadim
Offline
Зарегистрирован: 23.05.2012

по твоему первому посту любой подойдёт

roman6145
Offline
Зарегистрирован: 17.06.2015

Я не увидел время горения диода, это как то отдельно устанавливается или так и надо?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Правильная логика работы не может обойтись без глобальных объектов.

Это, конечно, простейший пример, который можно реализовать по-разному, но с точки зрения правильного подхода к программированию второй вариант, безусловно, лучше. Причем, по нескольким причинам.

1. Блок инициализации нужен именно для инициализации ни для чего другого. Это - принципиалтный момент, во-первых, потому что желательно минимизировать время инициализации, в во-вторых, потому что управляющей программе (которая вызывает функции setup b loop) тоже, вероятно, что-то надо инициализировать.

2. Цикл работы должен по возможности занимать минимальное время. Потому как управляющей программе между двумя последовательными вызовами loop может понадобиться сделать какую-то работу. В идеале даже команда delay вызываться не должна, но в простейших программах она, как правило, интенсивно используется. Но еае только вы столкнетесь с какой-нибудь реальной задачей, в которой надо одновременно делать несколько действий, то окажется, что delay применять категорически нельзя, и всю логику нужно будет делать на чтении показаний чаксов и сравнении их с глобальными переменными - по одной (или больше) для каждого из одновременно выполняемых процессов.

Так что за основу лучше блать вариант с глобальной переменной и без лишних команд в setup.

vk007
Offline
Зарегистрирован: 16.06.2015

andriano пишет:

Блок инициализации нужен именно для инициализации ни для чего другого. Это - принципиалтный момент

Странная у Вас логика. Можно подумать, что функция setup() - это нечто сугубо специализированное, в котором не дай бог что-то написать не относящееся к "инициализации". А по сути, функция как функция, выполняющаяся только один раз.

loop() - такая же равноправная функция, только зацикленная сама на себя.

Пропишите в ней в конце:

for (;;) {}

или

while (true) {}

и будет у вас два setup().

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

"Если хорошентко задуматься, можно выдумать еще ерундее" (с) не мое

 

Если Вы не профессионал и пишете программы исключительно для себя, то можете писать, как Бог на душу положит. Но если хотите, чтобы программы работали надежно, были легки для воспричтия, отладки, сопровождения и усовершенствования, следует придерживаться определенных правил. Если этого не придерживаться, на определенном этапе разработки, когда в программу потребуется внести очередное усовершенствование, вдруг окажется, что самый простой способ сделать это - переписать программу с нуля (но уже придерживаясь определенных принципов).

 

Когда программа проста, ее можно написать десятками различных способов, но по мере усложнения программы количество способов стремительно сокращается - отпадают те, которые не могут обеспечить либо возможность отладки, либо даже выполнение требуемого алгоритма.

 

В частности, необходимость выполнения нескольких действий одновременно (например, опрос датчика положения и управление мотором) требует вполне определенного подхода к организации программы. Способ, предлагаемый разработчиками arduino, это допускает, и не надо его ломать, даже если это кажется более прстым и понятным.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

andriano пишет:

Когда программа проста, ее можно написать десятками различных способов, но по мере усложнения программы количество способов стремительно сокращается - отпадают те, которые не могут обеспечить либо возможность отладки, либо даже выполнение требуемого алгоритма.

 

В частности, необходимость выполнения нескольких действий одновременно (например, опрос датчика положения и управление мотором) требует вполне определенного подхода к организации программы. Способ, предлагаемый разработчиками arduino, это допускает, и не надо его ломать, даже если это кажется более прстым и понятным.


Я так понимаю вы строем ходите? Это же оптимально и по правилам.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Puhlyaviy пишет:
Я так понимаю вы строем ходите? Это же оптимально и по правилам.

А Вы, полагаю, предпочитаете есть руками - так ведь намного проще и удобнее, нежели ножом и вилкой.

vk007
Offline
Зарегистрирован: 16.06.2015

Не поверите, я много чего ем руками. Например, печеньки. Даже не представляю, как их можно есть ножом и вилкой.

Не придумывайте себе сложности в простых вещах. Не надо изобретать "правильный" инструмент чтобы поковырять в носу, для этого прекрасно подходит собственный палец, хоть и не совсем эстетично.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

andriano пишет:

А Вы, полагаю, предпочитаете есть руками - так ведь намного проще и удобнее, нежели ножом и вилкой.


(Поставил на стол суп) удачи вам с ножом и вилкой!

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

andriano пишет:

Когда программа проста, ее можно написать десятками различных способов, но по мере усложнения программы количество способов стремительно сокращается - отпадают те, которые не могут обеспечить либо возможность отладки, либо даже выполнение требуемого алгоритма.

От ведь как все запутано! НО! По Вашей логике есть только один способ написать "самую сложную" программу. Афигенчик. А я то по незнанию считал что при увеличении количества функции способы решения растут в геометрической прогрессии. Ошибался видать.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

JollyBiber пишет:

andriano пишет:

Когда программа проста, ее можно написать десятками различных способов, но по мере усложнения программы количество способов стремительно сокращается - отпадают те, которые не могут обеспечить либо возможность отладки, либо даже выполнение требуемого алгоритма.

От ведь как все запутано! НО! По Вашей логике есть только один способ написать "самую сложную" программу. Афигенчик. А я то по незнанию считал что при увеличении количества функции способы решения растут в геометрической прогрессии. Ошибался видать.

шото я начинаю скучать по Лешаку - он бы объяснил всем, где форматирование исходников зимует.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

По мере увеличения количества функций количество способов добиться стабильной работы всех этих функций действительно сокращается.

Когда нужно перенести в руках один кирпич, это можно сделать массой способов: в правой руке, в левой руке, на правой ладони, на левой ладони, справа подмышкой, слева подмыщкой, обхватив двумя руками, на двух ладонях. А если перенести нужно сразу 6 кирпичей, то, прожалуй, остается только стопкой, обхватив двумя руками.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

andriano пишет:

По мере увеличения количества функций количество способов добиться стабильной работы всех этих функций действительно сокращается.

Когда нужно перенести в руках один кирпич, это можно сделать массой способов: в правой руке, в левой руке, на правой ладони, на левой ладони, справа подмышкой, слева подмыщкой, обхватив двумя руками, на двух ладонях. А если перенести нужно сразу 6 кирпичей, то, прожалуй, остается только стопкой, обхватив двумя руками.


Забористая у Вас трава! Завидую.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

andriano пишет:

По мере увеличения количества функций количество способов добиться стабильной работы всех этих функций действительно сокращается.

Когда нужно перенести в руках один кирпич, это можно сделать массой способов: в правой руке, в левой руке, на правой ладони, на левой ладони, справа подмышкой, слева подмыщкой, обхватив двумя руками, на двух ладонях. А если перенести нужно сразу 6 кирпичей, то, прожалуй, остается только стопкой, обхватив двумя руками.


Вы главное не снимайте шоры. Ведь мир побокам огромен и пугает.
Когда уже закончатся эти каникулы.
Хотите предложу пяток вариантов как перенести сразу десяток кирпичей?

Chilori
Offline
Зарегистрирован: 10.05.2015

andriano пишет:

Так что за основу лучше блать вариант с глобальной переменной и без лишних команд в setup.

Полностью с вами согласен.Возможно люди не работали с большими проэктами когда нужно измерять порядка 150-200 аналоговых каналов и при этом около 300 дискретных.(для тролей это не для Ардуино). Так вот, чтобы у вас мозги не закипели к концу проэкта необходимы переменные в шапке программы.Как говориться всё по полочкам. 

А учиться писать программу грамотно это личное дело каждого. Ну вот простой пример приведу:

Как на ваш взгляд правильнее написать программу - "Зажечь светодиод и каждый цикл его снова зажигать. Или проще его зажечь,сказать что он уже горит  и больше его не зажигать." 

В итоге мы получим тоже самое ,но зато сократим время на выполнение команды зажечь.(команд может быть много)

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Глобальные переменные вообще зло и от них надо избавляться по возможности. Это же еще в начальной школе проходят.

roman6145
Offline
Зарегистрирован: 17.06.2015

Есть большая река и маленький ручей, у вас есть лодка и палка. Вопрос- что вам удобнее будет

 использовать для преодоления маленького ручья - лодка или палка? Так же я думаю и использование глобальных переменных имеет свою нишу, где удобно её использовать, а где можно и без неё обойтись. Или я не прав?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Chilori пишет:

Как на ваш взгляд правильнее написать программу - "Зажечь светодиод и каждый цикл его снова зажигать. Или проще его зажечь,сказать что он уже горит  и больше его не зажигать." 

В итоге мы получим тоже самое ,но зато сократим время на выполнение команды зажечь.(команд может быть много)

 

Гы. Еще один Билл Гейтс. Проще его на прямую к питанию подсоединить.

Chilori
Offline
Зарегистрирован: 10.05.2015

JollyBiber пишет:

Chilori пишет:

Как на ваш взгляд правильнее написать программу - "Зажечь светодиод и каждый цикл его снова зажигать. Или проще его зажечь,сказать что он уже горит  и больше его не зажигать." 

В итоге мы получим тоже самое ,но зато сократим время на выполнение команды зажечь.(команд может быть много)

 

Гы. Еще один Билл Гейтс. Проще его на прямую к питанию подсоединить.

Ну от вас другого ответа я и не ожидал.Ага и без резистора подсоедини.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Chilori пишет:

JollyBiber пишет:

Гы. Еще один Билл Гейтс. Проще его на прямую к питанию подсоединить.

Ну от вас другого ответа я и не ожидал.Ага и без резистора подсоедини.

Ой! Да Вы еше и Фрейд? Мне так нельзя напрямую подсоединять, а Вам достаточно "сказать что он уже горит" и искуственный интеллект Вашей программы щелкнув каблуками и козырнув считает сиё одиннадцатым заветом. Не верю! (с)

Chilori
Offline
Зарегистрирован: 10.05.2015

Доктор!!! Чё куришь? Мне кажется ты тут для троллинга сидишь и только. Что то дельных советов я от тебя не слыхал тут.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Зато Вы у нас просто кладезь полузных советов! Аж 2 раза уже постами про резисторы на светодиоды отметились. Брависсимо! И видимо все мои посты прочитали? Если так - ура! У меня есть тайный поклонник! Если нет - то Ваше заявление голословно.

Chilori
Offline
Зарегистрирован: 10.05.2015

JollyBiber пишет:

Зато Вы у нас просто кладезь полузных советов! Аж 2 раза уже постами про резисторы на светодиоды отметились. Брависсимо! И видимо все мои посты прочитали? Если так - ура! У меня есть тайный поклонник! Если нет - то Ваше заявление голословно.

Доктор!!! Завязывай курить !!! Я человеку дельным советом помог, а ты продолжаешь ахинею нести. Притормози.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Где Ваш полезный совет? Поддержка охинеи что все надо прописывать глобальными переменными вместо использования сетапа? Вы таки делаете мне смешно. Хотя с другой стороны - сам чёта посоветовал, сам себя похвалил. Профит!

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Chilori пишет:
Я человеку дельным советом помог, а ты продолжаешь ахинею нести. Притормози.

эт ты типа научил его блинк прошивать?
есть такое понятие в русском языке " медвежья услуга".

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

JollyBiber пишет:

Где Ваш полезный совет? Поддержка охинеи что все надо прописывать глобальными переменными вместо использования сетапа? Вы таки делаете мне смешно. Хотя с другой стороны - сам чёта посоветовал, сам себя похвалил. Профит!


Не нервничай. У них видишь по 300 аналоговых каналов нужно опрашивать одновременно. Я боюсь себе представить тот тех процесс где это может понадобиться.

Chilori
Offline
Зарегистрирован: 10.05.2015

Puhlyaviy пишет:
Chilori пишет:
Я человеку дельным советом помог, а ты продолжаешь ахинею нести. Притормози.
эт ты типа научил его блинк прошивать? есть такое понятие в русском языке " медвежья услуга".

Ну если мне не в падлу было потратить 10 минут для написания скетча. Вам чего от этого?Зависть что ли?На кой вы вообще на форумах сидите?Поржать над теми кто ничего не знает.Вы себя вспомните сначала . Все когда то были тупыми в этой области.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Помочь тем кто хочет научиться. А из-за таких как Вы они так тупыми и помрут.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

О, пацану реально не в падлу 10 минут клаву топтать..

Открою небольшой секрет. Там есть пртмеры встроеные. И еще в прошлом году новичкам, как вы говорите, было не в падлу изучать эти примеры и пытаться склеить из примеров что то свое. В этом году вам уже даже примеры лень изучать.

Chilori
Offline
Зарегистрирован: 10.05.2015

Puhlyaviy пишет:
В этом году вам уже даже примеры лень изучать.

Зачем изучать чей то пример, если я могу написать свой. Я вот не пойму чего вы хотите тут доказать.Не бывает одинаковых мозгов они у нас у всех разные. ****** чей то скетч это уже лень для меня.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Chilori пишет:

Puhlyaviy пишет:
В этом году вам уже даже примеры лень изучать.

Зачем изучать чей то пример, если я могу написать свой. Я вот не пойму чего вы хотите тут доказать.Не бывает одинаковых мозгов они у нас у всех разные. ****** чей то скетч это уже лень для меня.


МА-ЛА-ДЕЦ!
Инструкции тоже не читай. Сам же можешь написать. :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

andriano пишет:

По мере увеличения количества функций количество способов добиться стабильной работы всех этих функций действительно сокращается.

Когда нужно перенести в руках один кирпич, это можно сделать массой способов: в правой руке, в левой руке, на правой ладони, на левой ладони, справа подмышкой, слева подмыщкой, обхватив двумя руками, на двух ладонях. А если перенести нужно сразу 6 кирпичей, то, прожалуй, остается только стопкой, обхватив двумя руками.

типа - как перенести пять арбузов ? :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Puhlyaviy пишет:
О, пацану реально не в падлу 10 минут клаву топтать.. Открою небольшой секрет. Там есть пртмеры встроеные. И еще в прошлом году новичкам, как вы говорите, было не в падлу изучать эти примеры и пытаться склеить из примеров что то свое. В этом году вам уже даже примеры лень изучать.

....что же будет в 2016...20 ? :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Chilori ,
JollyBiber , Puhlyaviy , leshak и др. ( порядок погонял не по статусу, произвольный ) - 
оне изволили меня пинать полгода по ..... , пока не увеличился V мозга моего....
...читай и думай :)

от вышеперечисленных во второй строке - благодарностей не надо ! :)

посмотри их совместный сайт "Реабилитация блондинок" - статистика - 86% перекрасились !!!!!!!

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SU-27-16 пишет:

Chilori ,
JollyBiber , Puhlyaviy , leshak и др. ( порядок погонял не по статусу, произвольный ) - 
оне изволили меня пинать полгода по ..... , пока не увеличился V мозга моего....
...читай и думай :)

от вышеперечисленных во второй строке - благодарностей не надо ! :)

посмотри их совместный сайт "Реабилитация блондинок" - статистика - 86% перекрасились !!!!!!!


Жалуешься? Ябеда.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

нееееа , просто сдал !
чё жаловацца ? спасибо за науку !
:)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Лешака не трожьте - он святой!