Странно работает аналог
- Войдите на сайт для отправки комментариев
Пнд, 06/04/2015 - 20:41
Добрый вечер, уважаемые.
Первый вечер ковыряю ардуино и вот наткнулся на такой глюк.
Простая программка мигания трехцветным диодом:
int ledGreen = 10;
int ledBlue = 7;
int ledRed = 9;
void setup() {
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledBlue, OUTPUT);
}
void blink(int aLed)
{
digitalWrite(aLed, HIGH);
delay(500);
digitalWrite(aLed, LOW);
delay(1);
}
void loop() {
blink(ledRed);
delay(10);
blink(ledGreen);
delay(10);
blink(ledBlue);
delay(10);
}
Все мигает, все хорошо.
Переписал функцию blink вот так (чтобы плавно загоралось)
void blink(int aLed)
{
for(int i=0; i<50; i++)
{
analogWrite(aLed, i);
delay(10);
}
delay(500);
digitalWrite(aLed, LOW);
delay(1);
}
Странно работает: красный и зеленый плавно загораются как и должны, а сильный вообще не горит.
В чем может быть дело, не пойму?
P.S. Freeduino Leanardo, питание от USB, если это важно.
Все, разобрался. 7 выход - только цифровой. Там нет ШИМа :-)
Переделал на 11-ый - все замигало.
intledGreen = 10; - хватит иbyteledGreen = 10; , зачем память тратить ?Хватит и #define ledgreen 10 , зачем вообще переменную заводить....
Развращен C# и десктопами. Все впереди.
Хватит и #define ledgreen 10 , зачем вообще переменную заводить....
эт, даааа.... а она будет запихуема в
voidblink(intaLed) ?Хватит и #define ledgreen 10 , зачем вообще переменную заводить....
эт, даааа.... а она будет запихуема в
voidblink(intaLed) ?Запихуема. Только что проверил. Кстати, void blink(char aLed), если уж на то пошло ;-)
Ну тогда и сразу for ( char i=0 ; i<50 ; i++) можно попробовать......
Или for ( byte i=0 ; i<50 ; i++)
Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127.
Если необходима беззнаковая однобайтовая переменная, используйте тип byte.
а чё СД разгоняете только до 50, а не до 255 ? без резисторов играетесь ?
а чё СД разгоняете только до 50, а не до 255 ? без резисторов играетесь ?
после 100 визуально уже не видно. Резисторы на 220Ом стоят.
Я с электроникой не особо дружу, лет десят назад паял по мелочи. Буду разбираться.