Не могу понять как работают массивы в ардуино
Пишу на ардуинке прогу и столкнулся с таким затруднением:
String messenge;
for (int i=1; i <= 10; i++){
messenge += String(dht_i.readHumidity());
delay(50);
}
Смысл в том, что у меня есть 10 переменных с названиями:
dht_1
dht_2
dht_3
....
dht_10
И цикл должен менять i на 1,2,3.... Но программа ругается, мол нет переменой dht_i. Это логично да, программа права. Вот собственно хочу спросить совета более опытных юзеров, ибо в интернете особо ничего не нагуглил. Кто нибудь может посоветовать как это лучше реализовать? Спасибо
Ответы (2 шт):
DHT dht[10];
String message;
for (int i=0; i < 10; i++){
message += String(dht[i].readHumidity());
delay(50);
}
Дам ответ с примером применения массивов
// Массив контактов светодиодов
int leds[] = {13,12,11,10,9,8,7,6,5,4}
// количество загоревшихся светодиодов
int n =0;
void setup(){
// настроить выводы ардуики на "ВЫХОД"
for (int i=0; i<10; i=i+1){
pinMode(leds[i], OUTPUT);
}
}
void loop() {
// выключить n светодиодов
for (int i =0; i<10; i=i+1){
if(i<n)
{digitalWrite(leds[i], HIGH);}
else
{digitalWrite(leds[i], LOW);}
}
// изменить n - приращение на 1
// остаток от деления на 11 (после 10 -> 0)
n = (n+1)%11; // n работает так : 0->1->2->3->4->5->6->7->8->9->10->0...
}
Замете если бы мне пришлось объявлять светодиоды без массивов то пришлось бы писать так :
void setup(){
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
а вышло так :3
void setup(){
// настроить выводы ардуинки на "ВЫХОД"
for (int i=0; i<10; i=i+1){
pinMode(leds[i], OUTPUT);
}
}
По сути массив позволяет сэкономить количество введенных букв и циферок.
Так же немного теории:
Объявление массива без его инициализации:
int leds[10]; // массив из 10 элементов типа int
Можно объявить массив без без непосредственного указания размера . Компилятор считает количество элементов и создаст массив соответствующего размера:
int leds[] = {13,12,11,10,,9,8,7,6,5,4};
Можно одновременно инициализировать и указать размер вашего массива:
int leds[10] = {13,12,11,10,,9,8,7,6,5,4};
Всё на ваше усмотрение :3