• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Nie działający wyświetlacz po uruchomieniu SD
#21
A czy kolega wie że otwarcie pliku i zapis na SD w przypadku atmega 328 trwa czasami "wieczność"??

I w tym przypadku 

Kod:
display.drawRect(1, 1, 126, 30, WHITE);
display.display();
delay(1000);
display.clearDisplay();
//koniec wyswietlacza


To strzał w kolano.....
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#22
(19-01-2020, 21:41)damilog napisał(a):
(19-01-2020, 19:33)Agregacik napisał(a): Może zeskanuj jakie masz adresy na magistrali I2C. Możesz po kolei włączać i wyłączać urządzenia. Zobaczysz czy adresy urządzeń się czasem nie pokrywają.
Kod:
19:12:29.170 ->
19:12:29.170 -> I2C scanner. Scanning ...
19:12:29.170 -> Found address: 60 (0x3C)
19:12:29.206 -> Found address: 118 (0x76)
19:12:29.206 -> Done.
19:12:29.206 -> Found 2 device(s).

Pisałeś o trzech urządzeniach a tu są tylko dwa.
 
Odpowiedź
#23
(19-01-2020, 22:09)Jarewa0606 napisał(a): A czy kolega wie że otwarcie pliku i zapis na SD w przypadku atmega 328 trwa czasami "wieczność"??

I w tym przypadku 

Kod:
display.drawRect(1, 1, 126, 30, WHITE);
display.display();
delay(1000);
display.clearDisplay();
//koniec wyswietlacza


To strzał w kolano.....

Tego wycinka mogę się pozbyć.
Co zatem proponujesz w związku a moją atmegą ? Podpiąć to na Arduino Mega? Albo "nano pro" mam jeszcze ale to nie rozwiązuje problemu. 
Zaważyłem że jak kod z zapisu SD dam przed kod wyświetlacza to zapisuje na SD dane tak jak chcę ale wyświetlacz nie odpala. 
Może jakieś bardziej dogłębne sugestie? Co zrobić? 

(19-01-2020, 22:14)Agregacik napisał(a):
(19-01-2020, 21:41)damilog napisał(a):
(19-01-2020, 19:33)Agregacik napisał(a): Może zeskanuj jakie masz adresy na magistrali I2C. Możesz po kolei włączać i wyłączać urządzenia. Zobaczysz czy adresy urządzeń się czasem nie pokrywają.
Kod:
19:12:29.170 ->
19:12:29.170 -> I2C scanner. Scanning ...
19:12:29.170 -> Found address: 60 (0x3C)
19:12:29.206 -> Found address: 118 (0x76)
19:12:29.206 -> Done.
19:12:29.206 -> Found 2 device(s).

Pisałeś o trzech urządzeniach a tu są tylko dwa.

wiem. Zegara nie wyłapuje i nie wiem czemu.
 
Odpowiedź
#24
co to jest 

