Skocz do zawartości

Program mierzący temperaturę i wilgotność gleby


autozaglada

Pomocna odpowiedź

Po co Ci tam ta pętla for, przyciskami po prostu zwiększasz bądź zmniejszasz indeks czytany z tablicy alfabet. 

Z wyświetlaniem tego po kolei na lcd musisz bardziej pokombinować ;). 

Dalej nie wiem po co i do czego chcesz "ręcznie" wpisywać wyrazy... 

Link do komentarza
Share on other sites

(edytowany)

Bardziej czytelnie będzie, jeśli na wyświetlaczu pozostaną już wybrane litery, a Ty będziesz "dokładał" kolejne przyciskami(enkoderem łatwiej i szybciej) po prawej, aż do ułożenia kompletnego wyrazu... 

Edytowano przez SOYER
  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Program który jest w temacie jest tylko do nauki (chociaż wszystko jest spójne i testowane w praktyce aby miało "ręce i nogi") dlatego cały czas coś do niego dokładam stąd pomysł ręcznego wprowadzania tekstu. 

PS. 1 poprawiłem mills by działał poprawnie co 2s

2.przerobilem odczyt z ds18.. Aby nie blokował programu na 750 ms 

3 dodałem alarmy i informacje na diodach ws2812(do małych poprawek) 

 

Jutro zacznę pisać program mam tylko ostatnie pytanie jak zdefiniować "dom" żeby potem wstawić "okno" tak aby program to przyjął? 

Edytowano przez autozaglada
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Udało mi się stworzyć program wpisujący tekst za pomocą przycisków. Mam tylko jeden problem nie potrafię wykasować "jakas nazwa" przed wpisywaniem nowego.

#include <LiquidCrystal.h>      //biblioteka wyświetlacza

#define ustaw 9    //pin 9 jako tryb ustawien
#define plus 7    //pin 7 jako dodaj
#define minus 8   //pin 8 jako odejmij
#define nast A1   //pin A1 jako nastepny
#define sek A2    //pin A2 jako nastepne ustawienia
int ustawienia = 0; //ustawienia jako int po wlaczeniu zasilania wylaczone
int alarm ;   //alarm jako int
int sekcja = 0;   //pierwsze ustaawienia
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);    //piny wyświetlacza

int litera = 0 ;
int pozycja = 0;
int zmianatekstu = 0;
char *wyraz = "jakas nazwa";
char alfabet[] = "abcdefghijklmnoprstuwyz ";



void setup() {
  Serial.begin(9600);   //otwieram UART
  lcd.begin(16, 2);    //definiuje rodzaj wyswietlacza
  pinMode(A0, INPUT); //czujnik wilgotnosci gleby
  pinMode(ustaw, INPUT_PULLUP); //pin ustaw podciagniety do zasilania
  pinMode(plus, INPUT_PULLUP);    //pin plus podciagniety do zasilania
  pinMode(minus, INPUT_PULLUP);   //pin minus podciagniety do zasilania
  pinMode(nast, INPUT_PULLUP);
  pinMode(sek, INPUT_PULLUP);



}

void loop() {

  lcd.setCursor(0, 0);
  lcd.print("     nazwa     ");
  lcd.setCursor(0, 1);

  lcd.print(wyraz);


  if (digitalRead(sek) == LOW) {
    delay(20);
    lcd.setCursor(0, 1);
    lcd.print("                ");
    
    zmianatekstu = 1;

    while (digitalRead(sek) == LOW)
      delay(20);
  }

  while (zmianatekstu == 1) {

    lcd.setCursor(0, 0);
    lcd.print("zmien nazwe");
    lcd.setCursor(pozycja, 1);
    lcd.print(alfabet[litera]);

while(digitalRead(nast) == HIGH && digitalRead(sek) == HIGH && digitalRead(ustaw) == HIGH && digitalRead(minus) == HIGH && digitalRead(plus) == HIGH){
  lcd.cursor();
  }
  
    if (digitalRead(nast) == LOW) {
      delay(20);

      pozycja++ ;
     
      if (pozycja == 16) {
        pozycja = 0;
      }
       wyraz[pozycja] =  alfabet[litera];
      while (digitalRead(nast) == LOW)
        delay(20);
    }
    if (digitalRead(minus) == LOW) {
      delay(20);
      
      litera--;
      if (litera < 0)
      {
        litera = 23;
      }
       wyraz[pozycja] =  alfabet[litera];
      while (digitalRead(minus) == LOW)
        delay(20);
    }

    if (digitalRead(plus) == LOW) {
      delay(20);
       
      litera++ ;

      if (litera > 23) {
        litera = 0;
      }
       wyraz[pozycja] =  alfabet[litera];
      while (digitalRead(plus) == LOW)
        delay(20);
    }

    if (digitalRead(sek) == LOW) {
      delay(20);
       lcd.setCursor(0, 1);
      lcd.print("                ");
      zmianatekstu = 0 ;
      pozycja = 0;
      wyraz[pozycja] =  alfabet[litera];
      lcd.noCursor();
      while (digitalRead(sek) == LOW)
        delay(20);
    }

  }

}

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.