Lägg 40 lysdioder och hjärnan i Robot huvud (6 / 7 steg)
Steg 6: Aktiverar hjärnan
Istället använde jag exempelkod tillgänglig från TLC5940 biblioteket, (CircularLightBuffer.ino).
Jag har till ändrat koden av tillsatt en av konstantvärdet i koden, NUM_TLCS, genom att lägga till denna linje
#define TLC_TOTAL 3
NUM_TLCS ersättas i koden med TLC_TOTAL. Denna konstant är antalet TCL5940 IC vi faktiskt används. (NUM_TLCS definierades som 1) Och var det ligger i en av sidhuvudfilen. Jag tyckte det var mycket mer praktiskt att ersätta värdet i exempelkoden än gick till den ursprungliga koden och ändra värdet där.
/*
En cirkulär ljus buffert. Om du lyckas bygga upp en cirkel med lysdioder,
definitivt skicka in bilder. Vad denna skiss gör är att ta en analog
behandlingen av analog pin 0 och lägga till det aktuella värdet för den sista LED.
Om den resulterande summan är större än 4095, släcks det LED,
annars anger LED 0 till värdet av summan.
Om du marken stift 12, kommer den in LED 0 till noll.
Då det skiftar alla LED värden upp en (så ledde 0 blir LED 1) och sätter
LED 0 värde skiftat av sist ledde (så att om en LED är på, kommer
gå i en cirkel för evigt).
Se BasicUse exemplet för installation av maskinvara.
Alex Leone < acleone ~ i ~ gmail.com >, 2009-02-04 * /
#include "Tlc5940.h"
#include "tlc_shifts.h"
#define TLC_TOTAL 3
som analog stift att använda
#define ANALOG_PIN 0
vilka stift till tydliga lysdioder med
#define CLEAR_PIN 12
Hur många millis för en full rotation över alla lampor
#define SCOPE_PERIOD (2000 * TLC_TOTAL)
#define SCOPE_PERIOD (2000 * 3)
#define LED_PERIOD SCOPE_PERIOD / (TLC_TOTAL * 16)
#define LED_PERIOD SCOPE_PERIOD / (3 * 16)
void setup()
{
pinMode (CLEAR_PIN, indata);
digitalWrite (CLEAR_PIN, hög); Aktivera pull-up
TLC.init();
}
void loop()
{
shiftUp returnerar värdet skiftat av senaste pin
uint16_t summan = tlc_shiftUp() + analogRead(ANALOG_PIN) * 4;
om (digitalRead(CLEAR_PIN) == låg || summa > 4095)
summa = 0;
TLC.set (0, summan);
TLC.Update();
Delay(LED_PERIOD);
}