Arduino Polska Forum

Pełna wersja: Zmienne
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
Mam pewien problem. Odczytuję godzinę z modułu ds1302 w uproszczonym formacie ( godzina. minuta  np: 13.25)

int czas = rtc.getTimeStr();

Chciałbym ze zmiennej "int czas" wyciągnąć tylko godzinę bez minut ( 13 ) i zapisać do zmiennej int tylkogodzina.


Jak prosto to zrobić. 
Pozdrawiam Piotr
Coś źle piszesz 12.25 to nie moze być "int"
(10-01-2020, 15:34)Jarewa0606 napisał(a): [ -> ]Coś źle piszesz 12.25 to nie moze być "int"
Wiem int przechowuje tylko liczby, więc jak z rtc.getTimeStr(); zapisać do zmiennej tylko godzinę bez minut?
zależy co rtc.getTimeStr(); zwraca...
(10-01-2020, 16:01)Jarewa0606 napisał(a): [ -> ]zależy co rtc.getTimeStr(); zwraca...

rtc.getTimeStr(); zwraca godzinę w formacie np: 13:25 a ja potrzebuję mieć w zmiennej tylko dwie pierwsze cyfry czyli 13
Kolega raczej pójdzie się uczyć o zmiennych i jak się nauczy to zada prawidłowe pytanie..
(10-01-2020, 16:16)Jarewa0606 napisał(a): [ -> ]Kolega raczej pójdzie się uczyć o zmiennych i jak się nauczy to zada prawidłowe pytanie..

Możesz mi pomóc i napisać jak brzmi prawidłowe pytanie, bo jak na razie nic od Ciebie się nie nauczyłem, a o tym, że należy się uczyć to wiem bo żyję na tym świecie prawi 50 lat.
czy nie widzisz róznicy miedzy;

"13.25"
"13:25"
a może
"1325"??

Powiedz jak ci pomóc jak nie wiemy co zwraca rtc.getTimeStr(); a to co teraz pisałem trzeba użyć trzy metody wiec
(10-01-2020, 16:42)Jarewa0606 napisał(a): [ -> ]czy nie widzisz róznicy miedzy;

"13.25"
"13:25"
a może
"1325"??

Powiedz jak ci pomóc jak nie wiemy co zwraca  rtc.getTimeStr(); a to co teraz pisałem trzeba użyć  trzy metody  wiec

Tak oczywiście, że widzę różnicę i poprawiłem to w poście powyżej, napisałem 13:25, gdyż wychwyciłem swój błąd. lcd.print(rtc.getTimeStr(FORMAT_SHORT));  lub  Serial.println(rtc.getTimeStr(FORMAT_SHORT)); wyświetla godzinę w formacie np: 13:25. Czy jest taka możliwość aby z 13:25 wyciągnąć dowolny znak lub 2 znaki lub więcej i zapisać do zmiennej w celu późniejszego wykorzystania?
@pschon, jeśli oczekujesz pomocy to proponuję zacząć o napisania jakiej biblioteki używasz. Napisałeś tylko "Odczytuję godzinę z modułu ds1302", ale my nie wiemy jakiego typu jest zmienna "rtc" i możemy się tylko domyślać. A domyślanie sprawia, że nazwa getTimeStr prawdopodobnie zwaraca napis, czyli String.
Z napisu możesz oczywiście wydłubać potrzebne informacje, ale będzie to skomplikowane i mało efektywne.
Prawdopodobnie najłatwiej byłoby użyć innej funkcji - ale ciężko coś poradzić nie wiedząc co jest dostępne...

A przykładowo biblioteka dla DS1302 dostępna pod adresem https://github.com/JAnwyl/ArduinoAquariu...ies/DS1302 zawiera funkcję getTime. Dzięki niej możesz odczytać czas jako strukturę Time, gdzie aktualna godzina to po prostu pole "hour".

Natomiast niezależnie od biblioteki i problemu z ds1302, nie gniewaj się na radę kolegi @Jarewa0606 - wbrew pozorom ma on dużo racji, jeśli nie nauczysz się podstaw, to za chwilę będziesz miał kolejny problem, którego nie będziesz potrafił rozwiązać. Chyba łatwiej zacząć od opanowania prostych przykładów, zrozumienia jak działają zmienne oraz ich typy, a dopiero później zabrać się za realizowanie własnego projektu.
Stron: 1 2