Изменение значений массива
- Войдите на сайт для отправки комментариев
Вс, 17/04/2016 - 18:33
Приветствую уважаемую публику.
Ситуация такая. Нужно регулировать яркость 6ти светодиодов на выбор одним энкодером.
Есть три кнопки, это : Выбор диода(вверх, вниз) и "все в 0"
Интересует как организовать массив данных под эти задачи и как сделать обнуление всех значений массива одной кнопкой?
Массив данных, думаю, - 6 однобайтовых значений.
Обнуление массива можно сделать разными способами, ни ни один из них от кнопки не зависит.
Ну от кнопки то понятно. А какимо способами? И как осуществлять переход между однобайтовыми значениями? (то есть адресами светодиодов)
Способы обнуления одной переменной:
1. В цикле вычитать 1 до достижения 0.
2. Присвоить значение 0.
3. ПроXORить значение переменной с самим собой.
Способы обнуления массива:
1. В цикле обнулить значение каждой из переменных.
2. Заполнить нулями всю память, занимаемую массивом.
Вопроса по поводу перехода я не понял.
Как-то так:
#define ARRAY_SIZE 6 byte data[ARRAY_SIZE] = {0}; byte current_write_index = 0; bool in_edit_mode = false; // флаг, что мы в режиме редактирования void loop() { if(button_select.clicked) // выбираем, яркость какого диода будем менять { current_write_index++; if(current_write_index >= ARRAY_SIZE) current_write_index = 0; in_edit_mode = true; } if(encoder.position.changed && in_edit_mode) data[current_write_index] += encoder.position.steps_changed*encoder.position.direction; }Псевдокод ;)
Мало чего понял если честно :)
То есть если есть массив adress[value], то по отдельности адрес(диода) и значение (шим) менять нельзя?
Мало чего понял если честно :)
То есть если есть массив adress[value], то по отдельности адрес(диода) и значение (шим) менять нельзя?
Можно.
Просто как значение отдельных переменных? Если так, то уже проще :)
data[0] = 1;
data[1] = 4;
data[2] = 2;
...
Вроде понятно, но на практике почему то не получалось. На днях опять займусь