Genom att använda en Arduino kontrollerar eller testa en elektronisk anordning som SPI (4 / 7 steg)
Steg 4:
Infoga följande kod i Arduino IDE. Lägg märke till kommentarerna i koden som berätta vad varje del av koden gör.
/*
******************************************************
* SPI test (köra en Digital Potentiometer i detta fall)
*
* Denna modul använder Arduino SPI-biblioteket (levereras med
* Arduino IDE) att möjliggöra kommunikation mellan en
* Arduino program och ett SPI aktiverat perifera chip.
*
* Rutinen läser i 8 bit värden, lagrar värdet
* i variabel "potten", och sedan skickar "potten" ut via SPI.
* *
* SPI biblioteket använder stift 13 av Arduino Uno för klockan.
* Seriell data skickas ut på stift 11.
*
* Denna rutin använder stift 10 som chip Välj för den
* SPI enheten programmeras.
*
* Stift 2-9 används för att läsa i värden 8 bitar för byten
* ska skickas via SPI
******************************************************
*/
#include < SPI.h > / / länkar prewritten SPI bibliotek i koden
void setup()
{
pinMode (2, ingång); Ställa in stift 2-9 som insatsvaror
pinMode (3, ingång);
pinMode (4, ingång);
pinMode (5, ingång);
pinMode (6, ingång);
pinMode (7, ingång);
pinMode (8, ingående);
pinMode (9, ingång);
pinMode (10, OUTPUT); Ställa in SPI stiften att utgångar
pinMode (11, OUTPUT);
pinMode (13, OUTPUT);
digitalWrite (2, hög). Anges Arduino pull-up motstånd aktivt
digitalWrite (3, hög). Detta ställer ett internt till chip
digitalWrite (4, hög). pull-up resistor på så en osammanhängande stift
digitalWrite 5, hög, är tillförlitligt på logik 1
digitalWrite (6, hög).
digitalWrite (7, hög).
digitalWrite 8, hög.
digitalWrite (9, hög).
digitalWrite 10, hög.
digitalWrite (11, hög).
digitalWrite 13, hög.
SPI.begin(); Initiera SPI parametrar
SPI.setBitOrder(MSBFIRST); MSB ska skickas först
SPI.setDataMode(SPI_MODE3); För klockan stiger kant
SPI.setClockDivider(SPI_CLOCK_DIV64); Ställa klocka divider (valfritt)
Se Arduino webbplats eller Wikipedia för mer information om dessa inställningar
}
void loop()
{
int val = 0; "val" är en testvariabel som används när man läser pins
int j = 0; "j" är en variabel som används i data Läsåtgärd
byte pot = B00000000; Noll alla bitar i byte "potten"
för (int jag = 0; jag < 8; i ++) / / slinga för att läsa alla 8 input stift
{
j = i + 2. Lägg till 2 för att loopa count för att matcha in stift
Val = digitalRead(j); Läs lämpliga pin
IF(val == High)
{
bitSet(pot, i); Ange lämpliga lite till 1 baserat på loop räkna jag
} / / Annars lämna det vid 0
}
}
digitalWrite(10,LOW); Släpp SPI chip-Välj 0 (Arduino PIN-kod 10)
SPI.transfer(pot); Överför SPI av variabel potten
digitalWrite(10,HIGH); Höja chip-Välj till 1
Delay(10000); Dröjsmål loop 10 sekunder (plocka din tidsram)
} / / Data läsa och skickas när varje 10 sekunder baserat på detta