Вот что я натворил, подскажите где неправильно.
PHP код:
//http://compcar.ru
int CLK = 13;
int DI = 12;
int CE = 11;
int ADDR = 0x42;
byte ReadByte[8];
int i;
void setup()
{
pinMode(CLK, OUTPUT);
pinMode(DI, OUTPUT);
pinMode(CE, OUTPUT);
Serial.begin(115200);
digitalWrite(CLK, LOW);
digitalWrite(DI, LOW);
digitalWrite(CE, LOW);
delay(1000);
}
//===================================================
void loop()
{
if (Serial.available() > 7)
{
for (i = 0; i < 8; i++)
{
(ReadByte[i]) = Serial.read() ; // принимаем данные с компа в массив
}
Serial.flush(); //очистить входной буфер USB
Send_Adress(); // отправляем адрес устройства
for (i = 0; i < 8; i++)
{
Byte_Out(DI, CLK, ReadByte[i]); //отправляем данные в шину в шину
}
digitalWrite(CE, LOW); // запретить прием данных подчиненым
}
delay(500);
}
//==================================================
void Send_Adress()
{
Byte_Out(DI, CLK, ADDR);
delayMicroseconds(5);
digitalWrite(CE, HIGH);
}
//==================================================
void Byte_Out(uint8_t DI, uint8_t CLK, byte val)
{
int idx;
for (idx = 0; idx < 7; idx++)
{
delayMicroseconds(10);
if (((val << idx) & B10000000) == 128)
digitalWrite(DI, HIGH); else
digitalWrite(DI, LOW);
// digitalWrite(DI, val & (1 << idx)); /
digitalWrite(CLK, HIGH); // педний фронт синхроимульса
delayMicroseconds(16);
digitalWrite(CLK, LOW); // задний фронт синхроимульса
}
}