Skocz do zawartości

Kurs Arduino - #7 - Wyświetlacz tekstowy, LCD 2x16


Pomocna odpowiedź

@Robpuc witam na forum i dziękuję za miłe słowa, cieszę się, że kursy są pomocne i życzę udanych eksperymentów z elektroniką w praktyce 🚀

  • 3 miesiące później...
(edytowany)

Czy sterowanie jasnością podświetlania można by zrobić całkiem analogowo, tak jak sterowanie kontrastem wyświetlacza? To znaczy wyjście z potencjometru podpiąć bezpośrednio pod pin 15 wyświetlacza (Vpod). Czy takie rozwiązanie byłoby mniej szkodliwe dla płytki? Czy dobrze rozumiem, że prąd pobierany z pinu 5V nie przechodzi przez mikrokontroler?

 

Edytowano przez LukaszWiktor
  • 2 miesiące później...
  • 1 miesiąc później...

Moje dzieła 😛

Zadanie 7.1:
image.thumb.png.91945104ff3669050cb8187b3662441c.png

 

Zadanie 7.4

#include<LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

#define STARTBUTTON 8
#define STOPBUTTON 9

int recordTime = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.clear();

  pinMode(STARTBUTTON, INPUT_PULLUP);
  pinMode(STOPBUTTON, INPUT_PULLUP);
}

void loop() {
  if(digitalRead(STARTBUTTON) == LOW){
    lcd.clear();
    recordTime = 0;
    while(digitalRead(STOPBUTTON) == HIGH){
      recordTime = recordTime + 1;
      lcd.setCursor(0, 0);
      lcd.print(recordTime);
      delay(1000);
    }
  }else if(digitalRead(STOPBUTTON) == LOW){
    lcd.clear();
    Serial.println(recordTime);
    lcd.setCursor(0, 0);
    lcd.print("KONIEC");
    lcd.setCursor(0, 1);
    lcd.print(String(recordTime) + " sekund");
    delay(1000);
  };
  
  delay(50);
}

 

  • Lubię! 1
#include <LiquidCrystal.h> //Library adding 
LiquidCrystal lcd(2,3,4,5,6,7); //Info that new display is connected 
int sec = 0; //beginning second value
boolean Start = false; //beginning bool status

void setup() {
  lcd.begin(16,2); //Type declaration
  lcd.setCursor(0,0); //Cursor set
  lcd.print("Stopwatch"); //Text display
  lcd.setCursor(0,1); //Cursor set
  lcd.print("Second: "); //Text display
  lcd.print(sec); //value display
  pinMode(12, INPUT_PULLUP); //Start switch
  pinMode(13, INPUT_PULLUP); //Stop switch
}

void loop() {
  if(digitalRead(12) == LOW) { //if start switch press
    Start = true; //assignment bool status as true
    while(Start == true) { //if bool status is true
      delay(1000); //time of counting
      sec = sec + 1; //second counting
      lcd.setCursor(0,0); //Cursor set
      lcd.setCursor(0,1); //Cursor set
      lcd.print("Second: "); //Text display
      lcd.print(sec); //value display
      if(digitalRead(13) == LOW) { //if stop switch press
        Start = false; //assignment bool status as false
        while(Start == false) { //if bool status is false
          lcd.setCursor(10,0); //Cursor set
          lcd.print("Stop"); //Text display
          lcd.setCursor(0,1); //Cursor set
          lcd.print("Second: "); //Text display
          lcd.print(sec); //value display
        }
      }
    }
  } 
}

Zadanie 7.4

lcd.setCursor(0,0); //Cursor set
  lcd.print("Stopwatch"); //Text display
  lcd.setCursor(0,1); //Cursor set
  lcd.print("00"); //beginning minute value display
  lcd.setCursor(2,1); //Cursor set
  lcd.print(":"); //colon display
  lcd.setCursor(3,1); //Cursor set
  lcd.print("00"); //beginning second value display
  lcd.setCursor(5,1); //Cursor set
  lcd.print("."); //dot display
  lcd.setCursor(6,1); //Cursor set
  lcd.print("00"); //beginning milisecond value display
  pinMode(12, INPUT_PULLUP); //Start switch
  pinMode(13, INPUT_PULLUP); //Stop switch
}

