Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX) (7 / 13 steg)
Steg 7:.: 8 mer lysdioder:. (74HC595 skiftregister) - CIRC05
Vad vi gör:
Dags att börja spela med chips. Eller integrerade kretsar (ICs) som de vill kallas. Den yttre förpackningen av ett chip kan vara mycket vilseledande till exempel chipet på Arduino ombord (en micro controller) och den kommer vi att använda i denna krets (ett skiftregister) ser väldigt lika ut men är i själva verket ganska olika, till exempel priset på Atmega chipet på arduino styrelsen är några dollar medan 74hc595 är ett par dussin cent. Det är en bra inledande chip, och när din bekväma spela runt med den och dess datablad (tillgängliga online http://tinyurl.com/pr42xe ) världen av chips kommer att vara ditt ostron. Skiftregister (kallas även en följetong till parallell-omvandlare), kommer att ge dig en extra 8 utgångar (att kontrollera lysdioder och liknande) med endast tre arduino stift. De kan också kopplas samman för att ge dig ett nästan obegränsat antal utgångar med samma fyra stiften. För att använda det du klocka i data och sedan spärren låsa det (spärren det). Gör ange du data stift till antingen högt eller lågt, puls klockan, och sedan ange data PIN-koden igen och puls klockan upprepa tills du har skiftat ut 8 databitar. Sedan registrerar du puls spärren och de 8 bitarna överförs till SKIFT stift. Det låter komplicerat men är enkelt när du får kläm på det.
(för en mer ingående titt på hur en förskjutning registrera verk besök: http://tinyurl.com/56uvv7 )
(du kan också hämta bladet bakbord layout från botten av detta steg)
Delarna:
- CIRC-05 bakbord blad
- 2 stift huvud (x40
- Skiftregister (74HC595) (x 1)
- 560 ohm Resistor (grön-blå-brun) (x8)
- 5mm röd LED (x8)
- Wire
Kretsen och ansluta allt:
En liten Video av allt att vara inkopplad
The Code: - http://tinyurl.com/cv4fjt
/* --------------------------------------------------------- * | Arduino experimenterande Kit exempel kod | * | CIRC-05.: 8 mer lysdioder:. (74HC595 skiftregister) | *---** Har vi kontrollerade redan 8 lysdioder men detta gör det i en något * olika sätt. Istället för att använda 8 stift använder vi bara tre * och ett extra chip. ** För mer information om denna krets http://tinyurl.com/111111/ * * ///Pin definitioner / / 74HC595 med hjälp av ett protokoll som kallas SPI (för mer detaljer http://www.arduino.cc/en/Tutorial/ShiftOut) //Which har tre pinsint data = 2; int clock = 3; int spärren = 4; //Used för enstaka LED manipulationint ledState = 0; const int å = hög, const int OFF = låg; / * * setup() - funktionen körs en gång när du slår din Arduino på * vi satt tre kontroll stiften att utgångar * / void setup() {pinMode (data, produktionen); pinMode (klocka, OUTPUT); pinMode (spärren, OUTPUT);} / * * loop() - denna funktion startar när installationen är klar och sedan upprepa * vi satt som lysdioder vi vill på sedan ringa en rutin som skickar de till 74HC595 * / void loop() / / kör om och om igen {int fördröjningstid = 100; //the antal millisekunders fördröjning mellan LED uppdateringar för (int jag = 0; jag < 256; i ++) {updateLEDs(i); delay(delayTime);}} / * * updateLEDs() - skickar LED står i ledStates till 74HC595 * sekvens * / void updateLEDs (int value) {digitalWrite (latch, låg); //Pulls marker spärren låg shiftOut (data, klocka, MSBFIRST, värde); //Shifts ut de 8 bitarna till SKIFT register digitalWrite (latch, hög); //Pulls spärren hög visar data} / * * updateLEDsLong() - skickar LED står i ledStates till 74HC595 * sekvens. Samma som updateLEDs förutom att skifta ut görs i programvara * så du kan se vad som händer. * / void updateLEDsLong (int value) {digitalWrite (latch, låg); //Pulls marker spärren låg för (int jag = 0; jag < 8; i ++) {//Will upprepa 8 gånger (en gång för varje bit) int bit = värde & B10000000; //We använda en "bitmask" för att välja endast den åttonde //bit i vårt nummer (den som vi tar upp denna gång genom värde = värde << 1; //we flytta våra upp en bit värde så nästa gång bit 7 är //bit 8 och vi kommer att göra vår matematik på det if(bit == 128) {digitalWrite (data, hög);} //if bit 8 är Ställ och ange våra data pin hög annat {digitalWrite (data, låg);} //if bit 8 är deaktiverat sedan ställa in data pin låg digitalWrite (klocka, hög); de följande tre raderna puls klocka pin delay(1); digitalWrite (klocka, låg); } digitalWrite (latch, hög); drar låset hög skiftande våra data till visas} //These används i bitvis matematik som vi använder för att ändra enskilda lysdioder / för mer detaljer http://en.wikipedia.org/wiki/Bitwise_operationint bits [] = {B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000}; int masker [] = {B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111}; / * * changeLED (int ledde, int stat) - ändrar en enskild LED * lysdioder är 0 till 7 och staten är antingen 0 - OFF eller 1 - å * / void changeLED (int ledde int staten) {ledState = ledState & masker [ledde]; //clears ledState av bet vi tar upp if(state == ON) {ledState = ledState | bitar [ledde];} //if biten är på vi kommer att lägga till ledState updateLEDs(ledState); //send den nya LED-staten till SKIFT registrera}
Och ladda upp detta kommer att orsaka lampor att lysa upp en efter den andra och sedan ut på ett liknande sätt. Kontrollera koden och wikipedia för att se hur det fungerar, eller skjuta oss en e-post om du har frågor.
Mer animationer:
Nu blir det mer intressant. Om du tittar tillbaka till koden från CIRC02 (8 LED kul) du ser vi ändrar lysdioderna med digitalWrite (led, statligt), detta är samma format som rutin vi skrev changeLED (led, statligt). Du kan använda animeringar du skrev för CIRC02 genom att kopiera koden till denna skiss och ändra alla digitalWrite () 's (changeLED). kraftfull? Mycket. (också måste du ändra några andra saker men följer de sammanställa fel och det funkar själv)