|
- /*
- x10.h - - X10 transmission library for Arduino - Version 0.4
-
- Original library (0.1) by Tom Igoe.
- Timing bug fixes (0.2) " " "
-
- Sends X10 commands.
-
- */
-
- // ensure this library description is only included once
- #ifndef x10_h
- #define x10_h
-
- // include types & constants of Wiring core API
- #include "Arduino.h"
-
- #define BIT_DELAY 1778 // 1778 us between bit repeats in a half-cycle
- #define BIT_LENGTH 800 // each bit is slightly less than 1ms long
-
- #define HOUSE_A B0110
- #define HOUSE_B B1110
- #define HOUSE_C B0010
- #define HOUSE_D B1010
- #define HOUSE_E B0001
- #define HOUSE_F B1001
- #define HOUSE_G B0101
- #define HOUSE_H B1101
- #define HOUSE_I B0111
- #define HOUSE_J B1111
- #define HOUSE_K B0011
- #define HOUSE_L B1011
- #define HOUSE_M B0000
- #define HOUSE_N B1000
- #define HOUSE_O B0100
- #define HOUSE_P B1100
-
- #define UNIT_1 B01100
- #define UNIT_2 B11100
- #define UNIT_3 B00100
- #define UNIT_4 B10100
- #define UNIT_5 B00010
- #define UNIT_6 B10010
- #define UNIT_7 B01010
- #define UNIT_8 B11010
- #define UNIT_9 B01110
- #define UNIT_10 B11110
- #define UNIT_11 B00110
- #define UNIT_12 B10110
- #define UNIT_13 B00000
- #define UNIT_14 B10000
- #define UNIT_15 B01000
- #define UNIT_16 B11000
-
- #define ALL_UNITS_OFF B00001
- #define ALL_LIGHTS_ON B00011
- #define ON B00101
- #define OFF B00111
- #define DIM B01001
- #define BRIGHT B01011
- #define ALL_LIGHTS_OFF B01101
- #define EXTENDED_CODE B01111
- #define HAIL_REQUEST B10001
- #define HAIL_ACKNOWLEDGE B10011
- #define PRE_SET_DIM B10101
- #define EXTENDED_DATA B11001
- #define STATUS_ON B11011
- #define STATUS_OFF B11101
- #define STATUS_REQUEST B11111
-
- // library interface description
- class x10 {
- public:
- // constructors:
- x10(uint8_t zeroCrossingPin, uint8_t dataPin);
- // write command method:
- void write(byte houseCode, byte numberCode, byte numRepeats);
- // returns the version number:
- int version(void);
-
- private:
- #if defined(__AVR__) || defined(KINETISK) || defined(KINETISL)
- volatile uint8_t *zeroCrossingReg; // AC zero crossing pin
- #else
- volatile uint32_t *zeroCrossingReg; // AC zero crossing pin
- #endif
- uint8_t zeroCrossingBit;
- uint8_t dataPin; // data out pin
- // sends the individual bits of the commands:
- void sendBits(byte cmd, byte numBits, byte isStartCode);
- // checks for AC zero crossing
- void waitForZeroCross(void);
- };
-
- #endif
|