Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Breeze (Whirlpool Codes) A/C Control via serial connection w/ Arduino
- // By Alex Shubovich - ALEXSHU.COM
- #include <IRremote.h>
- int incomingByte = 0;
- IRsend irsend;
- //unsigned int baseCode[344] = {9000, 4240, 760, 1460, 760, 1460, 760, 360, 740, 380, 720, 400, 700, 420, 700, 420, 680, 1560, 660, 460, 660, 1560, 660, 1560, 640, 480, 620, 500, 620, 500, 640, 480, 620, 500, 620, 500, 600, 520, 600, 520, 600, 520, 580, 1640, 580, 540, 580, 1640, 580, 540, 600, 1620, 620, 1600, 580, 560, 540, 580, 520, 1680, 580, 1660, 560, 1640, 580, 580, 520, 600, 520, 600, 520, 600, 540, 560, 540, 580, 560, 560, 520, 600, 540, 580, 520, 600, 540, 580, 560, 560, 540, 580, 540, 580, 540, 580, 540, 580, 520, 600, 520, 7840, 580, 1640, 540, 1680, 580, 560, 540, 580, 520, 1680, 580, 560, 500, 620, 500, 1700, 540, 1680, 540, 1700, 540, 580, 500, 620, 520, 600, 520, 1700, 540, 580, 520, 600, 520, 600, 520, 600, 520, 600, 500, 620, 500, 620, 520, 600, 520, 600, 520, 600, 500, 620, 500, 620, 520, 600, 540, 580, 500, 620, 500, 600, 540, 580, 540, 580, 540, 580, 540, 580, 520, 600, 520, 600, 540, 580, 520, 600, 520, 600, 520, 600, 540, 580, 540, 580, 520, 600, 540, 580, 520, 600, 540, 580, 520, 580, 540, 600, 540, 580, 500, 620, 520, 600, 520, 600, 500, 620, 520, 580, 560, 560, 540, 580, 540, 1700, 540, 1660, 560, 580, 500, 620, 520, 1680, 540, 600, 520, 580, 540, 1680, 540, 7840, 560, 560, 540, 580, 540, 580, 520, 600, 540, 580, 540, 580, 520, 600, 540, 580, 520, 600, 540, 1680, 540, 580, 540, 580, 520, 600, 520, 600, 520, 600, 500, 620, 540, 580, 540, 580, 500, 620, 520, 600, 500, 620, 520, 600, 500, 620, 520, 600, 520, 600, 540, 560, 520, 600, 540, 580, 540, 580, 520, 600, 520, 600, 520, 600, 540, 580, 500, 620, 540, 580, 540, 580, 540, 580, 540, 580, 520, 600, 540, 580, 520, 600, 520, 600, 520, 600, 540, 580, 520, 600, 520, 600, 560, 560, 520, 600, 520, 600, 520, 1680, 560, 580, 520, 600, 520, 600, 520, 580, 540, 580, 520, 600, 540, };
- int irHigh = 1650;
- int irLow = 600;
- // A/C Settings
- int temperature = 18;
- int mode = 0; // 0-Cool | 1-Heat | 2-Fan | 3-Humid
- int fanspeed=0; //0-Auto | 1-Low | 2-Medium | 3-High
- //A/C Toggles
- boolean power = false;
- boolean swing = false;
- boolean dimmer = false;
- //irsend.sendRaw(baseCode,344,38);
- void airConSettingsIRSend(){
- unsigned int newCode[230] = {3,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3};
- //Temperatue
- switch (temperature){
- case 18:
- // do nothing
- break;
- case 19:
- newCode[59] = 1;
- break;
- case 20:
- newCode[61] = 1;
- break;
- case 21:
- newCode[59] = 1;
- newCode[61] = 1;
- break;
- case 22:
- newCode[63] = 1;
- break;
- case 23:
- newCode[59] = 1;
- newCode[63] = 1;
- break;
- case 24:
- newCode[61] = 1;
- newCode[63] = 1;
- break;
- case 25:
- newCode[59] = 1;
- newCode[61] = 1;
- newCode[63] = 1;
- break;
- case 26:
- newCode[65] = 1;
- break;
- case 27:
- newCode[59] = 1;
- newCode[65] = 1;
- break;
- case 28:
- newCode[61] = 1;
- newCode[65] = 1;
- break;
- case 29:
- newCode[59] = 1;
- newCode[61] = 1;
- newCode[65] = 1;
- break;
- case 30:
- newCode[63] = 1;
- newCode[65] = 1;
- break;
- case 31:
- newCode[59] = 1;
- newCode[63] = 1;
- newCode[65] = 1;
- break;
- case 32:
- newCode[61] = 1;
- newCode[63] = 1;
- newCode[65] = 1;
- break;
- }
- // END temperature
- // Modes
- switch (mode){
- case 0: //Cool
- newCode[53] = 1;
- break;
- case 1: // Heat
- // do nothing
- break;
- case 2: //Fan
- newCode[55] = 1;
- break;
- case 3: //Humid
- newCode[51] = 1;
- newCode[53] = 1;
- break;
- }
- //END modes
- // Fans Speeds
- switch (fanspeed){
- case 0: //Auto
- //do nothing
- break;
- case 1: //LOW
- newCode[35] = 1;
- newCode[37] = 1;
- break;
- case 2: //MED
- newCode[37] = 1;
- break;
- case 3: //HIGH
- newCode[35] = 1;
- break;
- } //End Fan speeds
- // Toggles
- //power
- if(power == true){
- newCode[39] = 1;
- power = false;
- }
- //swing
- if(swing == true){
- newCode[49] = 1;
- swing = false;
- }
- //dimmer
- if(dimmer == true){
- newCode[111] = 1;
- dimmer = false;
- }
- //Checksum
- for(int i=0;i<16;i++){
- int sum = 0;
- for(int j=0;j<11;j++){
- int pos = 35+16*j+i;
- if(pos >= 99){
- pos = pos+2;
- }
- sum = sum + newCode[pos];
- // Serial.print(pos);
- // Serial.print(" ");
- }
- if(sum%2!=0){
- newCode[213+i] = 1;
- }
- }
- // Serial.println("");
- // debug print code
- /*for(int i=0;i<230;i++){
- Serial.print(newCode[i]);
- Serial.print(",");
- }
- Serial.println("");
- */
- //generate insert microseconds
- for(int i=0;i<230;i++){
- switch (newCode[i]){
- case 0:
- newCode[i] = irLow;
- break;
- case 1:
- newCode[i] = irHigh;
- break;
- case 2:
- newCode[i] = 4400;
- break;
- case 3:
- newCode[i] = 8000;
- break;
- }
- }
- //Send Code
- irsend.sendRaw(newCode,230,38);
- }
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Commands: +/- Temperature | m - Mode | f- fanspeed | p - Power | s - Swing | d - dimmer");
- }
- void loop() {
- if (Serial.available() > 0) {
- Serial.write(27); // ESC command
- Serial.print("[2J");
- // read the incoming byte:
- incomingByte = Serial.read();
- // say what you got:
- Serial.print("Command: ");
- if(incomingByte == 43){
- Serial.print("Temperature +");
- if(temperature +1 <=32){
- temperature++;
- }
- }
- if(incomingByte == 45){
- Serial.print("Temperature -");
- if(temperature -1 >=18){
- temperature--;
- }
- }
- if(incomingByte == 109){ //mode
- Serial.print("Mode");
- if(mode+1 <=3){
- mode++;
- }else {
- mode=0;
- }
- }
- if(incomingByte == 102){ //fan
- Serial.print("Fan");
- if(fanspeed+1 <=3){
- fanspeed++;
- }else {
- fanspeed=0;
- }
- }
- if(incomingByte == 112){ //power
- Serial.print("Power");
- power = true;
- }
- if(incomingByte == 115){ //swing
- Serial.print("Swing");
- swing = true;
- }
- if(incomingByte == 100){ //dimmer
- Serial.print("Dimmer");
- dimmer = true;
- }
- Serial.println("");
- Serial.println("A/C Control");
- Serial.print("Temperature: ");
- Serial.println(temperature);
- Serial.print("Mode: ");
- switch (mode) {
- case 0:
- Serial.println("Cool");
- break;
- case 1:
- Serial.println("Heat");
- break;
- case 2:
- Serial.println("Fan");
- break;
- case 3:
- Serial.println("Humid");
- break;
- }
- Serial.print("Fan Speed: ");
- switch (fanspeed) {
- case 0:
- Serial.println("Auto");
- break;
- case 1:
- Serial.println("Low");
- break;
- case 2:
- Serial.println("Medium");
- break;
- case 3:
- Serial.println("High");
- break;
- }
- Serial.println("");
- Serial.println("Commands: +/- Temperature | m - Mode | f- fanspeed | p - Power | s - Swing | d - dimmer nnn");
- airConSettingsIRSend();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement