Скетч передатчика
#include <iarduino_RF433_Transmitter.h> // Подключаем библиотеку
iarduino_RF433_Transmitter radio(12); // Создаём объект radio для работы с библиотекой iarduino_RF433 + номер пина
int data[4]; // Создаём массив для передачи данных
void setup(){
Serial.begin(9600);
radio.begin(); // Инициируем работу передатчика FS1000A
radio.setDataRate (i433_3KBPS); // Указываем скорость передачи данных
radio.openWritingPipe (5); // Открываем 5 трубу для передачи данных
pinMode(2,INPUT); // конфигурация пинов
pinMode(3,INPUT);
pinMode(7,INPUT);
pinMode(A0,INPUT);
}
void loop(){
data[0] = analogRead(A0); // считываем показания скользящего потенциометра с вывода A0 и записываем их в 0 элемент массива data
data[1] = digitalRead(2); // считываем показания кнопки с вывода D2 и записываем их в 1 элемент массива data (реверс 1)
data[2] = digitalRead(3); // считываем показания кнопки с вывода D3 и записываем их в 2 элемент массива data (реверс 2)
data[3] = digitalRead(7); // считываем показания кнопки с вывода D7 и записываем их в 3 элемент массива data (сигнал)
Serial.print(data[0]); //связь платформы Arduino с компьютером, посредством пользовательского интерфейса.
Serial.print(" ");
Serial.print(data[1]);
Serial.print(" ");
Serial.print(data[2]);
Serial.print(" ");
Serial.print(data[3]);
Serial.println();
radio.write(&data, sizeof(data)); // отправляем данные из массива data указывая сколько байт массива мы хотим отправить
delay(10); // пауза между пакетами
}
Скетч приёмника
#include <iarduino_RF433_Receiver.h> // Подключаем библиотеку для работы с приёмником
iarduino_RF433_Receiver radio(2); // Создаём объект radio для работы с
библиотекой iarduino_RF433, указывая номер вывода к которому
подключён приёмник (можно подключать только к выводам использующим внешние прерывания)
int data[4]; // Создаём массив для приёма данных
void setup(){
radio.begin(); // Инициируем работу приёмника MX-RM-5V (в качестве параметра можно указать скорость
ЧИСЛО бит/сек, тогда можно не вызывать функцию setDataRate)
Serial.begin(9600);
radio.setDataRate (i433_3KBPS); // Указываем скорость приёма данных (i433_5KBPS, i433_4KBPS, i433_3KBPS,
i433_2KBPS, i433_1KBPS, i433_500BPS, i433_100BPS), i433_1KBPS - 1кбит/сек
radio.openReadingPipe (5); // Открываем 5 трубу для приема данных (если вызвать функцию без параметра,то будут открыты все трубы сразу, от 0 до 7)
radio.startListening (); // Включаем приемник,начинаем прослушивать открытую трубу
pinMode(2,INPUT);
pinMode(9,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop(){
if(radio.available()){ // Если в буфере имеются принятые данные
radio.read(&data, sizeof(data)); // Читаем данные в массив data и указываем сколько байт читать
}
Serial.print(data[0]);
Serial.print(" ");
Serial.print(data[1]);
Serial.print(" ");
Serial.print(data[2]);
Serial.print(" ");
Serial.print(data[3]);
Serial.println();
if (data[1] == HIGH)
{
analogWrite(3,data[0]); // ШИМ-сигнал
digitalWrite(4,HIGH); // прожектор 1
digitalWrite(10,HIGH); // настройка направления оборотов
digitalWrite(11,LOW);
digitalWrite(9,LOW);
digitalWrite(5,HIGH);
} else{
digitalWrite(4,LOW); // прожектор 1
digitalWrite(10,LOW); // настройка направления оборотов
digitalWrite(11,LOW);
digitalWrite(9, LOW);
digitalWrite(5,LOW); }
if (data[2]==HIGH)
{
analogWrite(3,data[0]); // ШИМ-сигнал
digitalWrite(6,HIGH); // прожектор 2
digitalWrite(10,LOW); // настройка направления оборотов
digitalWrite(11,HIGH);
digitalWrite(9,HIGH);
digitalWrite(5,LOW);
} else{
digitalWrite(6,LOW); // прожектор 2
digitalWrite(10,LOW); // настройка направления оборотов
digitalWrite(11,LOW);
digitalWrite(9,LOW);
digitalWrite(5,LOW);
}
if ((data[1]==LOW)and(data[2]==LOW))
{
analogWrite(3,data[0]); // ШИМ-сигнал
digitalWrite(6,LOW); // прожектор 2
digitalWrite(4,LOW); // прожектор 1
digitalWrite(10,LOW); // настройка направления оборотов
digitalWrite(11,LOW);
digitalWrite(9,LOW);
digitalWrite(5,LOW);
}
if ((data[1]==HIGH)and(data[2]==HIGH))
{
analogWrite(3,data[0]); // ШИМ-сигнал
digitalWrite(6,LOW); // прожектор 2
digitalWrite(4,LOW); // прожектор 1
digitalWrite(10,LOW); // настройка направления оборотов
digitalWrite(11,LOW);
digitalWrite(9,LOW);
digitalWrite(5,LOW);
}
if (data[3]==1)
{
tone(12,755); // включение пьезодинамика и задание частоты 755 Гц
}
else { noTone(12); }
}