Когда кнопка нажата, это мешает TFT-экрану
Я пытаюсь создать простое устройство для контроля частоты сердечных сокращений. Компоненты следующие:
- A TFT 2,8"; ЖК-экран для отображения актуальной информации для пользователя.
- 3 кнопки для взаимодействия пользователя с устройством.
- датчик PPG для регистрации сердцебиения пользователя.
- Ардуино Уно.
- Макет для подключения компонентов.
Настройка устройства выглядит следующим образом:
который подключается следующим образом:
Я не включил TFT-экран здесь в чертеж схемы, потому что я использую Tinkercad, а у них его нет в компонентах. Экран имеет следующие порты:
Я использую следующий код:
// библиотеки датчиков сердцебиения
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
// библиотеки TFT-экранов
#include <TFT.h> // ЖК-библиотека Arduino
// Переменные датчика сердцебиения
const int PulseWire = 0; // PulseSensor БЕЛЫЙ ПРОВОД, подключенный к АНАЛОГОВОМУ ВЫВОДУ 0
int Threshold = 550; // Определяем, какой сигнал "считать долей";
PulseSensorPlayground pulseSensor; // Создает экземпляр PulseSensorPlayground
// переменные экрана TFT
#define cs 10
#define dc 9
#define rst 8
TFT TFTscreen = TFT(cs, dc, rst);
// Переменные кнопки
const int buttonUp = 2;
const int buttonDown = 3;
const int buttonOk = 4;
#define DELAY 1.0/64.0
void setup() {
Serial.begin(9600); // Для последовательного монитора
pulseSensor.analogInput(PulseWire);
pulseSensor.setThreshold(Threshold);
pulseSensor.begin(); // Запуск датчика сердцебиения
TFTscreen.begin(); // Запустить TFT-экран
drawScreen(); // Рисуем содержимое экрана
// Кнопки
pinMode(buttonUp, INPUT);
pinMode(buttonDown, INPUT);
pinMode(buttonOk, INPUT);
}
bool buttonUpPrev = false;
bool buttonDownPrev = false;
bool buttonOkPrev = false;
void loop(){
if(buttonUpPrev == HIGH && digitalRead(buttonUp) == LOW){
Serial.println("button up");
}
if(buttonDownPrev == HIGH && digitalRead(buttonDown) == LOW){
Serial.println("button down");
}
if(buttonOkPrev == HIGH && digitalRead(buttonOk) == LOW){
Serial.println("button ok");
}
buttonUpPrev = digitalRead(buttonUp);
buttonDownPrev = digitalRead(buttonDown);
buttonOkPrev = digitalRead(buttonOk);
//Serial.println(pulseSensor.getLatestSample());
delay(DELAY);
}
Моя проблема в том, что когда я нажимаю одну из кнопок, экран TFT мерцает, как будто на экран попадает меньшее напряжение. Кроме того, иногда я вижу "кнопка нажата" в последовательном мониторе, когда ничего не нажимается. В целом устройство работает, но не ошибся ли я.
Мой вопрос: есть ли проблема с кабелем этого устройства? Я изучал информатику и знаю только основы электроники. Спасибо!
@Arnau, 👍1
Обсуждение0
- Проблема с сигналом датчика пульса
- Объединение 2 датчиков в один код с 1 кнопкой
- Проблемы с кнопками
- Меню не меняется при нажатии кнопки TFT 128 x 128
- Как преобразовать мгновенную кнопку в сенсорный датчик TTP223?
- Бот не активируется после нажатия кнопки
- Rasberry Pi, управляющий Arduino - считывает "призрачный" вход - не завершает логический цикл
- Может ли Arduino Uno работать со всеми этими компонентами?
попробуйте использовать внутренние подтягивающие резисторы ... удалите внешние подтягивающие резисторы и подключите переключатели между контактами данных и землей, @jsotola
Также вместо «delay (1.0/64.0)» используйте «delayMicroSeconds (15)»., @hcheung