// Sender
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//Stm32
//#include <Arduino.h>
#include <IRremote.h>
//Arduino Uno
#define IR_SEND_PIN 3 // กำหนดขาที่ต่อ LED IR ส่ง (แนะนำ D3)
//Stm32f103
//#define IR_SEND_PIN PA0
void setup() {
Serial.begin(9600);
IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Type a message and press Enter:");
}
void loop() {
if (Serial.available()) {
String message = Serial.readStringUntil('\n');
message.trim();
Serial.print("Sending: ");
Serial.println(message);
for (int i = 0; i < message.length(); i++) {
char c = message[i];
// ส่ง ASCII ตรงๆ ด้วย Raw NEC (32 บิต)
IrSender.sendNECRaw((uint32_t)c, 32);
delay(50);
}
// ส่ง newline ปิดท้าย
IrSender.sendNECRaw((uint32_t)'\n', 32);
delay(50);
}
}
// Receiver
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//Stm32
#include <Arduino.h>
#include <IRremote.h>
//Arduino Uno
#define IR_SEND_PIN 3 // กำหนดขาที่ต่อ LED IR ส่ง (แนะนำ D3)
//Stm32f103
//#define IR_RECEIVE_PIN PA0
String buffer = "";
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Ready to receive...");
}
void loop() {
if (IrReceiver.decode()) {
uint32_t value = IrReceiver.decodedIRData.decodedRawData; // อ่านค่า 32 บิตดิบ
char c = (char)(value & 0xFF); // ใช้แค่ 8 บิตล่าง (ASCII)
if (c == '\n') {
Serial.print("Received line: ");
Serial.println(buffer);
buffer = "";
} else {
buffer += c;
}
IrReceiver.resume();
}
}