цикличность программы.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Alexandr0202 пишет:

А почему 1000 раз в секунду? Это быстродействие процессора (частота Atmega)?

А сколько милисекунд в одной секунде?

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

v258 пишет:

Alexandr0202 пишет:

А почему 1000 раз в секунду? Это быстродействие процессора (частота Atmega)?

А сколько милисекунд в одной секунде?

1000. Т.е. 1 милисекунда это  1 цифра памяти? 

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

Alexandr0202 пишет:

int наверное за 65,535 сек. long за 4 294 767,295 сек ?

Подсказать!

1. Вообще-то 32.767 и 2147483.647 соответственно. Вы продолжаете путать знаковые и беззнаковые типы. Так вот, как Вы считаете, 32 или 65 секунд - это достаточно, чтобы описать любые интервалы на все случаи жизни?

2. Собственно, подсказка в 1-м пункте.

PS. По поводу последующего: int для LOW/HIGH явно избыточно, поэтому рекомендуют в этом случае использовать byte.

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

Alexandr0202 пишет:

А почему тогда используют int? Причем в учебниках в примерах и в самой программе.

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

В общем, я не встречал еще ни одной книги по Ардуино, где не было бы грубых ошибок.

Это первое. Второе: не всегда то, что на первый взгляд кажется ошибкой, по факту ею является. Ну, например, выше уже был пример с interval, который равен 1000, а потому вполне укладывается в тип int. Но дело в том, что единственное место, где используется эта константа - арифметическая операция с unsigned long, а потому по правилам приведения типов, в программе все равно в операцию будет подставлена unsigned long, как бы мы ни описали переменную interval.

И еще: когда мы программируем для ПК, то при экономии памяти оставшаяся память будет оставаться для других задач в многозадачной среде. А в микроконтроллере имеет смысл экономить память только тогда, когда есть опасения, что ее может не хватить. В остальных случаях абсолютно не важно, занимает программа (или данные) 1% памяти или 99%.

В общем, есть такое понятие как опыт, и именно он подсказывает, что и как лучше сделать в конкретном случае. А пока опыта нет, лучше пользоваться общими рекомендациями. Только не следует уподобляться сороконожке из притчи, когда она задумалась, как двигается каждая из ее 40 ног, и из-за этого разучилась танцевать.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Alexandr0202 пишет:

1000. Т.е. 1 милисекунда это  1 цифра памяти? 

Одна милисекунда - это одна тысячная секунды. Вне зависимости от того, где она используется. Что касается МК, то функция millis() выдает количество милисекунд, прошедших с момента включения. Т.е. если вам нужна временная метка, вы вызываете millis() и запоминаете полученную цифру. Потом, когда вам нужно проверить какой-то временной интервал, вы снова вызываете millis() и отнимаете от полученного значения ранее сохраненное и оцениваете результат. Так вы понимаете, что нужный вам интервал времени уже прошел (или еще нет)

unsigned long prev_millis = millis(); // запоминаем
......................
if (millis() - prev_millis >= 1000) // проверяем
{
  // здесь что-то делаем, если прошла секунда
prev_millis = millis(); // снова запоминаем для следующего раза
}

 

nik182
Offline
Зарегистрирован: 04.05.2015

Alexandr0202 пишет:

А почему тогда используют int? Причем в учебниках в примерах и в самой программе.

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

Morroc
Offline
Зарегистрирован: 24.10.2016

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

Водить без знания ПДД не пробовали ? Тоже ведь можно, но недолго ) С какой целью вам нужно писать программы именно так, вы кому то проспорили ? ) Мультик есть такой - крылья, ноги, хвост, там правильная идея - лучше полчаса потерять, потом за 5 минут долететь. Прочитали бы на пару книжек больше и не понадобилось бы на форуме тему создавать, но может вам так прикольнее, всяко бывает... )

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

Morroc пишет:
Alexandr0202 пишет:
Я имел ввиду, что простейшие программы писать без книжки (как бы читать книжки без букваря).
Водить без знания ПДД не пробовали ? Тоже ведь можно, но недолго ) С какой целью вам нужно писать программы именно так, вы кому то проспорили ? ) Мультик есть такой - крылья, ноги, хвост, там правильная идея - лучше полчаса потерять, потом за 5 минут долететь. Прочитали бы на пару книжек больше и не понадобилось бы на форуме тему создавать, но может вам так прикольнее, всяко бывает... )
 

Водить не понимая ПДД тоже можно, но не долго. Я не могу запомнить то чего не понимаю. Для меня эти книжки как китайская грамота, что то понимаю но что то нет. Никому ничего не проспорил, Вы же можете написать blink без книжек, а я не могу, но очень хочу....

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Alexandr0202 пишет:

Я не могу запомнить то чего не понимаю. Для меня эти книжки как китайская грамота, что то понимаю но что то нет. 

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

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

Alexandr0202 пишет:

Водить не понимая ПДД тоже можно, но не долго. Я не могу запомнить то чего не понимаю. Для меня эти книжки как китайская грамота, что то понимаю но что то нет. Никому ничего не проспорил, Вы же можете написать blink без книжек, а я не могу, но очень хочу....

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

Заведите себе за правило, если у Вас возник какой-то вопрос, не торопитесь выплескивать его на форум, - подумайте сами, поищите ответ в Гугле. Ну хотя бы 2-3 часа для вопросов типа "почему" или 2-3 дня для вопросов типа "как сделать".

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Блин, тема возникла потому, что ТС попросту не умеет читать и потому даже не знал, что loop вызывается циклически. Все остальные "вопросы" из той же оперы - ТС не умеет читать.

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

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

Ворота пишет:

Блин, тема возникла потому, что ТС попросту не умеет читать и потому даже не знал, что loop вызывается циклически. Все остальные "вопросы" из той же оперы - ТС не умеет читать.

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

Вот Вы действительно не умеете читать, я не знал, что цикл не прерывается на условии if а идет дальше.

andriano пишет:

 

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

Заведите себе за правило, если у Вас возник какой-то вопрос, не торопитесь выплескивать его на форум, - подумайте сами, поищите ответ в Гугле. Ну хотя бы 2-3 часа для вопросов типа "почему" или 2-3 дня для вопросов типа "как сделать".

Я в прошлом году 3 месяца читал книжки и у меня появились вопросы. Тогда ответы на них я не нашел и бросил это дело. Сейчас я не думаю, что прочитав те же книжки у меня найдутся ответы, по этому вопросы я задаю по очереди в следствии приобретения новых знаний на этом форуме. Некоторые вопросы отпали и появились новые.

Если дать ребенку букварь и не объяснять что буква "А" звучит как А-а-а-а то самый сообразительный будет думать что буква "А" звучит как "Арбуз" для остальных буква "А" будет очередной картинкой.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

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

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Alexandr0202 пишет:

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

А вы попробуйте. Информация имеет свойство систематизироваться без участия сознания. Непонятая сразу книга часто становится понятной при прочтении ее через какое-то время. Собственно, так человеки и учатся. Форум никогда не даст вам нужного объема информации, ее по-любому нужно добывать самостоятельно

b707
Offline
Зарегистрирован: 26.05.2017

v258 пишет:

Alexandr0202 пишет:

Я в прошлом году 3 месяца читал книжки

А вы попробуйте. Информация имеет свойство систематизироваться без участия сознания.

"Путешествия развивают ваш ум... если конечно он у вас есть" (с)

Вообще, читаю подобные рассказы и удивляюсь 3 месяца читал учебник и ничего не понял? Я, навено, очень ленивый. но я бы и недели не выдержал, если ничего не понимаю. Я в таком случае бросаю и занимаюсь чем-то другим. А тут - три месяца... Мне кажется тут какое-то вранье... или преувеличение... типа за три месяца - на самом деле пару тройку вечеров попытался почитать учебник, ничего не понял, бросил.  Или эти люди устроены как-то совсем по другому...

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

Alexandr0202 пишет:

Если дать ребенку букварь и не объяснять что буква "А" звучит как А-а-а-а то самый сообразительный будет думать что буква "А" звучит как "Арбуз" для остальных буква "А" будет очередной картинкой.

Видите ли, форум может помочь читателю, имеющему некоторую базовую подготовку, но он не может (да и не должен) научить человека "с нуля". Поэтому, если Вы еще ребенок, то запишитесь на курсы робототехники, где с Вами будет заниматься преподаватель.

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

Ворота пишет:

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

Не только.

Еще человек, которому это абсолютно не интересно (или лень).

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

andriano пишет:

Ворота пишет:

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

Не только.

Еще человек, которому это абсолютно не интересно (или лень).

Пример не корректный, там в if есть else. Т.е. понятно, что если не то, тогда это. А если просто if мне почему то думалось что программа должна ждать, пока условие не выполнится.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alexandr0202 пишет:
А если просто if мне почему то думалось что программа должна ждать, пока условие не выполнится.
Так Вам про это и толкуют, что Вам нужно читать учиться. Чтение это ведь не только артикуляция написанного голосом, но ещё и понимание текста. Если бы Вы умели читать то, после прочтения вот этого, Вам бы уже ничего подобного не "думалось", т.к. там прямо написано, что если условие ложно, то просто "программа пропускает" код под if'ом.

Я бы на Вашем месте не спорил, а учился бы. Но у Вас, похоже, другие цели :-)

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

