#include <SoftwareSerial.h> // Yazılımsal seri port kütüphanesini dahil et
#define BUTTON1_PIN PB0
#define BUTTON2_PIN PB1
#define BUTTON3_PIN PB2
#define BUTTON4_PIN PB3
#define BUTTON5_PIN PB4
// Yazılımsal seri portu tanımla: (RX, TX)
SoftwareSerial mySerial(PB0, PB1); // (RX, TX) - ATtiny85'te PB0 RX, PB1 TX
// Kısa formatlar için sabit diziler (PROGMEM)
const char button1_short[] PROGMEM = "Protocol=NEC2 Address=0x0 Command=0x68 Repeat gap=16700us Raw-Data=0x9768FF00 32 bits LSB first";
const char button2_short[] PROGMEM = "Protocol=NEC Address=0x0 Command=0x38 Raw-Data=0xC738FF00 32 bits LSB first";
const char button3_short[] PROGMEM = "Protocol=NEC Address=0x0 Command=0x18 Raw-Data=0xE718FF00 32 bits LSB first";
const char button4_short[] PROGMEM = "Protocol=NEC Address=0x0 Command=0x10 Raw-Data=0xEF10FF00 32 bits LSB first";
const char button5_short[] PROGMEM = "Protocol=UNKNOWN Hash=0xAA71885F 57 bits (incl. gap and start) received";
void setup() {
// Buton pinlerini giriş olarak ayarlıyoruz
DDRB &= ~((1 << BUTTON1_PIN) | (1 << BUTTON2_PIN) | (1 << BUTTON3_PIN) | (1 << BUTTON4_PIN) | (1 << BUTTON5_PIN));
// Dahili pull-up dirençlerini aktif et
PORTB |= (1 << BUTTON1_PIN) | (1 << BUTTON2_PIN) | (1 << BUTTON3_PIN) | (1 << BUTTON4_PIN) | (1 << BUTTON5_PIN);
// Seri portu başlat
mySerial.begin(9600); // Baud hızını 9600 olarak ayarlıyoruz
delay(500); // Seri port başlatıldığında stabilizasyon için kısa bir bekleme
}
uint8_t readButton(uint8_t buttonPin) {
if (PINB & (1 << buttonPin)) {
return 0; // Butona basılmadı
} else {
return 1; // Butona basıldı
}
}
// PROGMEM'deki veriyi okuyarak yazdırma
void sendButtonData(uint8_t button) {
uint32_t rawData;
const char* shortFormat;
switch(button) {
case 1:
rawData = 0x9768FF00;
shortFormat = button1_short;
break;
case 2:
rawData = 0xC738FF00;
shortFormat = button2_short;
break;
case 3:
rawData = 0xE718FF00;
shortFormat = button3_short;
break;
case 4:
rawData = 0xEF10FF00;
shortFormat = button4_short;
break;
case 5:
rawData = 0xAA71885F;
shortFormat = button5_short;
break;
default:
rawData = 0;
shortFormat = "Unknown button";
}
// Ham veri ve kısa formatı seri monitöre yazdır
mySerial.print("Ham Veri: ");
mySerial.println(rawData, HEX);
mySerial.print("Kısa Format: ");
// PROGMEM'den veriyi okuyun
char buffer[128];
strcpy_P(buffer, shortFormat);
mySerial.println(buffer);
}
void loop() {
// Her butonu sırayla kontrol et
if (readButton(BUTTON1_PIN)) {
sendButtonData(1); // Buton 1'e basıldı
delay(200); // Debouncing ve okuma aralığı
}
if (readButton(BUTTON2_PIN)) {
sendButtonData(2); // Buton 2'ye basıldı
delay(200);
}
if (readButton(BUTTON3_PIN)) {
sendButtonData(3); // Buton 3'e basıldı
delay(200);
}
if (readButton(BUTTON4_PIN)) {
sendButtonData(4); // Buton 4'e basıldı
delay(200);
}
if (readButton(BUTTON5_PIN)) {
sendButtonData(5); // Buton 5'e basıldı
delay(200);
}
delay(50); // Genel debouncing gecikmesi
}