void loop() {
  if(digitalRead(12) == LOW) { //if start switch press
    Start = true; //assignment bool status as true 
    while(Start == true) { //if bool status is start
      delay(7); //time of milisecond counting
      mili = mili + 1; //milisecond counting
      if(mili < 10) { //if milisecond value is less than 10
        lcd.setCursor(7,1);//Cursor set
        lcd.print(mili); //milisecond value display
        lcd.setCursor(6,1); //Cursor set
        lcd.print("0"); //milisecond value display
      } else if(mili < 100) { //if milisecond value is less than 100
        lcd.setCursor(6,1); //Cursor set
        lcd.print(mili); //milisecond value display
        }
        if(mili == 100) { //if milisecond value is equal 100
          mili = 0; //assignment milisecond value on 0
          sec = sec + 1; //second counting
        }
        if(sec < 10) { //if second value is less than 10
          lcd.setCursor(4,1); //Cursor set
          lcd.print(sec); //second value display
          lcd.setCursor(3,1); //Cursor set
          lcd.print("0"); //second value display
        } else { //if second value is greater than 9
          lcd.setCursor(3,1); //Cursor set
          lcd.print(sec); //second value display
        }
        if(min == 0) { //if minute value is equal 0
          lcd.setCursor(0,1); //Cursor set
          lcd.print("00"); //minute value display
        }
        if(sec == 60) { //if second value is equal 60
          sec = 0; //assignment second value on 0
          min = min + 1; //minute counting
          if(min < 10) { //if minute value is less than 10
            lcd.setCursor(1,1); //Cursor set
            lcd.print(min); //minute value display
            lcd.setCursor(0,1); //Cursor set
            lcd.print("0"); //minute value display
          } else { //if minute value is greater than 9
            lcd.setCursor(0,1); //Cursor set
            lcd.print(min); //minute value display
          }
        }
      if(digitalRead(13) == LOW) { //if stop switch press
        Start = false; //assignment bool status as true 
        while(Start == false) { //if bool status is not start
          lcd.setCursor(10,0); //Cursor set
          lcd.print("Stop"); //Text display
          if(digitalRead(13) == LOW && digitalRead(12) == LOW) { //reset function
            delay(3000);
            resetFunc();
          }
        }
      }
    }
  }
}

Trochę ulepszone

  • 3 tygodnie później...

Cześć,

Podlaczylem do UNO wyswietlacz z czterema wejsciami, sciagnalem biblioteke, zainstalowalem ,ale przy kompilacji wciaz wyswietla mi sie bląd jak w załączonym obrazku

Probowalem tez instalowac inne biblioteki typu I2C i zmieniac nazwe w programie, ale efekt jest wciaz taki sam

Prośba o poradę co robię nie tak

pozdrawiam

blad.jpg

Ok popytam tam

Podpiąłem ta bibliotekę w treści programu zgodnie z kursem Forbot i poszło dalej ale tym razem przy kompilacji wywaliło polecenie POSITIVE, choć jest zgodnie z kodem

 

20240415_105940.jpg

(edytowany)
24 minuty temu, sebura napisał:

Podpiąłem ta bibliotekę

Którą bibliotekę? Na pewno masz właściwą (bo one się mnożyły jak króliki)?

 

 

Edytowano przez ethanak
  • 3 miesiące później...

hej wie ktoś jak tworzyć własne znaki albo litery typu "ś,ć,ó" tak poza tym fajnie jest cofnąć się o 3 lata i przypomnieć sobie jak spaliło się diodę od podświetlenia za pomocą baterii 9v °∧°

  • 2 tygodnie później...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...