/*
O protocolo SPI foi projetado para funcionar com vários
dispositivos no barramento serial.
A Serial Peripheral Interface (SPI) usa o relógio mestre e escravo
para determinar qual dispositivo irá se comunicar.
SPI geralmente é implementado em três pinos:
SCK para relógio,
MOSIpara Master Out Slave In, e
MISO para Master In Slave Out.
Os sinais em SS (Slave Select) é usado para o mestre controlar
muitos dispositivos escravos.
A placa Arduino UNO, por exemplo, tem pinos SPI em:
10 (SS),
11 (MOSI),
12 (MISO) e
13 (SCK).
Parra testar o nosso Arduino com protocolo SPI, podemos conectar os
pinos MOSI e MISO usando um cabo de jumper.
Conectar o pino digital 11 ao pino digital 12
*/
#include <SPI.h>
byte sendData,recvData;
void setup() {
SPI.begin();
Serial.begin(9600);
}
byte randomDigit() {
unsigned long t = micros();
byte r = (t % 10) + 1;
for (byte i = 1; i <= 4; i++)
{
t /= 10;
r *= ((t % 10) + 1);
r %= 11;
}
return (r - 1);
}
/*
Na função loop(), executamos o envio de um número aleatório via SPI.
Este aleatórionúmero é gerado pela chamada A função
randomDigit(). Usando SPI.transfer() para enviar e recuperar dados
no barramento SPI.
Finalmente, exibimos os dados que são enviados e recebido
na porta serial para que possamos monitorá-lo através da
ferramenta Serial Monitor.
*/
void loop() {
sendData = randomDigit();
recvData = SPI.transfer(sendData);
Serial.print("Send=");
Serial.println(sendData,DEC);
Serial.print("Recv=");
Serial.println(recvData,DEC);
delay(800);
}