LED Rubiks kub med Arduino (2 / 10 steg)
Steg 2: Skiftregister
Det enda SKIFT registret
Isolerat, ett enda skiftregister får du åtta utgångar för priset av tre I / O's på din Arduino. Det är en integrerad krets som kräver kraft och marken, och tar 3 ingångar från Arduino. Dessa indata stift (11,12,14) kallas klocka pin, spärren stift och data stift respektive. Den skiftregister sexton Pins finns åtta utgångar som kan användas för att styra olika enheter digitalt. Staterna i dessa utgångar bestäms av SKIFT register data skickas. Med tanke på en byte i data skiftregister kommer att vända utgångar sin åtta antingen hög eller låg, 1 för hög, 0 för låg. Arduino använder klockan och spärren stift att berätta skiftet registrera när att ta emot data och när du vill bearbeta den, medan den data stift är där data som faktiskt bedrivs. Arduinoen har en inbyggd i kommandot för att ge uppgifter till skiftregister. En handledning kan hittas här: http://www.arduino.cc/en/Tutorial/ShiftOut. Kunskap om kommandot shiftOut beskrivs i handledningen är viktigt, men enkelt summerade. Syntaxen är:
digitalWrite (latchpin; LÅG); signaler SKIFT register som det handlar om att ta emot data
shiftOut (dataPin, clockPin, MSBFIRST, data); skickar ut byte heter "data", börjar med den mest signifikanta biten.
digitalWrite (latchpin; HÖGA). signaler SKIFT register för att bearbeta data, byta önskad utgångar.
Detta kommando gör det berätta Arduino att skicka ut oavsett byte vi har kallat "data" till skiftregister. Skiftregister kommer att ta ett byte, och använda värdet på den första biten för att kontrollera sin första produktion och så vidare. MSBFIRST kommandot anger den Ardunio som lite för att skicka ut först. Det till vänster är den mest betydande. Så, till exempel om data = 11111111, skiftregister kommer att skriva allt till dess resultat till hög. Om data = 00000000, skiftregister kommer att skriva allt till dess resultat till låg.
Flera SKIFT register: Daisy Chain
Den verkliga kraften i skiftregister kommer från deras förmåga att vara länkade till varandra i en kedjekoppling. Om två SKIFT register har deras klocka stift och spärren stift ansluten, och vi ansluter data ut pin (9) ett skift register till data stift (14) en annan, Arduino kan kommunicera både seriellt. På detta sätt Arduino kan kommunicera till en praktiskt taget obegränsad antal SKIFT register och andra enheter, fortfarande använder endast tre jag / O's Om vi ersätter vår ensamma byten, 'data', av en matris med byte som: data [] = {a, b}; där en = 00000000 och b = 11111111, sedan kommandot shiftOut (dataPin, clockPin, MSBFIRST, data), ger byte en till andra skiftregister och byte b till den ursprungliga skiftregister. På detta sätt fungerar ett godtyckligt långt seriekoppling precis som ett transportband. Den första byten i matrisen uppgifter är den första som ska skiftas ut och går direkt till det första skiftregister, som överlämnar det av nästa skiftregister och så vidare fram till slutet av kedjan. Detta händer med varje byte, så det sista skiftet registrera slutar ta emot den första byten i arrayen, medan det första SKIFT registret får sist. Detta gör kedjan av SKIFT register ett bra sätt att kontrollera en rad 54 RGB LED av kodning med en Arduino.