Есть плата с лед матрицей и драйвером PT6961. Не могу разобраться как правильно отправлять данные по SPI на PT6961. Вот код где тупо перебором отправляются данные, матрица зажигается и хаотично мигает по строкам. Код (Text): #include <SPI.h> const int SSPin = 10; void setup() { pinMode (SSPin, OUTPUT); SPI.begin(); } void loop() { for(int i=0; i<255; i++){ for(int j=0; j<255; j++) digitalPotWrite(i,j); delay(1); } } int digitalPotWrite(int address, int value) { digitalWrite(SSPin,LOW); SPI.transfer(byte(address)); SPI.transfer(byte(value)); digitalWrite(SSPin,HIGH); } Вот тут https://sites.google.com/a/gvc.in/open-embedded/home/ic-details/pt6961 написано как работать с этим драйвером, но я не понимаю как правильно отправлять данные, что бы, например, инициализировать лед матрицу, написано - отправить в такой последовательности: So to initalise 6961 write following commands 0x03 0x40 0x8f (for maximum intensity and display on) 0xc0 + address, data.. (upto address 0x0d) Но если я пишу последовательно SPI.transfer(byte(03)) и т.д. при инициализации ничего не происходит. Вопрос как правильно отправлять данные? Если есть готовая библиотека для работы, то подскажите где она лежит.
А вы не могли спутать шестнадцатиричную и десятичную/восьмеричную систему счисления? Т.е. вы пишите byte(0x40), а не byte(40) ?
Я писал по разному, и 03 и 0х03. и просто переводил 40 из 16й в 10ю и писал 64... просто дело в том, что ничего не зажигается. Вот что например нужно послать и в какой последовательности согласно приведённой инструкции, чтобы загорелся один светодиод? В даташите https://dl.dropbox.com/u/64193121/datasheet_6961.pdf на 13 странице написан алгоритм работы, какие данные посылать. Помогите разобраться, как это в коде для ардуино написать правильно. Посылаю данные так: Код (Text): digitalWrite(SSPin,LOW); //command 2 SPI.transfer(byte(0x40)); digitalWrite(SSPin,HIGH); digitalWrite(SSPin,LOW); //command 3 SPI.transfer(byte(0xC0)); digitalWrite(SSPin,HIGH); digitalWrite(SSPin,LOW); //command 1 SPI.transfer(byte(0x03)); digitalWrite(SSPin,HIGH); digitalWrite(SSPin,LOW); //command 4 SPI.transfer(byte(0x80)); digitalWrite(SSPin,HIGH); digitalWrite(SSPin,LOW); //command 1 SPI.transfer(byte(0x03)); digitalWrite(SSPin,HIGH); digitalWrite(SSPin,LOW); //command 4 SPI.transfer(byte(0x8F)); digitalWrite(SSPin,HIGH); Такая запись будет правильная или нет?