Skocz do zawartości

Prosty "komputer" do ciągnika lub kombajnu --Boardinformator.


Pomocna odpowiedź

(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 przez jand
Link do komentarza
Share on other sites

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. 

Link do komentarza
Share on other sites

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.

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

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...

Link do komentarza
Share on other sites

 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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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. 

17053447140137876566999929276631.thumb.jpg.0aebb4406a017068fddb2797fb38267e.jpg

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

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

Link do komentarza
Share on other sites

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;
  }
  }
}

 

Link do komentarza
Share on other sites

(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. 

IMG_20240205_203707_240_LL.thumb.jpg.ec495ecd767368628c9b45543be5c0bf.jpgIMG_20240205_203718_722_LL.thumb.jpg.c8a3454745381f1276176ec9077ae4af.jpg

Edytowano przez Adonaktiv
Zdjęcia
Link do komentarza
Share on other sites

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.

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!

Gość
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.