Когда контакты TX и RX для Bluetooth подключены, LCD-экран не обновляется. Почему так?
Я подключил экран Bluetooth и ЖК-экран к Arduino Uno. У меня есть две активные кнопки нижнего уровня для увеличения или уменьшения переменной desiredTemp
. Это значение предназначено для отображения на ЖК-экране и на моем смартфоне через последовательное соединение Bluetooth.
Это работает так, как задумано для моего смартфона, однако, когда мои контакты передачи и приема подключены к плате, ЖК-экран зависает до тех пор, пока контакты не будут удалены. Кроме того, я не могу обновить переменную desiredTemp
через последовательное соединение Bluetooth.
Прикреплен мой код:
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal LCD(10,9,3,2,1,0);
double inIRPin = A0;
double inThermPin = A1;
int LED = 4;
char recvChar;
int increaseTemp = 7;
int decreaseTemp = 6;
int increaseTempState = 0;
int decreaseTempState = 0;
#define RxD 13
#define TxD 12
SoftwareSerial BTSerial(RxD,TxD);
double valIR = 0;
double valTherm = 0;
double val = 0;
double temp = 0;
double const tempRatio = 0.125;
double desiredTemp = 40; //Градусов Цельсия
void setup() {
// поместите сюда свой код установки для однократного запуска:
pinMode(increaseTemp,INPUT);
pinMode(decreaseTemp,INPUT);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
pinMode(LED, OUTPUT);
setupBlueToothConnection();
pinMode(inIRPin, INPUT);
pinMode(inThermPin, INPUT);
LCD.begin(16,2);
LCD.setCursor(0,0);
}
void loop() {
// поместите сюда свой основной код для многократного запуска:
valIR = analogRead(inIRPin); //Выход ИК-датчика
valTherm = analogRead(inThermPin);
increaseTempState = digitalRead(increaseTemp);
decreaseTempState = digitalRead(decreaseTemp);
if(increaseTempState == LOW){
desiredTemp++;
}
if(decreaseTempState == LOW){
desiredTemp--;
}
if(BTSerial.available()){
recvChar = BTSerial.read();
Serial.print(recvChar);
BTSerial.println(desiredTemp);
if(increaseTempState == LOW){
desiredTemp++;
updateLCD();
}
if(decreaseTempState == LOW){
desiredTemp--;
updateLCD();
}
if(recvChar == '1'){
BTSerial.println("Increasing Temp");
desiredTemp++;
}
if(recvChar == '0'){
BTSerial.println("Decreasing Temp");
desiredTemp--;
}
}
updateLCD();
}
void setupBlueToothConnection()
{
BTSerial.begin(9600);
BTSerial.print("AT");
delay(400);
BTSerial.print("AT+DEFAULT"); // Восстанавливаем все значения настроек
factory setup
delay(2000);
BTSerial.print("AT+NAMESmartCoaster"); // устанавливаем имя Bluetooth
delay(400);
BTSerial.print("AT+PIN0000"); // устанавливаем код пары для подключения
delay(400);
BTSerial.print("AT+AUTH1"); //
delay(400);
BTSerial.flush();
}
void updateLCD(){
LCD.setCursor(0,0);
LCD.print("Current Temp:");
LCD.println(temp);
LCD.setCursor(0,1);
LCD.print("Desired Temp:");
LCD.println(desiredTemp);
delay(100);
}
@Neil, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы подключили ЖК-модуль к последовательным аппаратным контактам 0 (RX) и 1 (TX).
Когда вы получаете данные от модуля Bluetooth через программный последовательный порт, вы отправляете их на аппаратный последовательный порт.
if(BTSerial.available()){
recvChar = BTSerial.read();
Serial.print(recvChar);
...
Это портит связь с ЖК-модулем. Удалите Serial.print(recvChar);
и это должно заработать.
Более разумным решением было бы использовать аппаратный последовательный порт для модуля Bluetooth, а остальные контакты — для модуля ЖК-дисплея.
Программный последовательный порт следует использовать только в том случае, если вы действительно не можете использовать аппаратный последовательный порт, например, вам нужен аппаратный последовательный порт для связи с другим устройством (ПК или каким-либо другим модулем).
- Arduino Pro Micro, получить данные с контакта Tx?
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Bluetooth-модуль HC-05 не принимает AT-команды
- как отправить данные в Adafruit Bluefruit Feather (32u4) через Bluetooth?
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Как прервать соединение HM10 Bluetooth?
- Arduino Nano 33 IOT — классический Bluetooth (последовательный)
- Плохо отформатированные символы с использованием Bluetooth-модуля JDY-30
Итак, вы подключили ЖК-дисплей к контактам RX и TX и задаетесь вопросом, почему ЖК-дисплей выходит из строя, когда последовательный порт что-то отправляет?, @gre_gor
Нет, ЖК-экран использует контакты 10,9,3,2,1,0. Rx использует контакт 13, а Tx использует контакт 12., @Neil
Serial.print(recvChar);
отправляет данные на контакты 0 и 1., @gre_gorМне нужна помощь с последовательной связью Arduino. Не могли бы вы сказать мне одну вещь: если я хочу подключить два последовательных канала связи с контактами 2, 3 Arduino Uno и обычным аппаратным последовательным соединением 0, 1, и два устройства - одно из них Bluetooth, а другое - одно. это GPS, поэтому у меня вопрос, возникнут ли какие-либо проблемы во время приема и передачи данных по Bluetooth? И следующий вопрос: какую последовательную связь мы можем использовать для проектов такого типа?, @BUBAI NAYAK