#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB0 // Receiver on Pin 0
#define TRF_DATA_SIZE 2 // Command size 2 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
#define TX_VCC_PIN PB4 // Контакт приемника
#define LED_1_PIN PB3 // Pin definitions for 1 LED
#include "tinyrf.h"
#include <util/delay.h>
// LED pins control macro
#define init_led_pins() DDRB |= (1 << LED_1_PIN)
#define set_led_pin(pin, state) state ? PORTB |= (1 << pin) : PORTB &= ~(1 << pin)
int main(void)
{
// Initialize timer and ports
trf_init();
init_led_pins();
while (1)
{
// If a new command is available
if (trf_has_received_data()) {
// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);
// Check data integrity (second byte must have inverted value of the first)
if (data_buffer[0] == (uint8_t)(~data_buffer[1])) {
switch (data_buffer[0]) {
case 11:
set_led_pin(LED_1_PIN, 1); // Turn on LED1
_delay_ms (2500);
set_led_pin(LED_1_PIN, 0); // Turn off LED1
}
}
// Reset state to listen for new messages
trf_reset_received();
}
}
}
================
const int ledPin = PB4; // переменная с номером пина светодиода
const long ledInterval = 200; // интервал мигания светодиодом, мсек.
int ledState = LOW; // начальное состояние светодиода
unsigned long previousMillis = 0; // храним время предыдущего срабатывания светодиода
void setup() {
pinMode(ledPin, OUTPUT); // задаём пин PB4 как выход.
}
void loop() {
// Мигание светодиодом:
// время с момента включения Arduino, мсек:
unsigned long currentMillis = millis();
// Если время мигать пришло,
if (currentMillis - previousMillis >= ledInterval) {
previousMillis = currentMillis; // то запоминаем текущее время
if (ledState == LOW) { // и инвертируем состояние светодиода
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState); // переключаем состояние светодиода
}
}


