Plug'n' spela Neopixels (1 / 2 steg)
Steg 1: Hur man koden
Den svåraste delen arbetar ute hur till program Counter/Timer 1 att använda Pin 5 som räknare input istället för den mer vanliga använder som en digital eller analog ingång eller utgång. Detta kräver noggrann kontroll av databladet, men lyckligtvis för dig, jag har gjort allt det där.
I ett globalt sammanhang av din skiss (dvs. före setup()) måste följande kodrader:
int pixlar.
#define MAXPIXELS 60
#define stift 8
Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAXPIXELS, stift, NEO_GRB + NEO_KHZ800);
I en befintlig skiss redan du de två sista raderna, eller något likvärdigt. Om du använder en annan typ av NeoPixels eller ett annat stift, ändra dessa linjer för att matcha din version.
Vid en lämplig punkt i setup(), Lägg till följande kod:
#define COM1A 0
#define COM1B 0
#define WGM1 4 / / CTC-läge
#define FOC1 0
#define CS1 7 / / Ext klocka stigande kanten
TCCR1A = (COM1A << 6) | (COM1B << 4) | (WGM1 & 3);
TCCR1B = (FOC1 << 6) | ((WGM1 & 0xC) << 1) | CS1;
Strip.BEGIN();
TCNT1 = 0;
Strip.show();
pixlar = PIXLAR - (TCNT1 + 12) / 24;
Serial.BEGIN(38400);
Serial.Print ("Count ="); Serial.Print(TCNT1);
Serial.Print ("pixlar ="); Serial.println(pixels);
Du kan ta bort kommentar kommenterade raderna för felsökning ändamål om du vill, för att se att bitarna som räknas som de kommer ur DOUT.
I resten av din skiss, Använd variabeln pixlar varhelst du behöver storleken på ringen, eller där koden använder strip.numPixels().