Infra röd Vest kod (2 / 4 steg)
Steg 2: Återanvändning av Arduino filer för mikro- och timern
Du kan hitta de filer som behövs i mappen Arduino:
hårdvara/arduino/kärnor/arduino (ja två gånger arduino)
där du kan hitta arduino filerna, vilket sparar mycket människor lära sig C AVR:-), men till en kostnad av hastighet och storlek.
Jag behövde mikro fungerar och avbrottet, som jag hittade i wiring.c
Jag kopierade: (också kopiera variabler och definierar jag behövde från wiring.h)
SIGNAL(TIMER0_OVF_vect)
osignerade långa millis()
osignerade långa micros()
men mycket viktigt, att få timer/avbrottet började är den:
void init()
Det finns en hel del kod kan du hoppa över om du vet att du använder en atmega328.
Sedan får vi här koden i två fina filer, en källa och ett huvud:
http://http//:www.contrechoc.com/Instructables/Infra-Red.zip
(Detta är ett totalt AVR projekt kan du använda ytterligare kul.)
Här ingår också, en UART.c och UART.h, för kommunikation med de flytande kristallerna.
Du ser jag har gjort fyllningen en int variabel.
Också den analoga läsa aktiveras för en LDR, och en PIN-kod för att göra andra axeln lyser upp när en signal vid 38kHz tas emot.
initTimers(); används för att starta avbrotten, funktionen init () från wiring.c
I sidhuvudfilen hittar du anslutningarna med grupperna av lysdioder (flexibel LED strips)
anslutningar till STIFTS från led cirkeln
unsigned char rader [8] = {7, 6, 5, 4, 3, 2, 1, 0};
unsigned char cols [8] = {15, 14, 13, 12, 11, 10, 9, 8};
Avbryta funktionen skiljer sig från de flexibla LED strips jag använt tidigare:
SIGNAL(TIMER0_OVF_vect)
I denna funktion, förutom "Arduino koden" har jag lagt min egen interruptFie();
Denna funktion hand tar om LED block MATRIX verksamhet.
I funktionen setIRPattern (uint8_t antal) ser du matrisen för Lamporna på axeln bandet.
3 Ange saknas lysdioder form 64 (jag inte använder det fullständiga 64 = 8 x 8 lysdioder i västen.)