/*
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);

}