#if defined(__AVR__)
#include <SoftwareSerial.h>
#define SERIAL_TX 2
#define SERIAL_RX 3
SoftwareSerial Serial3(SERIAL_RX, SERIAL_TX); // RX, TX
#define
_MODEL_
"arduino"
#endif
#if defined(__STM32F1__)
#define
_MODEL_
"stm32f103"
#endif
void irSend(char * buf,int len) {
for(int i=0;i<len;i++) {
Serial3.write(buf[i]);
}
}
uint8_t bitConv(uint8_t val) {
uint8_t mask = 1;
uint8_t rval = 0;
uint8_t bits[] = {0x8, 0x4, 0x2, 0x1};
for(int i=0;i<4;i++) {
if (val & mask) rval = rval +
bits[i];
mask=mask << 1;
}
return rval;
}
uint8_t irConv(uint8_t val) {
// Serial.print("val=0x");
// Serial.print(val,HEX);
uint8_t high = (val >> 4) & 0x0f;
uint8_t low = val & 0x0f;
// Serial.print(" high=0x");
// Serial.print(high,HEX);
// Serial.print(" low=0x");
// Serial.print(low,HEX);
uint8_t rval1 = bitConv(high);
uint8_t rval2 = bitConv(low);
// Serial.print(" rval1=0x");
// Serial.print(rval1,HEX);
// Serial.print(" rval2=0x");
// Serial.print(rval2,HEX);
// Serial.println();
return (rval2 << 4) + rval1;
}
void setup() {
delay(1000);
Serial.begin(9600);
Serial3.begin(9600);
unsigned char buf[5];
buf[0] = 0xA1;
buf[1] = 0xF1;
// buf[2] = 0x12;
// buf[3] = 0x34;
// buf[4] = 0x56;
// irSend(buf,5);
buf[2] = irConv(0x21);
Serial.println(buf[2],HEX);
buf[3] = irConv(0x07);
Serial.println(buf[3],HEX);
buf[4] = irConv(0x04);
Serial.println(buf[4],HEX);
irSend(buf,5);
}
void loop() {
uint8_t incomingByte = 0; // for
incoming serial data
// send data only when you receive data:
if (Serial3.available() > 0) {
// read the incoming byte:
incomingByte = Serial3.read();
// say what you got:
Serial.print("I received: ");
Serial.print(incomingByte, HEX);
uint8_t convertByte =
irConv(incomingByte);
Serial.print("(");
Serial.print(convertByte, HEX);
Serial.print(")");
Serial.println();
}
}
|