Kod:
if(now.hour() == 174){

now.hour co zwraca??

Nie próbuj zapisywać tysiące danych na sd w ciagu sekundy i nie czyść ekranu po tylko przed. I przed zapisem wyciągnij interesujące dane do zmiennej, wyklucz nieobecność czujnika lub złych danych..

Kod:
myFile.println("data: ");                                         //zapisz wartość
myFile.print(now.year());                                         //zapisz wartość roku
myFile.print("-");                                         //zapisz wartość
myFile.print(now.month());                                         //zapisz wartość miesiąca
myFile.print("-");                                         //zapisz wartość   
myFile.print(now.day());                                         //zapisz wartość dnia
myFile.print(" godzina: ");                                         //zapisz wartość   
myFile.print(now.hour());                                         //zapisz wartość godziny   
myFile.print(":");                                         //zapisz wartość
myFile.print(now.minute());                                         //zapisz wartość minuty
myFile.print(":");                                         //zapisz wartość   
myFile.print(now.second());                                         //zapisz wartość sekundy
myFile.print("temperatura: ");                                         //zapisz wartość     
myFile.print(bme.readTemperature());                                         //zapisz wartość temperatury   
myFile.print("wilgotnosc: ");                                         //zapisz wartość
myFile.print(bme.readHumidity());                                         //zapisz wartość wilgotności 

Taka forma to drugi strzał w kolano.. Wystarczy ze rtc lub bm nie łaczy i sie zawiesza.....
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#25
Zegara nie wyłapuje i nie wiem czemu.

Zostaw sam zegar i skanuj. Jak nie wyłapuje to masz coś źle z zegarem. a może pokrywają się adresy czyli ma taki sam jak któreś z pozostałych urządzeń podpiętych pod I2C. Jak się z tym uporasz to idziesz dalej.
Uruchamiaj stopniowo: zegar, czujnik, wyświetlacz a dopiero potem zapis na kartę. Zrób sobie podprogramy dla każdego elementu, będzie łatwiej panować nad programem. Jak uruchomisz zegar to wyświetl sobie dane na konsoli. Potem dodaj czujnik i też wyświetl dane na konsoli. Dodaj wyświetlacz i wyświetl jakieś napis dla sprawdzenia czy działa. No a potem zapis na kartę.
 
Odpowiedź
#26
@Jarewa0606 Tak się zastanawiam czy now.hour, now.year itd to nie są elementy struktury, w której zapisują się dane gdy wywołamy odczyt zegara. To chyba jest w bibliotece od zegara i powinno zawsze zwracać jakąś wartość nawet jak nie ma zegara. Pytam z ciekawości nie jestem specjalistą w programowaniu, ale początkującym, który się uczy na takich przekładach.
 
Odpowiedź
#27
A tego to ja nie wiem... Ja tez początkujący.

Wiem tylko ze BM jak próbowałem odczytać a nie było go fizycznie to rzucało stosem (może była lipna biblioteka). Dlatego dobrze program tak napisać by ewentualnie wykluczyć nieobecność urządzenia..

A tak tylko myślę ze autor nie wie do końca co tak naprawdę z tym chce zrobić

Kod:
if(now.hour() == 174){

Przecież nawet gdyby zwracało liczbę to czy zdaje sobie on sprawę z tego że ten warunek będzie ciągle spełniony przez 1h??
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#28
(20-01-2020, 21:34)Jarewa0606 napisał(a): A tego to ja nie wiem... Ja tez początkujący.

Wiem tylko ze BM jak próbowałem odczytać a nie było go fizycznie to rzucało stosem (może była lipna biblioteka). Dlatego dobrze program tak napisać by ewentualnie wykluczyć nieobecność urządzenia..

A tak tylko myślę ze autor nie wie do końca co tak naprawdę z tym chce zrobić

Kod:
if(now.hour() == 174){

Przecież nawet gdyby zwracało liczbę to czy zdaje sobie on sprawę z tego że ten warunek będzie ciągle spełniony przez 1h??

Pisałem przecież  ze to tylko próba. A ten warunek nie będzie nigdy spełniony chyba że macie inne zegarki :-) . chodziło o to żeby w ogóle zechciał zapisać na sd i wyświetlić coś na wyświetlaczu.
Wyświetlacz działa prawidłowo (i czujniki) do momentu próby zapisu na karcie SD. Na dokładne określenie ram zapisu przyjdzie czas. Wystarczy drobna pętla i wszystko będzie raz zapisane o danej godzinie. Ja chce tylko 3 razy w ciągu doby zapisywać dane. Nic więcej. Chce z siebie zdjąć obowiązek prowadzenia pomiarów w pracy.
 
Odpowiedź
#29
Nie wiem czy pisałeś, ale jaką masz płytkę arduino. Rozpisz do jakich pinów masz podłączone poszczególne elementy. Może jest jakiś konflikt sprzętowy, "pinowy".
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości