Не работает 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.
Да, заработало. Скорее всего именно из за этого и моргало