Created
December 5, 2014 09:24
-
-
Save mstrengis/b304e4bc8f0f7dbe3806 to your computer and use it in GitHub Desktop.
SPARK
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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