ЕвгенийП пишет:

 Если бы Вы умели читать то, после прочтения вот этого, Вам бы уже ничего подобного не "думалось", т.к. там прямо написано, что если условие ложно, то просто "программа пропускает" код под if'ом.

Если бы я читал Вот это, то тогда да, вопроса нет. Но я читал вот это и не мог подумать, что там что то не так.

Операторы условных и безусловных переходов Для организации условных и безусловных переходов в программе на языке Си используются операторы: if - else, switch и goto. Первый из них записывается следующим образом: if (проверка_условия) оператор_1; else оператор_2; Если условие в скобках принимает истинное значение, выполняется оператор_1, если ложное - оператор_2. Если вместо одного необходимо выполнить несколько операторов, то они заключаются в фигурные скобки. В операторе if слово else может отсутствовать. В операторе if - else непосредственно после ключевых слов if и else должны следовать другие операторы. Если хотя бы один из них является оператором if, его называют вложенным. Согласно принятому в языке Си соглашению слово else всегда относится к ближайшему предшествующему ему if. Оператор switch позволяет выбрать одну из нескольких альтернатив. Он записывается в следующем формальном виде: switch (выражение) { case константа_1: операторы_1; break; case константа_2: операторы_2; break; ........ ........ default: операторы_default; } Здесь вычисляется значение целого выражения в скобках (его иногда называют селектором) и оно сравнивается со всеми константами (константными выражениями). Все константы должны быть различными. При совпадении выполнится соответствующий вариант операторов (один или несколько операторов). Вариант с ключевым словом default реализуется, если ни один другой не подошел (слово default может и отсутствовать). Если default отсутствует, а все результаты сравнения отрицательны, то ни один вариант не выполняется. Для прекращения последующих проверок после успешного выбора некоторого варианта используется оператор break, обеспечивающий немедленный выход из переключателя switch. Допускаются вложенные конструкции switch. Рассмотрим правила выполнения безусловного перехода, который можно представить в следующей форме: goto метка; Метка - это любой идентификатор, после которого поставлено двоеточие. Оператор goto указывает на то, что выполнение программы необходимо продолжить начиная с оператора, перед которым записана метка. Метку можно поставить перед любым оператором в той функции, где находится соответствующий ей оператор goto. Ее не надо объявлять. 

http://dfe.petrsu.ru/koi/posob/c/c.htm#g2.5 Взято тут 

b707
Offline
Зарегистрирован: 26.05.2017

Alexandr0202 пишет:

 я читал вот это и не мог подумать, что там что то не так.

процитируйте, пожалуйста, в "этом" строчку, где сказано, что оператор if чего-то ждет

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

Alexandr0202
Offline
Зарегистрирован: 13.07.2020

b707 пишет:

Alexandr0202 пишет:

 я читал вот это и не мог подумать, что там что то не так.

процитируйте, пожалуйста, в "этом" строчку, где сказано, что оператор if чего-то ждет

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

Но там же и не сказано что пропускает. Все, ухожу. Всем спасибо, тема закрыта.

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

Alexandr0202 пишет:

Но там же и не сказано что пропускает.

Еще там не сказано, что не варит борщ. Следует ли из этого, что оператор if просто обязан варить борщ?

Нет, Александр, Вам действительно лучше заняться чем-то вроде макраме или вязания крючком.

При неумении читать и полном отсутствии логического мышления в Ардуино делать нечего.

Datak
Offline
Зарегистрирован: 09.10.2014

Ого. Да вы, уважаемые ардуинчане и ардуинисты, я смотрю, умеете вселить в человека уверенность в собственных силах. ))

b707
Offline
Зарегистрирован: 26.05.2017

Если б после третьего поста такое написали... а после 123-его

Гриша
Offline
Зарегистрирован: 27.04.2014

Datak пишет:
Ого. Да вы, уважаемые ардуинчане и ардуинисты, я смотрю, умеете вселить в человека уверенность в собственных силах. ))

ну, да, тут сопельки не вытирают, а по существу вопроса вполне достаточно написано выше.

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

Есть 2 направления, в которых человек должен быть развит:

1) логика мышления и причинно следственные связи  (построение алгоритмов)

2) знание языка. Если сравнивать со школой на уровне 1-2 класса.

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

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

я еще в посте 69 выразил главную мысль касательно изучения.

это все касается программирования.... касательно железа аналогично, вот только можно брать готовые проекты и их реализовывать.

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

 

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

Datak пишет:
Ого. Да вы, уважаемые ардуинчане и ардуинисты, я смотрю, умеете вселить в человека уверенность в собственных силах. ))

а, ещё мы мух в молоке топим...

b707
Offline
Зарегистрирован: 26.05.2017

Гриша пишет:

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

 

я бы сказал так - простенькие программы может писать любой. А вот если "стремится... и не вставть в позу" - то можно научится писать и посложнее.