Изменение значений массива

Megawollt
Offline
Зарегистрирован: 06.12.2015

Приветствую уважаемую публику.

Ситуация такая. Нужно регулировать яркость 6ти светодиодов на выбор одним энкодером.

Есть три кнопки, это : Выбор диода(вверх, вниз) и "все в 0"

Интересует как организовать массив данных под эти задачи и как сделать обнуление всех значений массива одной кнопкой?

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

Массив данных, думаю, - 6 однобайтовых значений.

Обнуление массива можно сделать разными способами, ни ни один из них от кнопки не зависит.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Ну от кнопки то понятно. А какимо способами? И как осуществлять переход между  однобайтовыми значениями? (то есть адресами светодиодов)

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

Способы обнуления одной переменной:

1. В цикле вычитать 1 до достижения 0.

2. Присвоить значение 0.

3. ПроXORить значение переменной с самим собой.

Способы обнуления массива:

1. В цикле обнулить значение каждой из переменных.

2. Заполнить нулями всю память, занимаемую массивом.

Вопроса по поводу перехода я не понял.

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

Как-то так:

#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;
  
  
}

Псевдокод ;)

Megawollt
Offline
Зарегистрирован: 06.12.2015

Мало чего понял если честно :)

То есть если есть массив adress[value], то по отдельности адрес(диода) и значение (шим) менять нельзя?

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

Megawollt пишет:

Мало чего понял если честно :)

То есть если есть массив adress[value], то по отдельности адрес(диода) и значение (шим) менять нельзя?

Можно.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Просто как значение отдельных переменных? Если так, то уже проще :)

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

data[0] = 1;

data[1] = 4;

data[2] = 2;

...

Megawollt
Offline
Зарегистрирован: 06.12.2015

Вроде понятно, но на практике почему то не получалось. На днях опять займусь