Регулятор громкости Arduino с памятью
Добрый день!
Использую данную схему http://cxem.net/arduino/arduino8.php в качестве регулятора громкости.
Все бы хорошо, но после отключения питания, громкость включается в среднем положении.
Подскажите, пожалуйста, можно ли доработать прошивку:
/*
** Энкодер
** Для управлением яркостью LED используется энкодер Sparkfun
*/
int brightness = 120; // яркость LED, начинаем с половины
int fadeAmount = 10; // шаг изменения яркости LED
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() {
// declare pin 9 to be an output:
pinMode(9, OUTPUT); // устанавливаем pin 9 как выход
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_B); // считываем состояние выхода А энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю
if(encoder_B) {
// выход В в полож. сост., значит вращение по часовой стрелке
// увеличиваем яркость, не более чем до 255
if(brightness + fadeAmount <= 255) brightness += fadeAmount;
}
else {
// выход В в 0 сост., значит вращение против часовой стрелки
// уменьшаем яркость, но не ниже 0
if(brightness - fadeAmount >= 0) brightness -= fadeAmount;
}
}
encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла
analogWrite(9, brightness); // устанавливаем яркость на 9 ножку
loopTime = currentTime;
}
}
Чтобы Arduino помнил последний уровень громкости и включался с ним?
Заранее благодарен!
Re: Регулятор громкости Arduino с памятью
Re: Регулятор громкости Arduino с памятью
Цитата:
Сообщение от
Chip
Спасибо! Наверное это то, что нужно, но я, почитав все 14 страниц, так к сожалению и не понял, что мне сделать, чтобы моя платка запоминала уровень звука.
В программировании я почти ничего не понимаю, можно по подробнее (по пунктам) для альтернативно одаренных?
Re: Регулятор громкости Arduino с памятью
Цитата:
Сообщение от
AlexVr
Спасибо! Наверное это то, что нужно, но я, почитав все 14 страниц, так к сожалению и не понял, что мне сделать, чтобы моя платка запоминала уровень звука.
В программировании я почти ничего не понимаю, можно по подробнее (по пунктам) для альтернативно одаренных?
В программировании всё-таки придётся разбираться. Ну, или ждать пока тебе дадут готовое решение.
Особой сложности в реализации нет - при изменении уровня громкости нужно записывать значение в память ардуины, а при включении - оттуда считывать.
Re: Регулятор громкости Arduino с памятью
Мне остается только ждать:)
Может кто-нибудь выручит?
Re: Регулятор громкости Arduino с памятью
Для запоминания можно использовать библиотеку eeprom.h
пример
PHP код:
#include <EEPROM.h>
int addr = 0; //адрес в EEPROM
void setup()
{
byte val = EEPROM.read(addr); // считываем значение из EEPROM
EEPROM.write(addr, val+1);// записываем значение в EEPROM
}
void loop()
{
}
Re: Регулятор громкости Arduino с памятью
Еще раз Спасибо, буду разбираться как это в исходную программку внедрить.