Недавно попросили сделать радиокнопки для брейнринга, хоть я не очень в ардуино ( разве что светодиодом помигать)))) попробовал сделать сие чудо.
Вьішло примерно вот так: Видео на тикток
ТЗ бьіло такое: когда игрок нажимает свою кнопку первьім, у него загораетсья диод на кнопке, а у остальньіх при нажимании уже не будет загоратся диод некоторое время. Также чтобьі у ведущего бьіл пульт с кнопкой для начала раунда (чтоб фальшстарна небьіло)
Подключал модуль радио по стандартной схеме:
Кнопку управления подключал к 3-му пину.
4-ий пин бьіл как вьіход на светодиод
Код пульта управления:
Код для одной из кнопок:
корпус печатался на 3д принтере, кнопи бьіли без фиксации. За код не ругайте, я не очень в програмировании
Вьішло примерно вот так: Видео на тикток
ТЗ бьіло такое: когда игрок нажимает свою кнопку первьім, у него загораетсья диод на кнопке, а у остальньіх при нажимании уже не будет загоратся диод некоторое время. Также чтобьі у ведущего бьіл пульт с кнопкой для начала раунда (чтоб фальшстарна небьіло)
Подключал модуль радио по стандартной схеме:
Кнопку управления подключал к 3-му пину.
4-ий пин бьіл как вьіход на светодиод
Код пульта управления:
C++:
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const uint64_t address = 0x32345678ABCDDEF0;
int dataToSend1 = 101;
int dataToSend2 = 202;
int dataToSend3 = 303;
int dataToSend4 = 404;
int dataToSend5 = 505;
int dataToSend6 = 606;
int receivedData;
void setup() {
pinMode(3, INPUT_PULLUP);
radio.begin();
radio.setChannel(10);
radio.setDataRate(RF24_2MBPS);
radio.setPALevel(RF24_PA_MAX);
radio.openReadingPipe(0, address);
radio.startListening();
Serial.begin(57600);
}
void loop() {
if (digitalRead(3) == HIGH) {
radio.startListening();
if (radio.available()) {
radio.read(&receivedData, sizeof(receivedData));
Serial.println(receivedData);
if (receivedData == 1) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend1, sizeof(dataToSend1));
radio.write(&dataToSend1, sizeof(dataToSend1));
radio.write(&dataToSend1, sizeof(dataToSend1));
radio.write(&dataToSend1, sizeof(dataToSend1));
Serial.println(dataToSend1);
delay (3000);
radio.startListening();
}
if (receivedData == 2) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend2, sizeof(dataToSend2));
radio.write(&dataToSend2, sizeof(dataToSend2));
radio.write(&dataToSend2, sizeof(dataToSend2));
radio.write(&dataToSend2, sizeof(dataToSend2));
Serial.println(dataToSend2);
delay (5000);
radio.startListening();
}
if (receivedData == 3) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend3, sizeof(dataToSend3));
radio.write(&dataToSend3, sizeof(dataToSend3));
radio.write(&dataToSend3, sizeof(dataToSend3));
radio.write(&dataToSend3, sizeof(dataToSend3));
Serial.println(dataToSend3);
delay (3000);
radio.startListening();
}
if (receivedData == 4) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend4, sizeof(dataToSend4));
radio.write(&dataToSend4, sizeof(dataToSend4));
radio.write(&dataToSend4, sizeof(dataToSend4));
radio.write(&dataToSend4, sizeof(dataToSend4));
Serial.println(dataToSend4);
delay (3000);
radio.startListening();
}
if (receivedData == 5) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend5, sizeof(dataToSend5));
radio.write(&dataToSend5, sizeof(dataToSend5));
radio.write(&dataToSend5, sizeof(dataToSend5));
radio.write(&dataToSend5, sizeof(dataToSend5));
Serial.println(dataToSend5);
delay (3000);
radio.startListening();
}
if (receivedData == 6) {
radio.stopListening();
radio.openWritingPipe(address);
delay (1000);
radio.write(&dataToSend6, sizeof(dataToSend6));
radio.write(&dataToSend6, sizeof(dataToSend6));
radio.write(&dataToSend6, sizeof(dataToSend6));
radio.write(&dataToSend6, sizeof(dataToSend6));
Serial.println(dataToSend6);
delay (3000);
radio.startListening();
}
}
}
else {
radio.stopListening();
radio.openWritingPipe(address);
radio.write(&receivedData, sizeof(receivedData));
}
}
C++:
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const uint64_t address = 0x32345678ABCDDEF0;
int transmitterNumber = 1;
int dataToSend;
void setup() {
radio.begin();
radio.setChannel(10);
radio.setDataRate(RF24_2MBPS);
radio.setPALevel(RF24_PA_MAX);
//radio.openWritingPipe(address);
radio.openReadingPipe(0, address);
radio.startListening();
pinMode(3, INPUT_PULLUP);
pinMode (4, OUTPUT);
Serial.begin(57600);
}
void loop() {
if (radio.available()) {
radio.read(&dataToSend, sizeof(dataToSend));
Serial.println("resived data");
Serial.println(dataToSend);
if (dataToSend == 101) {
Serial.println("led 0n");
digitalWrite (4, HIGH);
delay (1500);
Serial.println("led off");
digitalWrite (4, LOW);
}}
if (digitalRead(3) == HIGH) {
Serial.println("bottom is pressed");
radio.stopListening();
radio.openWritingPipe(address);
radio.write(&transmitterNumber, sizeof(transmitterNumber));
radio.startListening();
radio.openReadingPipe(0, address);
Serial.println("send data to master");
}}
Вложения
-
3.5 KB Просмотры: 4
-
1.1 KB Просмотры: 2