Операции с элементами массива
- Войдите на сайт для отправки комментариев
Пнд, 22/06/2020 - 09:55
Помогите пожалуйста, в tr1 не записывается новое значение.
В мониторе:
Rtr1:0 Rdat7:0
tr1:1 dat7:1
Rtr1:1 Rdat7:0
tr1:2 dat7:2
Rtr1:2 Rdat7:0
Rtr1:3 Rdat7:0 здесь ожидал tr1=0
Rtr1:4 Rdat7:0
Rtr1:5 Rdat7:0
static int tr1= dat[n][7]; Serial.print (" Rtr1:") ; Serial.print (tr1); Serial.print (" Rdat7:") ; Serial.println (dat[n][7]); if (dat[n][5] == 0 && tr1 < dat[n][2]) //период вкл { digitalWrite(portW[dy], HIGH); tr1++; dat[n][7]=tr1; Serial.print (" tr1:") ; Serial.print (tr1); Serial.print (" dat7:") ; Serial.println (dat[n][7]); } else { digitalWrite(portW[dy], LOW); dat[n][7] = 0; dat[n][5] = 1; } if (dat[n][5] == 1 && tr1 <dat[n][3]) tr1++;//период выкл else { dat[n][7] = 0; dat[n][5] = 0; }
нумерация элементов в массиве ИДЕТ С НУЛЯ!!!
int dat[..][8];
так и написано: int dat[7][9]
или прямо в loop прописать?
--нумерация элементов в массиве ИДЕТ С НУЛЯ!!!
ок, а как это знание влияет на запись в переменную?
Помогите пожалуйста, в tr1 не записывается новое значение.
В мониторе:
Т.е. пытаюсь сообразить триггер счетчик с переменными периодами включения -выключения, только значения подставлять из массива.
--нумерация элементов в массиве ИДЕТ С НУЛЯ!!!
ок, а как это знание влияет на запись в переменную?
вставьте код полностью, а не обрывками. Если весь код слишком велик - удалите все лишнее, но код должен компилироваться, то есть содержать все необходимые функции и описания всех переменных
static
int
tr1= dat[n][7];
здесь передаю параметр ячейки.сокращаю скрипт для публикации.
сокращаю скрипт для публикации.
Вам же сказали
вставьте код полностью, а не обрывками. Если весь код слишком велик - удалите все лишнее, но код должен компилироваться, то есть содержать все необходимые функции и описания всех переменных
Сократите код так, чтобы он оставался рабочим и демонстрировал Вашу проблему. Чтобы любой мог его запустить и увидеть Вашу беду.
Если Вы этого не сделаете, могу Вам точно предсказать что будет дальше. Народ будет тыкать пальцем в небо, Вы будете говорить, что "все не так", народ будет злиться. Вас обзовут дебилом, Вы обзовёте всех мудаками и на этом всё закончится.
Если Вам лень нормально подготовить код для вопроса на форуме, то разбирайтесь со своими проблемами самостоятельно.
static
int
tr1= dat[n][7];
здесь передаю параметр ячейки.попробую угадать - вы думаете. что если один раз написать
то дальше при любых изменениях dat[n][7]; переменная tr1 будет копировать их значения? - это заблуждение
Т.е. пытаюсь сообразить триггер счетчик с переменными периодами включения -выключения, только значения подставлять из массива.
В строках 1 и 8 - чушь. Думаю, стоит чуть-чуть почитать основы языка С++. Что в этих строках делает оператор ; - как вы думаете?
в конце восьмой строчки еще интереснее -
ТС, вы это пробовали компилировать перед выкладыванием в форум?
редактировал при вставке - извиняюсь, не углядел.
в принципе массив так использовать можно?
редактировал при вставке - извиняюсь, не углядел.
в принципе массив так использовать можно?
Давайте вы не будете заниматься редактированием, а выложите код, который, как минимум, компилируется, ок? Только тогда имеет смысл продолжать разговор.
редактировал при вставке - извиняюсь, не углядел.
НИКОГДА ничего не редактируйте при вставке. Здесь должен быть ТОЧНО (от слова "точно-точно-копипастом") тот код, который исполняется!
Человек, потративший своё время на разбор Вашего кода, а потом узнавший, что это был "другой, отредактированный" код, просто пошлёт Вас найух! До Вас это доходит?
в принципе массив так использовать можно?
Если Вам действительно нужна помощь, перечитайте мой пост №9 и сделайте то, что Вам здесь уже трое говорили!
в конце восьмой строчки еще интереснее -
Да, действительно, плюсов чё-то маловато - китайцы сэкономили, когда плату клонировали :-(
по задумке это 6 независимых триггера с периодами из массива
и в чем теперь вопрос? прошлый был про tr1, а тут, смотрю, все упоминания tr1 пропали
tr1 был промежуточный. с ним хоть как-то работало, вернее считало и вставало колом.
а тут даже не пытается.
вопрос - можно ли так обрабатывать элементы массива
--то дальше при любых изменениях dat[n][7]; переменная tr1 будет копировать их значения? - это заблуждение
как написать правильно?
вопрос - можно ли так обрабатывать элементы массива
можно, синтаксических ошибок вроде нет.
А какова логика кода - что-то не очень улавливаю. Что-то не работает? - опишите подробно, как оно работает. как должно работать и чем первое отличается от второго
В строчке номер 20 - ошибка, потому что n может стать равной 6, и тогда будет выход за границы массивов в строках 25, 27.
и в чем теперь вопрос?
Судя по огромному количеству синтаксического бреда раньше и отсутствию его теперь, сейчас мы видим благополучно скопипизженный где-то код, а раньше видели попытки ТС добавить в него что-то своё.
Так что теперь вопрос остался один: "добавьте сюда мою хотелку". Это, правда, не вопрос, но это неважно.
код обрезал для читабельности, там еще кнопки, дисплей, еепром, отсчет суток... отсюда логика хромает))
на выходе имею реле, нужно чтобы они работали согласно цикла из массива: каждое реле n включится на период dat[n][2] и отключится на период dat[n][3]
В строчке номер 20 - ошибка, потому что n может стать равной 6, и тогда будет выход за границы массивов в строках 25, 27.
спасибо.
на выходе имею реле, нужно чтобы они работали согласно цикла из массива: каждое реле n включится на период dat[n][2] и отключится на период dat[n][3]
вы в логике операторов if запутались
Участок кода между строками 24 и 33 вот так исправьте, должно работать:
2 b707 - спасибо!) оно это, оно!
2 b707 - спасибо!) оно это, оно!
оюязательно разберитесь, в чем разница двух кодов
2 b707 - спасибо!) оно это, оно!
оюязательно разберитесь, в чем разница двух кодов
"Леночка, яйца подействовали..." )))
как написать правильно?