etet100 13 stycznia Udostępnij 13 stycznia 23 minuty temu, jand napisał: A jak ta funkcja zwraca wartość (jest typu int)? No i właśnie. Od razu widać. Cytuj Link do komentarza Share on other sites More sharing options...
jand 13 stycznia Udostępnij 13 stycznia (edytowany) 1 godzinę temu, Adonaktiv napisał: a na końcu funkcji return rpm; Jakoś się tego nie mogę dopatrzyć (we wpisie kolegi @etet100). Trzeba się zdecydować: Jeśli wynik działania funkcji przekazujemy przez zmienną globalną - w tym wypadku rmp, zadeklarowaną przed setup() - to funkcja powinna być typu void . Jeśli zaś już zadeklarowaliśmy funkcję typu int, to wynik przekazujemy przez return wynik; gdzie wynik jest zmienną lokalną typu int tej funkcji. Inaczej się robi bałagan. Edytowano 13 stycznia przez jand Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 13 stycznia Autor tematu Udostępnij 13 stycznia Rozkminiłem, a przynajmniej zrobiłem tak że to funkcjonuje poprawnie. Miałem w złym miejscu zmienne odpowiedzialne za naliczanie impulsów, int obrot; unsigned long startTime1; boolean wom = LOW; I sprawdziłem to co napisałeś wyżej, void getWOM() int getWOM() Działa i tak i tak. Cytuj Link do komentarza Share on other sites More sharing options...
jand 13 stycznia Udostępnij 13 stycznia 10 minut temu, Adonaktiv napisał: Działa i tak i tak. Działa, ale jest niezgodne z logiką i mylące. Ktoś obcy, widząc funkcję typu int będzie się spodziewał, że po to zostało ona wprowadzona, by wartość tej funkcji gdzieś w programie wykorzystać. A tu szacher-macher i wartość funkcji jest przekazywana przez zmienną globalną. Poczytaj, proszę, trochę o funkcjach. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
farmaceuta 14 stycznia Udostępnij 14 stycznia 1 godzinę temu, Adonaktiv napisał: Rozkminiłem, a przynajmniej zrobiłem tak że to funkcjonuje poprawnie. Miałem w złym miejscu zmienne odpowiedzialne za naliczanie impulsów, int obrot; unsigned long startTime1; boolean wom = LOW; void getWOM() int getWOM() Bo miałeś te zmienne jako lokalne i przy każdym wejściu do funkcji tworzywa je od nowa więc to działać raczej nie mialo szans...poczytaj o zmiennych globalnych i lokalnych... Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 14 stycznia Autor tematu Udostępnij 14 stycznia Wiem, że jeszcze się w tym gubię ale z waszą pomocą dużo zostało ogarnięte. Odczyty już nie blokują działania menu, ekran się odświeża. Dodałem jeszcze 2 ify i teraz informacja o ścieżkach i naliczanie przejazdów działa tylko gdy aktywujemy tą funkcję w Menu_3. Cele z pierwotnych założeń projektu zostały osiągnięte. Choć teraz przychodzą pomysły na kolacje funkcje. Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta 14 stycznia Udostępnij 14 stycznia 4 godziny temu, Adonaktiv napisał: Choć teraz przychodzą pomysły na kolacje funkcje. No to pytaj dalej... jak będziemy potrafić to pomożemy 😜 Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 14 stycznia Autor tematu Udostępnij 14 stycznia Jak już nie będę mógł sam ogarnąć to będę pytał. A jeśli chodzi o to co jeszcze wymyśliłem. 1. Buzzer (krótkie pikniecie) informujący że został dodany przejazd w funkcji Aktualny przejazd. I długie puknięcie jeśli zostanie wysunięty siłownik od ścieżek. 2. Jeszcze jeden siłownik elektryczny. Tylko ten musiałby być z enkoderem. Sterowany potencjometrem + dwie zapisane pozycje siłownika. Siłownik miałby sterować gazem ręcznym. Tutaj najpierw trzeba to rozkminić od strony montażu aby nie blokowało z gazem nożnym. Także teraz będę robił do tego co mam docelową obudowę no i montaż. PS. W Takiej płytce poszczególne pola są od siebie odizolowane czy tak jak w Tej połączone. Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta 14 stycznia Udostępnij 14 stycznia 14 minut temu, Adonaktiv napisał: PS. W Takiej płytce poszczególne pola są od siebie odizolowane czy tak jak w Tej połączone. Tak, są od siebie odizolowane...każdy otwór Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 15 stycznia Autor tematu Udostępnij 15 stycznia Mała aktualizacja. Tak jak wspominałem wcześniej zrobię wyświetlacz oddzielnie a arduino z przetwornicami i przekaźnikami oddzielnie. Jako przewody sygnałowe wykorzystam skrętkę a 5v i gnd dla modułu i2c wezmę z przetwornicy żeby nie obciążać Arduino. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 16 stycznia Autor tematu Udostępnij 16 stycznia Trochę dzisiaj pomodziłem przy projekcie. Złożyłem całość tak jak docelowo ma być w ciągniku. Co prawda na mieszkaniu nie mam źródła prądu które może zasymulować ~14.5v instalacji ciągnika więc wykorzystałem mały akumulator ładowany przez zasilacz 230/12v także w czasie testu było około 13.5v Czyli: 1. czujniki indukcyjne, xl4015 (~8,05v) i lm2596 (5,01v) zasilane z akumulatora, 2.arduino zasilane z xl4015, 3.logika przekaźników i wyświetlacz zasilany z lm2596. I kolejny film Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 17 stycznia Autor tematu Udostępnij 17 stycznia Hejo, Dopisałem dzisiaj kilka linijek kodu odpowiedzialnego za buzzer. Sygnalizuje naliczanie przejazdu krótkim piknięciem a gdy AktPrz==SzSc następuje długie piknięcie sygnalizujące załączenie siłownika. void sygnalizacja(){ if(sygnalizator == HIGH){ digitalWrite(Buzzer, HIGH); if(millis() - sygnal >= 250 && AktPrz != SzSc) { digitalWrite(Buzzer, LOW); sygnalizator = LOW; } if(millis() - sygnal >= 700 && AktPrz == SzSc){ digitalWrite(Buzzer, LOW); sygnalizator = LOW; } } } Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 5 lutego Autor tematu Udostępnij 5 lutego (edytowany) Cześć, Jakiś czas temu wpadłem na pomysł aby do projektu dodać moduł RTC - DS1307, miałby on służyć jako pamięć dla przebiegu przy utracie zasilania - z wykorzystaniem NVRAM. Narazie nie mogę tego uruchomić ale jeszcze trochę powalczę sam. Udało mi się całość trochę zminimalizować, z wykorzystaniem klona Arduino Nano. Edytowano 5 lutego przez Adonaktiv Zdjęcia Cytuj Link do komentarza Share on other sites More sharing options...
ethanak 5 lutego Udostępnij 5 lutego Lepiej DS3231 z 4 kB EEPROM, albo jeśli tych danych jest więcej - jakiś tani FRAM. Cytuj Link do komentarza Share on other sites More sharing options...
Adonaktiv 5 lutego Autor tematu Udostępnij 5 lutego Nie ma tego dużo. 2x unsigned long ale było by to trzeba ciągle nadpisywać tak jak przebieg w samochodzie więc chyba eeprom się nie nada. Przy tych moich czujnikami magnetycznych 1 impuls == 0.66m, 1 obrót koła == 5.28m. Czyli po przejechaniu 100km mamy około 151515 impulsów. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!