Проект радио кнопок для викторины

Доброе время суток. стараюсь повторить проект дистанционных кнопок для викторины : GitHub - don41382/arduino-nrf24l01-buzzer: Wireless Game Show Buzzer System with Arduino Nano and NRF24l01
Arduino: Wireless Game Show Buzzer with sound - YouTube
всеб ничего и когда мастер получает любые данные то входит в цикл и начинает писать в сериал следующее :
Receive data …

Data received! 1, 1

Receive data …

Data received! 1, 1

Receive data …

Data received! 1, 1
До бесконечности

в чем может быть подвох? уже код несколько раз просматривал и ошибок не нахожу, помогите пожалуйста

Ошибки в строках 46 и 72

мда, смешно

Конечно смешно. Почему бы не спросить у автора проекта?

Так и нам смешно! Кода мы не видели (ну, не лезть же за ним хер знает куда, если Вам лень его выложить), схему тоже не видели, остаётся только смехуёчками отделываться.

Да, смешно. Мне вот интересно понимаешь ли ты, что что бы тебе помочь мне надо лезть на сторонние ресурсы и что то там изучать. Тебе лень запостить текст программы. Это по крайней мере не уважение к людям, к которым ты пришёл просить помощи. Как ты думаешь после этого возникнет желание тебе помочь?

Подвох может быть в том, что может ошибок-то и нет? Может этот чудо-девайс именно так и должен себя вести?

1 лайк

Код такой:

#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”
#include “printf.h”
#include “…/…/NF24-BK/NF24BK.h”
#include <Wire.h>

RF24 radio(9, 10);

#define CLEAR_BTN_PIN 5

byte buzzerIds[] = {1,2}; // list all your existing buzzers client ids (see buzzerId in NF24-BK-BUZZER.ino)

void setup() {
Serial.begin(57600);

printf_begin();
printf(“*** MASTER ***\n\r”);

initRadio(radio);
setPipes(radio, pipes[1], pipes[0]);
radio.startListening();

pinMode(CLEAR_BTN_PIN, INPUT_PULLUP);

Wire.begin();
}

long lastPress = 0;
long currentBuzzer = 0;

void loop(void) {
if (isClearButtonPressed() && millis() - lastPress > 1000) {
Serial.print("Clear Button Pressed: ");
Serial.println(isClearButtonPressed());

currentBuzzer = 0;

radio.stopListening();
int i;
for (i = 0; i < sizeof(buzzerIds); i++) {
  bk_msg.device = buzzerIds[i];
  bk_msg.cmd = BK_LIGHT_OFF;
  radio.write(&bk_msg, sizeof(bk_msg));
}
radio.startListening();

lastPress = millis();

}

if (radio.available()) {
printf(“Receive data …\n\r”);
radio.read(&bk_msg, sizeof(bk_msg));

printf("Data received! %2d, %2d\n\r", bk_msg.device, bk_msg.cmd);

if (currentBuzzer == 0) {
  boolean send = false;
  radio.stopListening();
  delay(150);

  switch (bk_msg.cmd) {
    case BK_BTN_PRESSED:
      printf("try to send it ...\n\r");

      currentBuzzer = bk_msg.device;
      bk_msg.cmd = BK_LIGHT_ON;

      send = radio.write(&bk_msg, sizeof(bk_msg));
      sendSound(currentBuzzer);
      break;
  }

  if (send) {
    printf("Send CMD!\n\r");
  } else {
    printf("Send CMD failed!\n\r");
  }
  setPipes(radio, pipes[1], pipes[0]);
  radio.startListening();
}

}
delay(50);
}

boolean isClearButtonPressed() {
return digitalRead(CLEAR_BTN_PIN) == LOW;
}

boolean sendCmd(byte pipeNo, byte sw, byte cmd) {
bk_msg.device = sw;
bk_msg.cmd = BK_BTN_PRESSED;
radio.writeAckPayload(pipeNo, &bk_msg, sizeof(bk_msg));
return true;
//radio.write(&bk_msg, sizeof(bk_msg));
}

void sendSound(int team) {
Wire.beginTransmission(9);
Wire.write(team);
Wire.endTransmission();
Serial.println(“Send Sound CMD”);
}

Снимок экрана в 2023-03-05 17-05-33

Тест на IQ снова провален. Про вставку кода написано прям там, где ты его вставлял.

Теперь тебе придется очень постараться, чтобы убедить нас в том, что ты не тролль и не дурак.

2 лайка