Comments (1)
Hello
I have defined the remote control frame and modified the 2 files Hitachi
`/*
Hitachi RAR-2P2 remote
*/
#ifndef HitachiHeatpumpIR_h
#define HitachiHeatpumpIR_h
#include "HeatpumpIR.h"
// Hitachi remote timing constants
#define HITACHI_AIRCON1_HDR_MARK 3376
#define HITACHI_AIRCON1_HDR_SPACE 1730
#define HITACHI_AIRCON1_BIT_MARK 378
#define HITACHI_AIRCON1_ONE_SPACE 1315
#define HITACHI_AIRCON1_ZERO_SPACE 450
// Hitachi codes
#define HITACHI_AIRCON1_MODE_AUTO 0x78 // Operating mode
#define HITACHI_AIRCON1_MODE_HEAT 0x69
#define HITACHI_AIRCON1_MODE_COOL 0x3C
#define HITACHI_AIRCON1_MODE_DRY 0x5A
#define HITACHI_AIRCON1_MODE_FAN 0x1E
#define HITACHI_AIRCON1_POWER_OFF 0xC3 // Power OFF
#define HITACHI_AIRCON1_POWER_ON 0xD2
#define HITACHI_AIRCON1_FAN_AUTO 0x5A // Fan speed
#define HITACHI_AIRCON1_FAN1 0x1E
#define HITACHI_AIRCON1_FAN2 0x3C
#define HITACHI_AIRCON1_FAN3 0x4B
#define HITACHI_AIRCON1_VDIR_AUTO 0x00
#define HITACHI_AIRCON1_VDIR_SWING 0x01
#define HITACHI_AIRCON1_HDIR_AUTO 0x00
#define HITACHI_AIRCON1_HDIR_SWING 0x01
class HitachiHeatpumpIR : public HeatpumpIR
{
public:
HitachiHeatpumpIR();
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVcmd, uint8_t swingHcmd);
private:
void sendHitachi(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, uint8_t swingV, uint8_t swingH);
};
#endif`
`#include "HitachiHeatpumpIR.h"
HitachiHeatpumpIR::HitachiHeatpumpIR() : HeatpumpIR()
{
static const char model[] PROGMEM = "hitachi";
static const char info[] PROGMEM = "{"mdl":"hitachi","dn":"Hitachi","mT":16,"xT":32,"fs":4}";
_model = model;
_info = info;
}
void HitachiHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVcmd, uint8_t swingHcmd)
{
// Sensible defaults for the heat pump mode
uint8_t operatingMode = HITACHI_AIRCON1_MODE_HEAT;
uint8_t fanSpeed = HITACHI_AIRCON1_FAN_AUTO;
uint8_t temperature = 19;
uint8_t powerMode;
uint8_t swingV = HITACHI_AIRCON1_VDIR_AUTO;
uint8_t swingH = HITACHI_AIRCON1_HDIR_AUTO;
if (powerModeCmd == POWER_OFF)
{
powerMode = HITACHI_AIRCON1_POWER_OFF;
}
else
{
powerMode = HITACHI_AIRCON1_POWER_ON;
}
switch (operatingModeCmd)
{
case MODE_AUTO:
operatingMode = HITACHI_AIRCON1_MODE_AUTO;
break;
case MODE_HEAT:
operatingMode = HITACHI_AIRCON1_MODE_HEAT;
break;
case MODE_COOL:
operatingMode = HITACHI_AIRCON1_MODE_COOL;
break;
case MODE_DRY:
operatingMode = HITACHI_AIRCON1_MODE_DRY;
fanSpeedCmd = FAN_1; //Only speed 1 in dry mode
break;
case MODE_FAN:
operatingMode = HITACHI_AIRCON1_MODE_FAN;
if (fanSpeedCmd == FAN_AUTO)
{
fanSpeedCmd = FAN_2; //No auto fan in fan mode
}
break;
}
switch (fanSpeedCmd)
{
case FAN_AUTO:
fanSpeed = HITACHI_AIRCON1_FAN_AUTO;
break;
case FAN_1:
fanSpeed = HITACHI_AIRCON1_FAN1;
break;
case FAN_2:
fanSpeed = HITACHI_AIRCON1_FAN2;
break;
case FAN_3:
fanSpeed = HITACHI_AIRCON1_FAN3;
break;
case FAN_4:
fanSpeed = HITACHI_AIRCON1_FAN3;
break;
case FAN_5:
fanSpeed = HITACHI_AIRCON1_FAN3;
break;
}
if ((temperatureCmd > 15 && temperatureCmd < 33))
{
temperature = temperatureCmd;
}
switch (swingV)
{
case HDIR_AUTO:
swingV = HITACHI_AIRCON1_VDIR_AUTO;
break;
case HDIR_SWING:
swingV = HITACHI_AIRCON1_VDIR_SWING;
break;
}
switch (swingH)
{
case HDIR_AUTO:
swingH = HITACHI_AIRCON1_HDIR_AUTO;
break;
case HDIR_SWING:
swingH = HITACHI_AIRCON1_HDIR_SWING;
break;
}
sendHitachi(IR, powerMode, operatingMode, fanSpeed, temperature, swingV, swingH);
}
// Send the Hitachi code
void HitachiHeatpumpIR::sendHitachi(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, uint8_t swingV, uint8_t swingH)
{
uint8_t temperaturebit1 = 0x40;
uint8_t temperaturebit2 = 0xBF;
uint8_t operatingModeFanbit1;
uint8_t operatingModeFanbit2;
uint8_t powerModebit1;
uint8_t powerModebit2;
uint8_t hitachiTemplate[33] = {
0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x13, 0xEC, 0x4C, 0xB3, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x01, 0x0E, 0x00, 0x00, 0xFF, 0x00, 0xFF };
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
for (int i = 16 ; i > temperature; i++){
temperaturebit1= temperaturebit1 + 0x04;
temperaturebit2= temperaturebit2 - 0x04;
}
hitachiTemplate[13] = temperaturebit1;
hitachiTemplate[14] = temperaturebit2;
operatingModeFanbit1= (fanSpeed & 0xF0) +((operatingMode & 0xF0)>>4);
operatingModeFanbit2= ((fanSpeed & 0x0F)<<4)+ (operatingMode & 0x0F);
hitachiTemplate[25] = operatingModeFanbit1;
hitachiTemplate[26] = operatingModeFanbit2;
powerModebit1 = (powerMode & 0xF0) + 0x01;
powerModebit2 = ((powerMode & 0x0F)<<4) + 0x0E;
hitachiTemplate[27] = powerModebit1;
hitachiTemplate[28] = powerModebit2;
// hitachiTemplate[14] |= swingV;
// hitachiTemplate[15] |= swingH;
//hitachiTemplate[25] = ecoMode;
//Checksum calculation
// int checksum = 1086;
// for (byte i = 0; i < 27; i++) {
// checksum -= hitachiTemplate[i];
// }
// hitachiTemplate[27] = checksum;
// 38 kHz PWM frequency
IR.setFrequency(38);
// Header
IR.mark(HITACHI_AIRCON1_HDR_MARK);
IR.space(HITACHI_AIRCON1_HDR_SPACE);
// Data
for (int i=0; i<33; i++) {
IR.sendIRbyte(hitachiTemplate[i], HITACHI_AIRCON1_BIT_MARK, HITACHI_AIRCON1_ZERO_SPACE, HITACHI_AIRCON1_ONE_SPACE);
}
IR.mark(HITACHI_AIRCON1_BIT_MARK);
IR.space(0);
}`
I tested with the simple program, it sends the correct code but it does not work on the console.
I also tested with a remote control led. Do you have any idea about this problem?
from arduino-heatpumpir.
Related Issues (20)
- New Release tag HOT 1
- Esphome IR Remote Climate
- Adding a new model of heat pump (already decoded)
- Mistubishi Heavy Duty SRKxxZS-W (Remote RLA502A704A) HOT 2
- Greeya wifi on/off
- Use the IRremoteESP8266 v2.8.4 to support ESP32-C3
- Need help getting the AC to detect message
- Panasonic E9-DKE ioniser
- AC Cooper & Hunter doesn't respond
- Gree YAG-remote suppport HOT 3
- IVT and Sharp may actually have the same "power on" nibble HOT 1
- Gree Y502 not working HOT 1
- Gree: turboMode/iFeelMode transposed
- Support for SRK25ZC-S
- Help with decoding and supporting Havells LLOYD GLS12I3FWAEV AC Units
- "I-Feel" support for "greeya" protocol HOT 34
- Add support for zephir ac unit (rmote: y-j1-01(E)) HOT 1
- Correct swing commands for Hitachi models HOT 2
- 海信的其它 遥控器型号怎么弄呀
- Min and Max Temperature coding error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arduino-heatpumpir.