Не работает Fade
- Войдите на сайт для отправки комментариев
Чт, 21/12/2017 - 17:45
Есть задача сделать Fade на 2х каналах. Микросхема на внутреннем кварце 1 мгц.
В реальности работает только один канал. Второй просто мерцает и все.
Вот скетч. Подскажите, в чем ошибка?
unsigned int ch1 = 1;
unsigned int ch2 = 127;
int am1=1;
int am2=1;
void setup() {
pinMode(2,INPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
}
void loop() {
if(digitalRead(2) == HIGH){
if (ch1 <= 1 || ch1 >= 255) {
am1 = -am1;
}
if (ch2 <= 0 || ch2 >= 255) {
am2 = -am2;
}
ch1 = ch1+am1;
analogWrite(9, ch1);
ch2 = ch2+am2;
analogWrite(10, ch2);
delay(20);
}
}
в самой первой строке выберите начальное значение ch1 больше единицы, например ch1=2; - все должно заработать
К слову, в 23 строке выражение ch2 <= 0 не совсем корректно. ch2 не может быть меньше 0 по определению, ведь определено оно у вас как беззнаковое целое.
Спасибо. Заработало, но иногда промаргивает. Почему?
Да, беззнаковое. Просто скопировал пример и не исправил
Раз неизвестно что промаргивает и как, то можно свалить вину на разные условия для ch1 и ch2 - строки 20 и 23.
Да, заработало. Скорее всего именно из за этого и моргало