Помогите кто чем может как этот код переделать под нормальную библиотеку SPI?
этот код переделанный под с++ ардуино из примера https://yadi.sk/i/qX-Hf2vsr6Egv
а вот с SPI что то разобраться не могу(
- Код: Выделить всё
#include "SPI.h"
#define pinLed 4
#define pinOut 9
#define pinSCS 10 //SCS
#define pinSCK 13 //SCLK
#define pinSDI 11 //MOSI
#define pinSDO 12 //MISO
void setup() {
//SPI.begin();
//SPI.setBitOrder(LSBFIRST);
//SPI.setClockDivider(SPI_CLOCK_DIV4);
//SPI.setDataMode(SPI_MODE2);
pinMode (pinLed, INPUT);
pinMode (pinOut, INPUT);
pinMode (pinSCS, OUTPUT);
pinMode (pinSCK, OUTPUT);
pinMode (pinSDI, OUTPUT);
//pinMode (pinSDO, OUTPUT);
pinMode (pinSDO, INPUT);
Serial.begin(115200);
//digitalWrite (pinLed, HIGH);
digitalWrite(pinSCS, HIGH);
digitalWrite(pinSCK, HIGH);
digitalWrite(pinSDI, HIGH);
set_Subtle_SPI (10 | 0x20); // Ключ чувствительность установлена на 10
delay (5); // задержка 5MS
set_Subtle_SPI (10); // установить чувствительность ползунка 10
}
void loop() {
if (!digitalRead(pinOut)) {
delay (5); // задержка 5MS
Serial.println(get_key_data());
}
//byte incoming = shiftIn(11, 13, LSBFIRST); //и слушаем что нам ответят
//Serial.println(incoming);
}
int get_key_data (void)
{
int KeyData;
byte i = 0; // счетчик 0 относится к начальному
KeyData = 0;
digitalWrite(pinSDI, HIGH); // SDI установлен высоко, чтобы избежать неправильной установки чипа чувствительности к силе нажатия
digitalWrite(pinSCS, LOW); // открываем включен порт SPI
do
{
KeyData <<= 1; // MSB в качестве первого бита данных
digitalWrite(pinSCK, LOW); // SCK падающий фронт
if (digitalRead(pinSDO) == 1) // чтения данных SDO
{ // SDI высока
KeyData |= 0x01;
}
else
{ // SDI низкий
KeyData &= 0xFE;
}
digitalWrite(pinSCK, HIGH); // SCK нарастающий фронт сигнала
i ++; // счетчик увеличивается на 1
} while (i < 8); // чтение цикл 8 раз
digitalWrite(pinSCS, HIGH); // Закрыть SPI порт включен
return (KeyData); // Возвращает прочитать информацию о ключе
}
void set_Subtle_SPI(char temp) {
byte i = 0; // счетчик 0 относится к начальному
digitalWrite(pinSCS, LOW); // открываем включен порт SPI
do
{
if (!(temp & 0x80) == 0) // первая передача данных является MSB
{
digitalWrite(pinSDI, HIGH); // Текущее значение бита значения чувствительности устанавливается
}
else
{
digitalWrite(pinSDI, LOW); // Текущая настройка чувствительности значение позиции равно 0
}
digitalWrite(pinSCK, LOW); // SCK падающий фронт
digitalWrite(pinSCK, HIGH); // SCK нарастающий фронт сигнала
temp <<= 1; // отправить первый бит данных MSB
i ++; // счетчик увеличивается на 1
} while (i < 8); // Посылаем 8 Цикл
digitalWrite(pinSCS, HIGH); // Закрыть SPI порт включен
digitalWrite(pinSDI, HIGH); // SDI установить высокие
Serial.println(temp);
}