Как добавить кнопку переключения текста и подсветки ЖК-дисплея?

Я настроил 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 секунд.
}

, 👍2

Обсуждение

И с какой частью этого «я хочу» у вас проблемы, если таковые имеются?, @Majenko

Подключаем тактильную кнопку к ЖК-дисплею с помощью Arduino UNO :(, @Ciasto piekarz

Ну, нет. Вы подключаете кнопку к Arduino. Тогда ваше программное обеспечение должно решить, что с ним делать., @Majenko

ну, это та часть, которую мне интересно, как это сделать, @Ciasto piekarz

Какая часть? Подключить кнопку или изменить программу?, @Majenko

оба, подключение кнопки или изменение программы, @Ciasto piekarz

Чтобы подключить кнопку, вам понадобятся два провода — один к входу и один к земле. Мы не можем помочь вам изменить вашу программу, поскольку у нас нет вашей программы, чтобы знать, что нужно изменить. Знаете, мы не экстрасенсы (ну, большинство из нас таковыми не являются)., @Majenko

@Majko также добавил код программного обеспечения., @Ciasto piekarz


1 ответ


2

Вам необходимо подключить кнопку(и) к доступным цифровым входам Arduino. Я предлагаю вам использовать более одной кнопки на основе вашего описания в вопросе.

В следующем руководстве описывается необходимая схема и связанный с ней код для чтения этого ввода. Все, что вам нужно сделать, это продублировать его еще несколькими кнопками на отдельных (доступных) цифровых входах.

Учебное пособие по кнопкам Arduino

Подключение кнопок

,