помогите в адаптации библиотеки.
- Войдите на сайт для отправки комментариев
Втр, 16/12/2014 - 13:56
ребят,нужна помощь в адаптации библиотеки
https://github.com/project37cat/PT6961_lib
библиотека край как нужна,а знаний ноль чтоб переписать...
ребят,ну помогите же...край как нужно...
Может стОит, всё же, озвучить, что требуется?
курсивом переписать?
там каждая строчка по русски прокоментирована.
она судя по всему не для arduino...она не работает в arduino ide..
ага. она для пиков
глянь в соседней ветке обсуждают. поиском поищи если не увидишь
Попробуйте чуток подкорректировать -
добавить
задать ноги (номера чисто для примера)
добавить пропущенные директивы void (кое-где пропущены)
управление пинами типа
заменить на
и так все, по аналогии...
Вот как-то так (IDE, по крайней мере не ругаеццо) -
// управление LED дисплеем с контроллером PT6961 (7 знаков по 7 сегментов, от китайского DVD плеера) // "led.h" версия 1 от 22.10.2014 // компилятор HI-TECH C PRO PIC18 V9.63PL3 #include <Arduino.h> #define set_bit(ADDRESS,BIT) (ADDRESS |= (1<<BIT)) #define clear_bit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT)) // программный SPI // работает на любых трех ногах #define DAT 10 //DIN #define CLK 11 #define STB 12 char ledbuff[13]; //видеобуфер const unsigned char ce=0b1000000; //"прочерк" const unsigned char cn=0b0000000; //"пробел" const unsigned char c0=0b0111111; //"0" const unsigned char c1=0b0000110; //"1" const unsigned char c2=0b1110011; //"2" const unsigned char c3=0b1110110; //"3" const unsigned char c4=0b1001110; //"4" const unsigned char c5=0b1111100; //"5" const unsigned char c6=0b1111101; //"6" const unsigned char c7=0b0100110; //"7" const unsigned char c8=0b1111111; //"8" const unsigned char c9=0b1111110; //"9" /////////////////////////////////////////////////////////////////////////////////////////////////// void led_data(unsigned char data) //последовательная передача байта в порт начиная с нулевого бита { for(unsigned char i=0; i<8; i++) { if(data & 0x01) { digitalWrite(DAT, HIGH);; } else { digitalWrite(DAT, LOW); } data>>=0x01; digitalWrite(CLK, LOW); digitalWrite(CLK, HIGH); } } /////////////////////////////////////////////////////////////////////////////////////////////////// void led_dimm(unsigned char vol) //vol 0..7 - яркость { digitalWrite(STB, LOW); led_data(0b10001000+vol); digitalWrite(STB, HIGH); } /////////////////////////////////////////////////////////////////////////////////////////////////// void led_init(void) //инициализация PT6961 { digitalWrite(DAT, LOW); digitalWrite(CLK, HIGH); digitalWrite(STB, HIGH); delay(30); //в даташите рекомендуют 200мс digitalWrite(STB, LOW); led_data(0b01000000); //command 2 digitalWrite(STB, HIGH); digitalWrite(STB, LOW); led_data(0b11000000); //command 3 for(unsigned char i=0; i<13; i++) led_data(0); //очистка дисплея digitalWrite(STB, HIGH); digitalWrite(STB, LOW); led_data(0b00000011); //command 1 digitalWrite(STB, HIGH); digitalWrite(STB, LOW); led_data(0b10001000); //command 4 //биты 0..2 регулировка яркости (000..111) digitalWrite(STB, HIGH); } /////////////////////////////////////////////////////////////////////////////////////////////////// void led_digit(unsigned char digit, unsigned char sign) // в позиции 1..7 нарисовать символ { unsigned char tmp=0; switch(sign) //по полученному коду символа выбираем код сегментов { case 32: tmp=cn; break; //пробел case 48: tmp=c0; break; case 49: tmp=c1; break; case 50: tmp=c2; break; case 51: tmp=c3; break; case 52: tmp=c4; break; case 53: tmp=c5; break; case 54: tmp=c6; break; case 55: tmp=c7; break; case 56: tmp=c8; break; case 57: tmp=c9; break; default: tmp=ce; break; //прочерк если неподдерживаемый символ } for(unsigned char i=0; i<14; i=i+2) //передача кода в буфер { if(tmp & 0x01) set_bit(ledbuff[i],digit); else clear_bit(ledbuff[i],digit); tmp>>=0x01; } } /////////////////////////////////////////////////////////////////////////////////////////////////// void led_print(unsigned char digit, const char *string) //вывод строки на дисплей //digit - знакоместо 1..7 { for(unsigned char i=0; string[i]!='\0'; i++) led_digit(i+digit,string[i]); } /////////////////////////////////////////////////////////////////////////////////////////////////// void led_update(void) //обновление картинки - отправляем весь буфер в порт { digitalWrite(STB, LOW); led_data(0b11000000); //command 3 for(unsigned char i=0; i<13; i++) led_data(ledbuff[i]); digitalWrite(STB, HIGH); }Спасибо вам!!Дальше уже сам мудрить буду!