Не работате функция LOOP

Litvan
Offline
Зарегистрирован: 08.05.2019

Привет, всем!

Столкнулся с проблемой: Вроде бы код для бугущих огоньков с их последующим отключением написан правильно, но почему-то этот процесс не цикличен, хотя всё необходимое находится в void loop...

 

 

byte x = 13;
byte ledpin[11];

void setup() {
for (byte i = 0; i <= 10; i++) {
  ledpin[i] = x;
  pinMode(x, OUTPUT);
  x--;
}
}

void loop() {  
for (byte i = 0; i <= 10; i++) {   
digitalWrite(ledpin[i], HIGH);
delay(100);
}
for (byte i = 10; i >= 0; i--) {   
digitalWrite(ledpin[i], LOW);
delay(100);
}
}

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну... и что с огоньками не так? Код-то, может, и написан правильно, но не так, как задумано.

Litvan
Offline
Зарегистрирован: 08.05.2019

Они снова не загораются, то есть то, что написано в void loop исполняется только 1 раз

 

sadman41
Offline
Зарегистрирован: 19.10.2016

В setup() добавляйте Serial.begin(9600), в строку #19 Serial.println(i); delay(500);

Загружайте в МК, открывайте Serial Monitor, смотрите на циферки и пытайтесь найти аномалию.

Feofan
Offline
Зарегистрирован: 28.05.2017

Включите в IDE вывод всех ошибок

Litvan
Offline
Зарегистрирован: 08.05.2019

Спасибо! Дальше сам справлюсь

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Строка 17, заменить byte на int. И отписаться о результатах. 

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

Не работает - не плати зарплату.

А пока, возьми лупу направь её на строку №17 и внимательно глядя на эту строку скажи вслух: "тип byte - беззнаковый". Скажи это с чувством и с расстановкой. Если озарение не наступит, повтори процедуру ещё раз, медленнее и внятнее. И так тверди эту фразу, глядя на строку №17 до тех пор, пока прояснение не наступит.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

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

Не работает - не плати зарплату.

А пока, возьми лупу направь её на строку №17 и внимательно глядя на эту строку скажи вслух: "тип byte - беззнаковый". Скажи это с чувством и с расстановкой. Если озарение не наступит, повтори процедуру ещё раз, медленнее и внятнее. И так тверди эту фразу, глядя на строку №17 до тех пор, пока прояснение не наступит.

Столь глубока твоя вера в людей, что воистину достойна восхищения! ;))

Litvan
Offline
Зарегистрирован: 08.05.2019

Ошибка понятна, спасибо!

byte x = 13;
byte ledpin[11];

void setup() {
for (byte i = 0; i <= 10; i++) {
  ledpin[i] = x;
  pinMode(x, OUTPUT);
  x--;
}
}

void loop() {  
for (int i = 0; i <= 10; i++) {   
digitalWrite(ledpin[i], HIGH);
delay(100);
}
for (int i = 10; i >= 0; i--) {   
digitalWrite(ledpin[i], LOW);
delay(100);
}
delay(100);
}

 

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

Litvan пишет:

Ошибка понятна, спасибо!

точно понятна?

bwn
Offline
Зарегистрирован: 25.08.2014

b707 пишет:

Litvan пишет:

Ошибка понятна, спасибо!

точно понятна?

Чет не уверен. To ТС, а попробуйте вместо int, long. Тож должно работать.))))

P/S А в 13 строке, int, нахуа?

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

Litvan пишет:

Ошибка понятна

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

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

bwn пишет:
To ТС, а попробуйте вместо int, long. Тож должно работать.))))
Можно  "long long", или "int64_t" - ещё надёжнее работать будет!

Litvan
Offline
Зарегистрирован: 08.05.2019

Надеюсь, у вас, умников, тонко разбирающихся в человеческой психологии, иссякнет вопрос, разобрался я или нет)

P.S. Написал 2 раза int для красоты, но для вас, дорогие мои, уберу.

byte x = 13;
byte ledpin[11];

void setup() {
for (byte i = 0; i <= 10; i++) {
  ledpin[i] = x;
  pinMode(x, OUTPUT);
  x--;
}
}

void loop() { 
for (byte i = 0; i <= 10; i++) {   
digitalWrite(ledpin[i], HIGH);
delay(100);
}
for (char i = 10; i >= 1; i--) {   
digitalWrite(ledpin[i], LOW);
delay(100);
}
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

Ну а если такой гениальный, зачем спрашивать приходил?

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

wdrakula пишет:

Столь глубока твоя вера в людей, что воистину достойна восхищения! ;))

Таки жизненный опыт заставляет верить в безграничные возможности человека! Сколько раз уже было, что вроде, "ну, вот тут крайне трудно накосячить", но специалисты всегда находились! Чего только стоит 1000/1024 от Великого или тот крендель, что на тиньке аналоговый сигнал с пина ресет снимал и доказывал нам всем, что это нормально, а мы - закостенелые догматики. Помнишь?

Litvan
Offline
Зарегистрирован: 08.05.2019

Ко мне не сразу пришло " Прояснение ", а только после одного коммента. А до этого я не понимал в чём ошибка.
 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

  ЕвгенийП  объясни мне почему:

 Х=13

А i может быть от 0 до 10

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Потомушто i - итератор массива, а не пинов.

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

Litvan пишет:

Надеюсь, у вас, умников, тонко разбирающихся в человеческой психологии, иссякнет вопрос, разобрался я или нет)

Действительно иссяк - теперь точно стало ясно, что ни хрена толком не разобрался. Услышал, что сказали, а как правильно исправить, так и не понял.

