#include "ir.h"
#include "common.h"
EMPTY_INTERRUPT(PCINT0_vect); // just wake up from sleep
byte z;
void setup() {
DIDR0 = ~(1 << IR_SENSOR_PIN) & 0x1F; // disable digital intput buffer except IR pin
GIMSK |= (1 << PCIE); // enable pin change interrupts
PCMSK |= (1 << IR_SENSOR_PIN); // enable interrupt on IR pin
sei();
//Initialize array
registerState = new byte[numOfRegisters];
for (size_t i = 0; i < numOfRegisters; i++) {
registerState[i] = 0;
}
//set pins to output so you can control the shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void off() {
for (byte i = 0; i < 16; i++) {
regWrite(i, 0);
}
}
int mode1() {
byte i;
for ( i = 0; i <= 16; i++) {
delay(50);
regWrite(i, 1);
}
for (i= 16; i > 0; i--) {
delay(50);
regWrite(i, 0);
}
return(0);
}
void loop() {
// Check IR receiver and change parameters; delay 80ms
for (uint8_t i = 80; i; i--) {
if (IR_available()) {
uint8_t command = IR_read();
if (command == UPP) {
mode1();
}
switch (command) {
case POWER: off(); return(command); break;
case OFF : f0(); break;
case R1 : f1(); break;
case R2 : f2(); break;
case R3 : f3(); break;
case R4 : f4(); break;
case R5 : f5(); break;
case R6 : f6(); break;
case R7 : f7(); break;
case R8 : f8(); break;
default: break;
}
}
_delay_ms(1);
}
}