Переключатель текста.

Тема в разделе "Arduino & Shields", создана пользователем dndv279, 24 янв 2016.

  1. dndv279

    dndv279 Нерд

    В книжке, прилагающейся к набору "Матрешка, "конспект хакера" есть такая интересная штука, как кнопочный переключатель. Её суть в том, что при нажатие на кнопку светодиод загорается, а при повторном нажатии он гаснет и т. д. И тут у меня созрел вопрос, а можно ли сделать почти такойже переключатель для lcd дисплея (16, 2). То есть когда мы жмем на кнопку у нас, на пример, появляется на экране "1", отпускаем кнопку, и 1 все также остается на экране, жмем на кнопку, появляется "2", отпускаем кнопку, остается 2, нажимаем на кнопку, появляется на экране "1", отпускаем кнопку, и 1 все также остается на экране ...
     
  2. lerik2703

    lerik2703 Гик

    а вы экран очищаете после отпускания кнопки?
     
  3. Sindbad

    Sindbad Гик

    Это и многое другое можно сделать написав соответствующий скетч. Тут простор фантазии неограничен, все что сможете придумать, можно записать на языке С++.
     
  4. dndv279

    dndv279 Нерд

    Написал, мож кому интересно будет)

    Код (C++):
    #include <RTC.h>
    #include <LiquidCrystal.h>
    #include "DHT.h"

    #define DHTPIN 2
    const int b1 = 3;
    boolean b1WU = false;
    #define DHTTYPE DHT22

    RTC    time;
    LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
    DHT dht(DHTPIN, DHTTYPE);


    void setup() {
        pinMode(b1, INPUT_PULLUP);
     
        delay(300);
        lcd.begin(16, 2);

        time.begin(RTC_DS1307);
        time.settime(30,46,23,24,01,16,0);  // 0  сек, 51 мин, 21 час, 27, октября, 2015 года, вторник

        dht.begin();
    }
    void loop(){
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    boolean bn = digitalRead(b1);
      if (!bn){
        delay(10);
        bn = digitalRead(b1);
        if(!bn){
          for(int i = 0; ; ++i){
         
            lcd.clear();
            lcd.print("Temp:");
            lcd.print(t);
            lcd.print("\x99");
            lcd.print("C");
            lcd.setCursor(0, 1);
            lcd.print("Humid:");
            lcd.print(h);
            lcd.print("%");
            delay(200);
                       
            if(!digitalRead(b1)){
              delay(10);
              if(!digitalRead(b1)){
             break;
            }      
           }
          }    
         }        
        }
       
        lcd.clear();
        lcd.print(time.gettime("d-m-Y, D"));
        lcd.setCursor(0, 1);
        lcd.print(time.gettime("H:i:s"));
        delay(500);
        lcd.setCursor(0, 0);
     
    }
     
  5. Sindbad

    Sindbad Гик

    А где тут вывод "1" и "2" ?
     
  6. dndv279

    dndv279 Нерд

    Это не суть, вместо нуля тут выводится время, а в месть единици температура и влажность.