50 lines
1.8 KiB
C
50 lines
1.8 KiB
C
/*
|
|
Last Updated: 30 Mar. 2018
|
|
By Anton Grimpelhuber (anton.grimpelhuber@gmail.com)
|
|
*/
|
|
|
|
// The TV-B-Gone for Arduino can use either the EU (European Union) or the NA (North America) database of POWER CODES
|
|
// EU is for Europe, Middle East, Australia, New Zealand, and some countries in Africa and South America
|
|
// NA is for North America, Asia, and the rest of the world not covered by EU
|
|
|
|
// Two regions!
|
|
#define NA 0 //set by a HIGH on REGIONSWITCH pin
|
|
#define EU 1 //set by a LOW on REGIONSWITCH pin
|
|
|
|
// What pins do what
|
|
#define LED 10 //LED indicator pin (built-in LED)
|
|
#define IRLED 9 //the IR sender LED / D5 on wemos D1 mini
|
|
#define TRIGGER 37 //the button pin / D6 on wemos D1 mini
|
|
#define REGIONSWITCH 39 //HIGH (1) = NA, LOW (0) = EU; Pin 5 / D1 (REGIONSWITCH) is HIGH (via in input pullup resistor) for North America, or you (the user) must wire it to ground to set the codes for Europe.
|
|
|
|
// Lets us calculate the size of the NA/EU databases
|
|
#define NUM_ELEM(x) (sizeof (x) / sizeof (*(x)));
|
|
|
|
// set define to 0 to turn off debug output
|
|
#define DEBUG 0
|
|
#define DEBUGP(x) if (DEBUG == 1) { x ; }
|
|
|
|
// Shortcut to insert single, non-optimized-out nop
|
|
#define NOP __asm__ __volatile__ ("nop")
|
|
|
|
// Not used any more on esp8266, so don't bother
|
|
// Tweak this if neccessary to change timing
|
|
// -for 8MHz Arduinos, a good starting value is 11
|
|
// -for 16MHz Arduinos, a good starting value is 25
|
|
#define DELAY_CNT 25
|
|
|
|
// Makes the codes more readable. the OCRA is actually
|
|
// programmed in terms of 'periods' not 'freqs' - that
|
|
// is, the inverse!
|
|
// #define freq_to_timerval(x) (F_CPU / 8 / x - 1)
|
|
#define freq_to_timerval(x) (x / 1000)
|
|
|
|
// The structure of compressed code entries
|
|
struct IrCode {
|
|
uint8_t timer_val;
|
|
uint8_t numpairs;
|
|
uint8_t bitcompression;
|
|
uint16_t const *times;
|
|
uint8_t const *codes;
|
|
};
|