Stap 4:
Voeg de volgende code in de Arduino IDE. Opmerking de opmerkingen in de code die u vertellen wat elk onderdeel van de code doet.
/*
******************************************************
* SPI test (het besturen van een digitale Potentiometer in dit geval)
*
* Deze module maakt gebruik van de bibliotheek van de Arduino SPI (komt gebundeld met
* de Arduino IDE) om de communicatie tussen een
* Arduino programma en een SPI ingeschakeld perifere chip.
*
* De routine leest in 8-bits waarden, wordt de waarde opgeslagen
* in de variabele "pot", en vervolgens stuurt "pot" uit via de SPI.
* *
* De SPI-bibliotheek gebruikt pin 13 van de Arduino Uno voor klok.
* Seriële data wordt verzonden op pin 11.
*
* Deze routine gebruikt pin 10 als de chip selecteren voor de
* SPI apparaat te programmeren.
*
* Pennen 2-9 worden gebruikt om te lezen in de waarden van de 8 bits voor de byte
* om te worden verzonden via SPI
******************************************************
*/
#include < SPI.h > / / Links vooraf SPI bibliotheek geschreven in de code
VOID Setup
{
pinMode (2, ingang); 2-9 pinnen als ingangen instellen
pinMode (3, INPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
pinMode (6, INPUT);
pinMode (7, INPUT);
pinMode (8, INPUT);
pinMode (9, INPUT);
pinMode (10, OUTPUT); Instellen van de SPI pinnen te worden uitgangen
pinMode (11, OUTPUT);
pinMode (13, OUTPUT);
digitalWrite (2, HIGH); Arduino pull-up weerstanden actieve instellen
digitalWrite (3, hoge); Hiermee stelt u een interne naar de chip
digitalWrite (4, HIGH); pull-up weerstand op zodat een onsamenhangende pin
digitalWrite (5, hoge); betrouwbaar is op logica 1
digitalWrite (6, hoge);
digitalWrite (7, hoge);
digitalWrite (8, hoge);
digitalWrite (9, hoge);
digitalWrite (10, hoge);
digitalWrite (11, hoge);
digitalWrite (13, hoge);
SPI.begin(); Initialiseren van de SPI parameters
SPI.setBitOrder(MSBFIRST); MSB eerst worden verzonden
SPI.setDataMode(SPI_MODE3); Instellen voor klok stijgende rand
SPI.setClockDivider(SPI_CLOCK_DIV64); Klok instellen divider (optioneel)
Zie Arduino site of Wikipedia voor meer informatie over deze instellingen
}
void loop
{
int val = 0; "val" is een test-variabele die is gebruikt bij het lezen van de pinnen
int j = 0; "j" is een variabele die is gebruikt in gegevens leesbewerking
byte pot = B00000000; Alle bits in de bytes "pot" nul
voor (int i = 0; ik < 8; i ++) / / Loop om te lezen van elk van de 8 input pinnen
{
j = i + 2; 2 om te tellen zodat deze overeenkomen met input pinnen lus toevoegen
Val = digitalRead(j); Lees juiste pin
if(Val == High)
{
bitSet(pot, i); Set passende bit op 1 gebaseerd op lus graaf ik
} / / Anders laten 0
}
}
digitalWrite(10,LOW); Drop SPI chip-Selecteer op 0 (Arduino pin 10)
SPI.transfer(pot); Zet SPI van variabele pot
digitalWrite(10,HIGH); Chip-Selecteer op 1 verhogen
delay(10000); Vertraging lus 10 seconden (Kies uw tijd-frame)
} / / Gegevens zal worden gelezen en opgestuurd na elke 10 seconden op basis van deze