16bit код и светодиодный драйвер
- Войдите на сайт для отправки комментариев
Пнд, 21/09/2015 - 22:52
Здравствуйте
Возьникло не понимание,как управлять каждым по отдельности.Вот есть оператор
shiftOut(SDI, CLK, MSBFIRST, j);
Как обозначить ,каким bitом управлять
#define SDI 10 #define CLK 9 #define LE 8 long b = (0b00000001,0b00000000); void setup() { pinMode(SDI, OUTPUT); pinMode(CLK, OUTPUT); pinMode(LE, OUTPUT); } void loop() { for(int a=0;a<510;a++){ digitalWrite(LE, LOW); //digitalWrite(a,HIGH); analogWrite(b,a); shiftOut(SDI, CLK, MSBFIRST, a); delay(100); digitalWrite(LE, HIGH); delay(100);}
http://arduino.ru/Reference/ShiftOut
Не понял для чего у Вас строки 19 (в первом) и 25 (во втором). Чего Вы этим хотели добиться?
Отдельным битом никак не управлять. Просто загоняете туда весь регистр, а все биты в нём заранее выставляете.
Чтоб плавно диоды загорались,и управление ргб.
а что за драйвер?
dm135b
Чтоб плавно диоды загорались,и управление ргб.
Да,я по другому не представляю как.
странный тс
Да,я по другому не представляю как.
long
b = (0b00000001,0b00000000);
чему по-Вашему должна быть равна b?
Номеру ножки на драйвере.
Номеру ножки на драйвере.
)))
Первый бит или 0.
1
Ну, слва Богу, значит Вам нужно, что переменная b равнялась 1. Ну так и пишите
int b = 1;
Козьма Прутков правильно говорил "Не мудрствуй лукаво!"
А ещё лучше не тратить память на переменную и завести номер ноги константой времени компиляции (если, конечно, номер в процессе работы программы не собирается меняться).
#define NOGA 1
А про биты я Вам уже ответил - персональным битом не управляете никак. Каждый раз, когда нужно поменять бит, готовите байт в котором все 8 битов выставлены правильно и засылаете его в регистр.
Вот с этим кодом светодиод просто мигает,а мне надо сделать,чтоб он плавно разгорался.
Как мне вставить это код в отправку данных?
Вот с этим кодом светодиод просто мигает,а мне надо сделать,чтоб он плавно разгорался.
Как мне вставить это код в отправку данных?
Никак, dm135b такого не умеет.
Придется использовать arduino mini.
Хотел сделать на тини13 и драйвере.
Вот с этим кодом светодиод просто мигает,а мне надо сделать,чтоб он плавно разгорался.
Как мне вставить это код в отправку данных?
Вам нужно либо взять что-то другое, например TLC5940 - он умеет управлять 16 светодиодами и выставлять яркость каждому индивидуально.
Ну или проще - если Ва не нужно именно управлять, а нужно только чтобы плавно разгорались и плавно гасли, я бы использовал тот драйвер, что есть, а на каждый дио поставил бы RC цепочку с правильно подобранной постоянной времени. Включается питание - кодненсатор заряжается, по мере заряда диод набирает яркость. Пропало питание - конденсатор разряжается и по мере разряда диод постепенно гаснет. Делов то - лдин резистор и один конденсатор на каждый диод - если место позволяет, я бы так сделал и не парился бы.
Спасибо за подсказки ,буду варианты переберать.
Дак этот код будет работать с TLC5940,или нет?
Даже если не будет, то изменения минимальны, т.к. у обоих драйверов управление через одинаковый интерфейс. Но у TLC5940 ещё можно ШИМ'ом яркость регулировать.
Только Вы смотрите, я не знаю как у Вас подключаются диоды и можете ли Вы это подключение переделать. TLC5940 работает только в схемах с общим анодом. Если у Вас отдельные диоды, то Вам всё равно как их вставлять, а вот если, скажем семисементник или ещё какая матрица, то нужно, чтобы именно общий анод был. Если общий катод, то TLC5940 не подходит.