Как добавить кнопку переключения текста и подсветки ЖК-дисплея?
Я настроил BMP180 и DHT11 для отображения данных на ЖК-дисплее HD44780 20x4.
Я хочу иметь возможность переключать высоту с метров на футы, температуру с Цельсия на Фаренгейт и давление с абсолютного на давление на уровне моря с помощью тактильной кнопки.
Вот код программного обеспечения, который у меня есть:
// подключаем код библиотеки:
#include <LiquidCrystal.h>
// инициализируем библиотеку номерами контактов интерфейса
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include <SFE_BMP180.h>
#include<dht.h>
dht DHT;
#define DHT11_PIN 8 // Второй контакт, третий контакт оставляем неподключенным, четвертый — земля
#include <SFE_BMP180.h>
#include <Wire.h>
// Вам нужно будет создать объект SFE_BMP180, здесь называемый «давление»:
SFE_BMP180 pressure;
#define ALTITUDE 237.0 // Высота Филлаура в Пенджабе, Индия. в метрах
void setup() {
lcd.begin(20, 4);
lcd.setCursor(0, 0); // Нулевая строка
lcd.print("hello, world!");
lcd.clear();
int chk = DHT.read11(DHT11_PIN);
// Инициализируем датчик (важно получить значения калибровки, сохраненные на устройстве).
if (pressure.begin()) {
lcd.print("BMP180 init Success");
delay(300);
} else {
lcd.print("BMP180 init fail");
while (1); // Пауза навсегда.
}
}
void loop() {
char status;
double T, P, p0, a;
lcd.clear();
lcd.setCursor(0,0);
//TODO Отображение в футах, а также с помощью переключателя
lcd.print("Altitude: ");
lcd.print(ALTITUDE, 0);
lcd.print(" mtrs ");
status = pressure.startTemperature();
if (status != 0) {
// Дождитесь завершения измерения:
delay(status);
status = pressure.getTemperature(T);
if (status != 0) {
// Распечатываем измерение:
Serial.print("temperature in deg C, From BMP180: ");
lcd.setCursor(0, 1);
lcd.print("Tmpratre: ");
lcd.print(T, 2);
lcd.print("'C");
lcd.setCursor(0, 2);
lcd.print("Humidity: ");
lcd.print(DHT.humidity, 1);
lcd.print("%");
status = pressure.startPressure(3);
if (status != 0) {
// Дождитесь завершения измерения:
delay(status);
status = pressure.getPressure(P, T);
if (status != 0) {
lcd.setCursor(0,3);
// Распечатываем измерение:
lcd.print("Pressure: ");
lcd.print(P * 0.0295333727, 2);
lcd.print(" mb");
p0 = pressure.sealevel(P, ALTITUDE);
// мы на высоте 234 метра (Филлаур, Pb)
// TODO: переключить уровень моря на абсолютное давление
Serial.print("relative (sea-level) pressure: ");
Serial.print(p0, 2);
Serial.print(" mb, ");
Serial.print(p0 * 0.0295333727, 2);
Serial.println(" inHg");
a = pressure.altitude(P, p0);
Serial.print("computed altitude: ");
Serial.print(a, 0);
Serial.print(" meters, ");
Serial.print(a * 3.28084, 0);
Serial.println(" feet");
} else Serial.println("error retrieving pressure measurement\n");
} else Serial.println("error starting pressure measurement\n");
} else Serial.println("error retrieving temperature measurement\n");
} else Serial.println("error starting temperature measurement\n");
delay(5000); // Пауза на 5 секунд.
}
@Ciasto piekarz, 👍2
Обсуждение1 ответ
▲ 2
Вам необходимо подключить кнопку(и) к доступным цифровым входам Arduino. Я предлагаю вам использовать более одной кнопки на основе вашего описания в вопросе.
В следующем руководстве описывается необходимая схема и связанный с ней код для чтения этого ввода. Все, что вам нужно сделать, это продублировать его еще несколькими кнопками на отдельных (доступных) цифровых входах.
Учебное пособие по кнопкам Arduino
,
@sa_leinad
Смотрите также:
- Печать string and integer LCD
- Отправка значения с одного Arduino на другой
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Запрограммируйте Arduino Uno как цифровые часы
- ЖК-дисплей странные символы
- 16*2 1602A LCD дисплей не отображает никаких символов или контрастности, несмотря на правильное подключение
- Считыватель таймкода SMPTE с ЖК-дисплеем, вопрос кодирования
И с какой частью этого «я хочу» у вас проблемы, если таковые имеются?, @Majenko
Подключаем тактильную кнопку к ЖК-дисплею с помощью Arduino UNO :(, @Ciasto piekarz
Ну, нет. Вы подключаете кнопку к Arduino. Тогда ваше программное обеспечение должно решить, что с ним делать., @Majenko
ну, это та часть, которую мне интересно, как это сделать, @Ciasto piekarz
Какая часть? Подключить кнопку или изменить программу?, @Majenko
оба, подключение кнопки или изменение программы, @Ciasto piekarz
Чтобы подключить кнопку, вам понадобятся два провода — один к входу и один к земле. Мы не можем помочь вам изменить вашу программу, поскольку у нас нет вашей программы, чтобы знать, что нужно изменить. Знаете, мы не экстрасенсы (ну, большинство из нас таковыми не являются)., @Majenko
@Majko также добавил код программного обеспечения., @Ciasto piekarz