Skip to content

Instantly share code, notes, and snippets.

@mstrengis
Created December 5, 2014 09:24
Show Gist options
  • Save mstrengis/b304e4bc8f0f7dbe3806 to your computer and use it in GitHub Desktop.
Save mstrengis/b304e4bc8f0f7dbe3806 to your computer and use it in GitHub Desktop.
SPARK
#include "IRremote.h"
unsigned int SOUND_POWER = 0x10EF08F7;
unsigned int SOUND_TEST = 0x10EFA05F;
unsigned int SOUND_DIRECT = 0x10EF50AF;
unsigned int SOUND_OPTICAL = 0x10EFD02F;
unsigned int SOUND_COAX = 0x10EF30CF;
unsigned int SOUND_EFFECT = 0x10EFB847;
unsigned int SOUND_SETUP = 0x10EFF807;
unsigned int SOUND_SUBTITLE_INC = 0x10EFC03F;
unsigned int SOUND_SUBTITLE_DEC = 0x10EF807F;
unsigned int SOUND_CENTER_UP = 0x10EF40BF;
unsigned int SOUND_CENTER_DOWN = 0x10EF609F;
unsigned int SOUND_SURROUND_UP = 0x10EF00FF;
unsigned int SOUND_SURROUND_DOWN = 0x10EF20DF;
unsigned int SOUND_VOLUME_UP = 0x10EF58A7;
unsigned int SOUND_VOLUME_DOWN = 0x10EF708F;
unsigned int SOUND_MUTE = 0x10EF6897;
unsigned int TV_POWER = 0x1000C;
unsigned int TV_STOP = 0x10031;
unsigned int TV_PAUSE = 0x10030;
unsigned int TV_REVERSE = 0x1002B;
unsigned int TV_PLAY = 0x1002C;
unsigned int TV_FORWARD = 0x10028;
unsigned int TV_RED = 0x1006D;
unsigned int TV_GREEN = 0x1006E;
unsigned int TV_YELLOW = 0x1006F;
unsigned int TV_BLUE = 0x10070;
unsigned int TV_FIND = 0x100CC;
unsigned int TV_ADJUST = 0x10090;
unsigned int TV_HOME = 0x10054;
unsigned int TV_CH_PREV = 0x1004D;
unsigned int TV_CH_NEXT = 0x1004C;
unsigned int TV_UP = 0x10058;
unsigned int TV_LEFT = 0x1005A;
unsigned int TV_RIGHT = 0x1005B;
unsigned int TV_BOTTOM = 0x10059;
unsigned int TV_BOTTOM2 = 0x59;
unsigned int TV_OK = 0x1005C;
unsigned int TV_SOURCE = 0x10038;
unsigned int TV_VOLUME_DEC = 0x10011;
unsigned int TV_VOLUME_INC = 0x10010;
unsigned int TV_OPTIONS = 0x10040;
unsigned int TV_KEY1 = 0x10001;
unsigned int TV_KEY2 = 0x10002;
unsigned int TV_KEY3 = 0x10003;
unsigned int TV_KEY4 = 0x10004;
unsigned int TV_KEY5 = 0x10005;
unsigned int TV_KEY6 = 0x10006;
unsigned int TV_KEY7 = 0x10007;
unsigned int TV_KEY8 = 0x10008;
unsigned int TV_KEY9 = 0x10009;
unsigned int TV_KEY0 = 0x10000;
unsigned int TV_SUBTITLE = 0x1004b;
unsigned int TV_TEXT = 0x1003c;
unsigned int TV_SLEEP = 71;
unsigned int TV_HDMI = 825;
unsigned int TV_HDMI_SIDE = 891;
volatile long lastMotionDetected;
bool isOn;
IRsend irsend(D1);
int tvControl(String command){
if(command.equals("PS4")){
irsend.sendRC6(TV_HDMI, 20);
}else if(command.equals("HDMI_SIDE")){
irsend.sendRC6(TV_HDMI_SIDE, 20);
}else if(command.equals("POWER")){
irsend.sendRC6(TV_POWER, 20);
}else if(command.equals("HOME")){
irsend.sendRC6(TV_HOME, 20);
}else if(command.equals("CH_PREV")){
irsend.sendRC6(TV_CH_PREV, 20);
}else if(command.equals("CH_NEXT")){
irsend.sendRC6(TV_CH_NEXT, 20);
}else if(command.equals("UP")){
irsend.sendRC6(TV_UP, 20);
}else if(command.equals("LEFT")){
irsend.sendRC6(TV_LEFT, 20);
}else if(command.equals("RIGHT")){
irsend.sendRC6(TV_RIGHT, 20);
}else if(command.equals("BOTTOM")){
irsend.sendRC6(TV_BOTTOM, 20);
}else if(command.equals("OK")){
irsend.sendRC6(TV_OK, 20);
}else if(command.equals("SOURCE")){
irsend.sendRC6(TV_SOURCE, 20);
}else if(command.equals("VOLUME_DEC")){
irsend.sendRC6(TV_VOLUME_DEC, 20);
}else if(command.equals("VOLUME_INC")){
irsend.sendRC6(TV_VOLUME_INC, 20);
}
return 0;
}
int soundSystemControl(String command){
if(command.equals("POWER")){
irsend.sendNEC(SOUND_POWER, 32);
Serial.println("power");
}else if(command.equals("TEST")){
irsend.sendNEC(SOUND_TEST, 32);
Serial.println("test");
}else if(command.equals("DIRECT")){
irsend.sendNEC(SOUND_DIRECT, 32);
Serial.println("direct");
}else if(command.equals("OPTICAL")){
irsend.sendNEC(SOUND_OPTICAL, 32);
Serial.println("optical");
}else if(command.equals("COAX")){
irsend.sendNEC(SOUND_COAX, 32);
Serial.println("coax");
}else if(command.equals("EFFECT")){
irsend.sendNEC(SOUND_EFFECT, 32);
Serial.println("effect");
}else if(command.equals("SETUP")){
irsend.sendNEC(SOUND_SETUP, 32);
Serial.println("setup");
}else if(command.equals("CENTER_UP")){
irsend.sendNEC(SOUND_CENTER_UP, 32);
Serial.println("center up");
}else if(command.equals("CENTER_DOWN")){
irsend.sendNEC(SOUND_CENTER_DOWN, 32);
Serial.println("center down");
}else if(command.equals("SURROUND_UP")){
irsend.sendNEC(SOUND_SURROUND_UP, 32);
Serial.println("surr up");
}else if(command.equals("SURROUND_DOWN")){
irsend.sendNEC(SOUND_SURROUND_DOWN, 32);
Serial.println("surr down");
}else if(command.equals("VOLUME_UP")){
irsend.sendNEC(SOUND_VOLUME_UP, 32);
Serial.println("vol up");
}else if(command.equals("VOLUME_DOWN")){
irsend.sendNEC(SOUND_VOLUME_DOWN, 32);
Serial.println("vol down");
}else if(command.equals("MUTE")){
irsend.sendNEC(SOUND_MUTE, 32);
Serial.println("mute");
}else{
Serial.println("Unknown " + command);
irsend.sendNEC(SOUND_POWER, 32);
}
return 1;
}
void motionDetector(){
lastMotionDetected = millis();
}
void setup() {
Serial.begin(9600);
Spark.function("soundSystem", soundSystemControl);
Spark.function("tv", tvControl),
pinMode(D2, INPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
attachInterrupt(D2, motionDetector, CHANGE);
}
void loop() {
if(millis() - lastMotionDetected < 5000){
if(!isOn){
isOn = true;
digitalWrite(D3, HIGH);
}
}else{
if(isOn){
isOn = false;
digitalWrite(D3, LOW);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment