Цикл for, порты, датчики.
- Войдите на сайт для отправки комментариев
Пт, 02/08/2019 - 21:46
Здравствуйте. Пробую писать код для мониторинга температуры. Хочу написать лаконично через цикл for, чтобы не повторять код по много раз, но как не понимаю. В Python я бы создал список из [dht1, dht2, dhtn, ...] и все. Подскажите как это сделать для ардуино.
Moderator : пожалуйста, вставьте код правильно - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Здравствуй
1. Есть такая функция как вставка кода.(когда пишешь тему в левом верхнем углу красные фигурные скобки).
2. Скажи откуда брал этот код (источник).
3. Ты хочешь проверять температуру циклически? (например каждый день). Если так, то делай таймером через millis() или micros().
Привет. Хочу, чтоб в цикле он обошел все порты с датчиками.
Первоисточник выглядит так :
вроде как-то так.
И еще - у меня тоже тема в песочнице про ИК приемник. Посмотри, может что подскажешь.
Не то. В цикле обход по датчика, портам - сократить этот кусок кода:
Вроде так. Если не так, значит я тебя не понял
Лаконично ты не напишешь. в dht1.tmperature().getEvent(&event) номер датчика на переменную ты не переделаешь, т.к это название функции. Если только в библиотеку не залезешь.
Как это былобы на Python:
for port in [dht1, dht2, dht3, dht4, dht5, dht6 и тд.]:
Лаконично ты не напишешь. в dht1.tmperature().getEvent(&event) номер датчика на переменную ты не переделаешь, т.к это название функции. Если только в библиотеку не залезешь.
Это не питон. К сожалению тут нельзя оперировать частями (номерами) функций.
Можно конечно записать функции в другие функции и ими ЦЕЛЫМИ оперировать, но укоротить не получится.
Думаю, сначала данные в массив, а массив можно будет и циклом обойти. Не беда. Спасибо за ответы.
Удачи
мне кажется Вы об этом:
google arduino dht array
Это не питон. К сожалению тут нельзя оперировать частями (номерами) функций.
может не стоит так категорично писать, если сами не разбираетесь? dht в данном коде - это обьект, обьекты можно организовывать в массивы
Понял, спасибо за ответ.
Это не питон. К сожалению тут нельзя оперировать частями (номерами) функций.
может не стоит так категорично писать, если сами не разбираетесь? dht в данном коде - это обьект, обьекты можно организовывать в массивы
Пожалуйста объясните как представить объект? Думаю не int :)
Попробовал составить масив массивов, но ошибка говорит, что не представлен тип объекта.
Спасибо за ответ.
Сначала создаете столько dht обьектов, сколько нужно. потом помещаете указатели на них в массив
Сначала создаете столько dht обьектов, сколько нужно. потом помещаете указатели на них в массив
пытаюсь такой код попробовать. Результат: "garland_Unified' does not name a type"
пытаюсь такой код попробовать. Результат: "garland_Unified' does not name a type"
вам непонятно сообщение об ошибке? Ясно же написано - garland_Unified не является именем типа
Чтобы использовать в программе тип данных, отличный от простейших int или float - его нужно сначала описать самому или подключить библиотеку с его описанием. Судя по ошибке - Вы не делаете ни того, ни другого. Откуда вы взяли это garland_Unified - сами придумали?
Кроме того, это не единственная ошибка. Когда вы ее поправите - вас ждет следующая.
Вообще уже судя по приведенным трем строчкам - совершенно очевидно, что за массивы и обьекты вам браться рано, для вас это все темный лес. Я бы советовал начать с изучения хорошего учебника по С++ - причем всего, от начала до конца.
Так точно. Юзаю ардуину три недели. Много лет писал код на Питоне, для себя, для автоматической торговли. Тоже не глубоко вникал работало и ладно.
Код писал типа по аналогии от вашего. Я понял, профанация. Значит, как я понимаю, проблема избыточного кода останется пока не научусь описывать объект. Хотел итерировать объекты - цикл внутри цикла, типа так.
Спасибо за ответ. Совет принял.
Код писал типа по аналогии от вашего. Я понял, профанация. Значит, как я понимаю, проблема избыточного кода останется пока не научусь описывать объект. Хотел итерировать объекты - цикл внутри цикла, типа так.
Изначально вы спрашивали про датчики DHT. Если работать с ними - обьекты можно взять готовые, из библиотеки DHT. Если вы будете работать со стандартными датчиками - для них почти всегда уже есть готовые библиотеки. Но если придумываете что-то свое - то да, обьекты придется конструировать свои.
Полностью вас понял.
Сначала создаете столько dht обьектов, сколько нужно. потом помещаете указатели на них в массив
Спасибо совет. Только что включил. Все итерируется по датчикам, но итерирует почему-в обратном порядке, то есть нулевой элемент списка в конце списка. Все проверял по пинам на макетке. Такой нюанс.