Баскетбольная доска Arduino бесконечно передает забитый мяч
Я пытался получить этот проект Arduino. работает, но я столкнулся с некоторыми проблемами.
Проект был разработан для Arduino mega 2560, но я использовал для него свой UNO и макетную плату вместе с библиотекой Software Serial. Я очень, очень новичок в работе с ардуино, поэтому, если есть какие-то основные вещи, которые я могу упустить, пожалуйста, укажите их.
Компоненты:
- Ардуино УНО
- Модуль Bluetooth HC-05
- Датчик приближения E18-D80NK
- Датчик приближения Saeed Grove 420
- Резистор 10 кОм
- Макет
- Приложение, указанное в приведенной выше ссылке
Проблемы, с которыми я сталкиваюсь
a)Изначально датчик приближения определял, если я, например, провожу рукой перед ним, и отправлял данные в приложение, и он увеличивал счет и воспроизводил звук.
Однако, если бы я попытался щелкнуть датчик вибрации, не двигая рукой перед датчиком приближения, промах не был бы зафиксирован. Сначала даже простое прикосновение к датчику приближения также записывало счет, но позже он просто ничего не делал.
b) Не знаю, в чем проблема, но сейчас вообще ничего не происходит. Проводка и все остальное подключено так же, как и раньше, но теперь, хотя датчик приближения загорается, если я провожу рукой перед ним, никакие баллы не передаются модулем HC-05 или чем-то еще. Я пытался оставить последовательный монитор открытым, но на нем ничего не печатается.
Кроме того, код, который я вставил ниже, добавлен после включения заголовка библиотеки SerialSoftware и после удаления всего кода для настройки светодиодных индикаторов, который все еще доступен по ссылке выше. Проблема B начала возникать до того, как я это сделал, поэтому я не думаю, что это имеет к этому какое-то отношение. Просто не хотел включать светодиоды в свой проект.
Любая помощь будет очень признательна, спасибо!! Если есть какая-либо информация, которую я пропустил, сообщите мне.
Редактировать: Итак, провода RX и TX модуля были подключены не к тем разъемам. RXD модуля hc-05 теперь находится на контакте 11, а TXD на контакте 10. Данные передаются, но он просто бесконечно увеличивает количество снимков, даже если датчик приближения ничего не обнаруживает. :/ Какие-либо предложения?
Edit2: Хорошо, проблема решена. Я не установил правильную скорость передачи в части настройки Bluetooth. Должно быть 9600.
#include <SoftwareSerial.h>
SoftwareSerial Serial1(10, 11); // прием, передача
//------------------------------------------------ ----------------------------//
// Имя файла: Scoreboard.ino //
// Описание: Smart Basketball Scoreboard //
// Версия: 1.1.0 //
// Автор: Марсело Авила де Оливейра <[email protected]> //
//------------------------------------------------ ----------------------------//
//------------------------------------------------ ----------------------------//
// ОПРЕДЕЛЕНИЯ //
//------------------------------------------------ ----------------------------//
// ВКЛЮЧАЕМ РЕЖИМ ОТЛАДКИ
// # определить ОТЛАДКУ
// # определить DEBUG_PROX
// # определить DEBUG_VIBR
//------------------------------------------------ ----------------------------//
// КОНСТАНТЫ //
//------------------------------------------------ ----------------------------//
// пины
const int prox_pin = 2;
const int vibr_pin = 3;
// ВРЕМЯ
const unsigned long wait_interval = 3000;
//------------------------------------------------ ----------------------------//
// ПЕРЕМЕННЫЕ //
//------------------------------------------------ ----------------------------//
// ВРЕМЯ
unsigned long wait_time;
// ПОЛОЖЕНИЕ ДЕЛ
boolean prox = false;
boolean vibr = false;
boolean wait = false;
//------------------------------------------------ ----------------------------//
// ФУНКЦИИ (НАСТРОЙКИ) //
//------------------------------------------------ ----------------------------//
void setup() {
// ЗАПУСК выводов
pinMode(prox_pin, INPUT);
pinMode(vibr_pin, INPUT);
// НАЧАТЬ ПОСЛЕДОВАТЕЛЬНУЮ СВЯЗЬ
Serial.begin(9600);
// НАЧАЛО СВЯЗИ ПО BLUETOOTH
setup_bluetooth();
#ifdef DEBUG
Serial.println("Board is alive");
Serial.println();
#endif
}
void setup_bluetooth() {
#ifdef DEBUG
Serial.println("Setting Bluetooth");
Serial.println();
#endif
Serial1.begin(38400); // Установить скорость передачи данных
Serial1.print("\r\n+STWMOD=0\r\n"); // Настраиваем на работу в ведомом режиме
Serial1.print("\r\n+STNA=Arduino\r\n"); // Имя набора
Serial1.print("\r\n+STOAUT=1\r\n"); // Разрешить парному устройству подключаться ко мне
Serial1.print("\r\n+STAUTO=0\r\n"); // Здесь должно быть запрещено автоподключение
delay(2000); // Эта задержка обязательна.
Serial1.print("\r\n+INQ=1\r\n"); // Делаем ведомого запрашиваемым
delay(2000); // Эта задержка обязательна.
while (Serial1.available()) { // Очистить данные
delay(50);
Serial1.read();
}
}
//------------------------------------------------ ----------------------------//
// ФУНКЦИИ (ПРОВЕРКА) //
//------------------------------------------------ ----------------------------//
void check_prox() {
if (!prox) {
if(digitalRead(prox_pin) == LOW) {
#ifdef DEBUG_PROX
Serial.println("Proximity detected");
Serial.println();
#endif
prox = true;
if (!vibr) {
wait = true;
wait_time = millis() + wait_interval;
}
set_shot(1);
}
}
}
void check_vibr() {
if (!prox && !vibr) {
if(digitalRead(vibr_pin) == HIGH) {
#ifdef DEBUG_PROX
Serial.println("Vibration detected");
Serial.println();
#endif
vibr = true;
wait = true;
wait_time = millis() + wait_interval;
}
}
}
void check_wait() {
if (wait && millis() > wait_time) {
if (!prox) {
set_shot(0);
}
reset();
}
}
//------------------------------------------------ ----------------------------//
// ФУНКЦИИ (ИС) //
//------------------------------------------------ ----------------------------//
void set_shot(int mode) {
// РЕЖИМ:
// 0 = НЕПРАВИЛЬНЫЙ ВЫСТРЕЛ (ПРОМАХ)
// 1 = ПРАВЫЙ ВЫСТРЕЛ (СЧЕТ)
Serial1.print(mode);
delay(1000);
}
void reset() {
vibr = false;
prox = false;
wait = false;
}
//------------------------------------------------ ----------------------------//
// ОСНОВНОЙ //
//------------------------------------------------ ----------------------------//
void loop() {
check_prox();
check_vibr();
check_wait();
}
@r1zer, 👍-1
1 ответ
Хорошо, проблема решена. Я не установил правильную скорость передачи в части настройки Bluetooth. Должно быть 9600.
- Как заставить Arduino печатать на Arduino IDE моего Mac через Bluetooth?
- Невозможно управлять цифровыми контактами с помощью команд, отправленных через модуль HC-05.
- AT-команда не отвечает на последовательный монитор
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не регистрируется в сети
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Как читать и записывать на устройство rs232 с/на Arduino