Ибо строка

Litvan пишет:

for (char i = 10; i >= 1; i--) {   

есть жуткая мина замедленного действия.

Тип char, во-первых, имеет разную знаковость в С и С++ (стоит перенести код в другой файл и ...), а во-вторых, знаковый он или беззнаковый зависит ещё и от опций компилятора. Завтра выйдет новая версия IDE и там, не дай Бог, по умолчанию будут другие опции. Вот тогда ты начнёшь заваливать форум воплями: "вчера работало! ничего не менял! IDE кривая!". А кривые-то на самом деле собственные руки и мозги.

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

Litvan пишет:
но для вас, дорогие мои, уберу.

А может, не будем хамить? "Для нас" это нахрен не нужно! Это Вы пришли за помощью, а не мы.

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

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

Муж_Долговой, я не понял вопроса.

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

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

Муж_Долговой, я не понял вопроса.

он сам не понял, что спросил.

Муж - массив заполняется десятью номерами пинов, начиная с 13 и вниз.

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

b707 пишет:

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

Муж_Долговой, я не понял вопроса.

он сам не понял, что спросил.

Муж - массив заполняется десятью номерами пинов, начиная с 13 и вниз.

Мне уже Sadman41 уже разъяснил. Спасибо.

Просто сразу я недопонял цикла в сетапе. про неявно заданные массивы надо ещё потренироваться. Интересный способ.

Только в крайней нужде использую №13.

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

Муж_Долговой пишет:

Просто сразу я недопонял цикла в сетапе. про неявно заданные массивы надо ещё потренироваться. Интересный способ.

А где там "неявно заданный массив"?

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

b707 пишет:

Муж_Долговой пишет:

Просто сразу я недопонял цикла в сетапе. про неявно заданные массивы надо ещё потренироваться. Интересный способ.

А где там "неявно заданный массив"?

А вот!!! Его так просто не увидишь! Он же НЕ ЯВНО заданный. Даже ты не заметил.

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

Муж_Долговой пишет:

А вот!!! Его так просто не увидишь! Он же НЕ ЯВНО заданный. Даже ты не заметил.

мож зрение проверить? :)

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

А если скрьёзно ... то разобраться как работает устройство гораздо проще, чем изучить  технические термины. Меня тоже бесит "сосОк" вместо вентиля или "шестерёнка" вместо зубчатого колеса. Это то, что выдаёт любого новичка. А уж про "шняга", "фиговина", "ерундовина" - так вообще молчу. Извините,... если что то не так назову.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Муж_Долговой пишет:

А если скрьёзно ... то разобраться как работает устройство гораздо проще, чем изучить  технические термины. Меня тоже бесит "сосОк" вместо вентиля или "шестерёнка" вместо зубчатого колеса. Это то, что выдаёт любого новичка. А уж про "шняга", "фиговина", "ерундовина" - так вообще молчу. Извините,... если что то не так назову.

Срециалист с образованием "Девять классов и три коридора" всегда поймет что если "шнягу" прикрутить к "фиговине", то получится "ерундовина". А если ерундовина не работает как надо то вышла "херовина". Отсутсвие в речи нужных терминов всегда выдает человека постороннего для данного коллектива. И естествено такому человеку уже никто из коллектива не стремится помочь, так он вне коллектива или из чужого коллектива.

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

  А научиться где? В ПТУ опять? К каждому новому хобби - за парту? Может всё таки по разному помогать  с кодом ... студенту профильному (который хоть термины то обязан знать)  или автомеханику, для которого это просто достойная замена вино-домино. Есть ещё способ: промеждупрочим сказать как правильно это называется. Но так не прикольно же. Понты - дороже.

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

1. Можно играть на слух, не зная нот. Но вот играть с листа без такого знания - уже проблематично. Равно как и принимать любое участие (как в одну, так и в другую сторону) в обмене музыкальным материалом. Да банально, если воспринимать "pp" как "пожалуйста погромче", то от авторского замысла наверняка ничего не останется. Так что терминологию надо знать: назвался груздем - полезай в кузов.

2. Трудно понять того, кто не владеет терминологией. А, не понимая, довольно трудно "сказать, как приавильно это называется".

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Муж_Долговой пишет:

А если скрьёзно ... то разобраться как работает устройство....

Меня тоже бесит "сосОк" ...

а меня не бесят, они меня радуют )))

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

Муж_Долговой пишет:

  А научиться где? В ПТУ опять? К каждому новому хобби - за парту?

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

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

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

То не наездник, что не падал с лошади.

Программированию научится легко ... как сказал порутчик Ржевский ...

***

Свой уровень 800/12 подели, Эксперт

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

дак у тебя уровень пока, кабутта ты под лошадью ездиишь.  ну прочитай уже Саймона Монка. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

дак у тебя уровень пока, кабутта ты под лошадью ездиишь.  ну прочитай уже Саймона Монка. 

можно хоть сто раз прочитать и, не научиться...
к примеру недавно столкнулся с фунцией if(условие 1 || условие 2) работающей с точностью наоборот, пришлось заменить на И )))

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

DetSimen пишет:

дак у тебя уровень пока, кабутта ты под лошадью ездиишь.  ну прочитай уже Саймона Монка. 

можно хоть сто раз прочитать и, не научиться...
к примеру недавно столкнулся с фунцией if(условие 1 || условие 2) работающей с точностью наоборот, пришлось заменить на И )))

Была байка из времен начала внедрения всякого АСУчивания: машине поручили выбрать клиентов, живущий в Монтане И в Аризоне (вполне нормальное поручение на человеческом языке). Машина, естественно,  ни одного не нашла.