Hektometar
Moderators: pedja089, stojke369, [eDo], trax
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Hektometar
E ovako hteo bih da napravim hektometar pomocu pic-a, da radi na hall senzor, sad sve sam smislio kao obican brojac ali da mi umesto 1 od koje krece sabira 0.0048 + 0'0048 i svaki inpuls da mi vrednuje kao 0,0048m tj svaki put kad se okrene osovina da mi se poveca brojac za 0.0048. Unapred hvala.
Re: Hektometar
Wiki kaže: "Hektometar je mjerna jedinica za dužinu koja iznosi stotinu metara."
Pa mi tu nije baš jasno šta želiš napraviti.
Btw, svaki PLC ima svoje specifične funkcije, pa ukoliko želiš da ti neko pomogne oko programa trebaš navesti o kom se radi.
Pa mi tu nije baš jasno šta želiš napraviti.
Btw, svaki PLC ima svoje specifične funkcije, pa ukoliko želiš da ti neko pomogne oko programa trebaš navesti o kom se radi.
Ako kaniš pobijediti, ne smiješ izgubiti
Re: Hektometar
Ne pise PLC nego PIC
Sto se tice programa PBP direktno ne podrzava rad sa decimalnim brojevima.
Postoji u asembleru FloatingPoint biblioteka, koja moze da se koristi i u PBP, ali je prilicno komplikovana.
Jednostavno umesto 0.048, sabiraj 48, i to je to. prikazi ga na displeju kako oces.
Ili sabiraj po 1, ali rezultat podeli ili pomnozi sa necim da izgleda isto.
Ono sta je tu problem je sto na 16F picevima maksimalni broj je 65535.
Mozes napraviti brojac gde svaki bajt predtavlja 2 cifre 00-99, kada on dodje do 100 uvecavas sledeci bajt itd. Mislim da ima negde takav primer na forumu.
Sto se tice programa PBP direktno ne podrzava rad sa decimalnim brojevima.
Postoji u asembleru FloatingPoint biblioteka, koja moze da se koristi i u PBP, ali je prilicno komplikovana.
Jednostavno umesto 0.048, sabiraj 48, i to je to. prikazi ga na displeju kako oces.
Ili sabiraj po 1, ali rezultat podeli ili pomnozi sa necim da izgleda isto.
Ono sta je tu problem je sto na 16F picevima maksimalni broj je 65535.
Mozes napraviti brojac gde svaki bajt predtavlja 2 cifre 00-99, kada on dodje do 100 uvecavas sledeci bajt itd. Mislim da ima negde takav primer na forumu.
Re: Hektometar
16F PIC nema long varijablu? Odnosno 32 bitnu?
Ja bi to ovako: hall senzor spojit na interupt, svaki put kad hall okine povećaj brojač za 1
I kasnije na LCD ispisuješ:
Metri=brojac×0.0048;
Vrlo jednostavno
Ja bi to ovako: hall senzor spojit na interupt, svaki put kad hall okine povećaj brojač za 1
I kasnije na LCD ispisuješ:
Metri=brojac×0.0048;
Vrlo jednostavno
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
probacu tako da uradim ali problem mi je.kako da racuna kada prebacim tipa.na.drugi prekidac kako da.nastavi da racuna.i dalje od.stare vrednosti koju je dostigao tipa.da sam izracunao 40Ha i.sad da prebacim da.mi racuna od.0.0024 al da nastavi na.tih 40Ha
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
moja zamisao tog hektometra je.da.ima 2 prekidaca da jedan prekidac meri celu kosu kombaja koja je 0.0048Ha u jednom impulsu i kada prebacim na.prekidac 2 da mi meri pola tog inpulsa tj da impuls bude 0.0024 ali da nastavi na staru vrednost, postavicu vam semu i kod.koji sam do sada napisao...prekidace sam odvojio pomocu if funkcije i prebacivanja na labelu celakosa.i pola.kose tipa.ako je ukljicena prekodac.za celu kosu on ga prebacuje u taj deo programa gde racunam sa 0.0048 ili ako je prekida 2 upaaljen da racuna sa 0.0024.
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
Code: Select all
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_LINES 2
pause 100
symbol HALL= PORTA.2
Symbol SW = PORTA.7
symbol SW1= PORTA.6
TRISA=1
TRISB=0
input hall
input sw
input sw1
i var byte
i=0
b Var byte
b=0
lcdout $FE, 1
pocetak:
if SW = 1 then Celakosa
if sw1= 1 then polakose
pause 100
goto pocetak
CelaKosa:
if hall=0 then
i=i+48
Lcdout $fe,1, "ukupno:", DEC ( i /1000),DEC4 i, "Ha"
pause 1000
endif
goto celakosa
PolaKose:
if Hall = 0 then
b=b+48
Lcdout $fe, $C0, " ", DEC ( b /1000), ".", DEC4 b, "Ha"
pause 2000
endif
goto polakose
end
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
'b' i 'i' varijabla su ti postavljene kao byte. Što znači da mogu brojit do 255 i tada opet se vraćaju na nulu.
Te varijable trebaju bit 'interger'(brojit ce do 65655) ili 'long' ako to pic podržava
Te varijable trebaju bit 'interger'(brojit ce do 65655) ili 'long' ako to pic podržava
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
a kako bih mogao da postavim neku funkciju da kada prebacim na prekodac za pola kose da nastavi da racuuna od prethodnog.stanja, tipa ako.sam.sa.celom kosom uradio 40ha i onda prebacim na pola.kose i da mi racunanje.krene od.40ha
Re: Hektometar
Izgleda da si se vodio onim, zasto jednostavno kad moze komplikovano. Pauza imas i previse... Nadji kako se detektuje prelazak sa 1 na 0 ili obrnuto, to ima na forumu.
EDIT:
Bila je greska u kodu
starostanje=hall
a treba da bude
starostanje=novostanje
Code: Select all
....
i var word
pocetak:
novostanje=hall
if novostanje<starostanje then
if SW = 1 then i=i+48
if sw1= 1 then i=i+24
Pause 100'ovde moze mala pauza ako koristis reed ili tako nesto, ako koristis hall mislim da debounce ne reba za njega
endif
starostanje=novostanje
Lcdout $fe,1, "ukupno:", DEC ( i /1000),DEC4 i, "Ha"
goto pocetak
end
Bila je greska u kodu
starostanje=hall
a treba da bude
starostanje=novostanje
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
Sta sam primetio kada racuna sa celom kosom tj i=i+48 , i onda prebacim na prekidac sw1 ili ti pola kose on mi racuna 72
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
Ne razumijem se u taj jezik toliko, pa nemogu nac grešku zašto ti duplo zbraja. Možda hall ostane duže upaljen pa ti ove dvije sekunde nisu dovoljne jer se kombajn sporo vrti ili prebrzo...
Pitaš kako će ukupno sve zbrojit? Pa probaj ić nekom logikom... Dodaš još jednu varijablu... Slikovito objašnjeno
Marko i jura bacaju kamen
Imaš tri varijable marko_bacio_kamenja
Jura_bacio_kamenja
Svekupno_baçeno_kamnjea
If jura bacio kamen then jura_bacio_kamen+1
Svekupno_baceno_kamena+1
If mArko_bacio_kamnenja the marko_bacio_kamen+1
Sveukuno_baceno_kamenja +1
Pitaš kako će ukupno sve zbrojit? Pa probaj ić nekom logikom... Dodaš još jednu varijablu... Slikovito objašnjeno
Marko i jura bacaju kamen
Imaš tri varijable marko_bacio_kamenja
Jura_bacio_kamenja
Svekupno_baçeno_kamnjea
If jura bacio kamen then jura_bacio_kamen+1
Svekupno_baceno_kamena+1
If mArko_bacio_kamnenja the marko_bacio_kamen+1
Sveukuno_baceno_kamenja +1
-
- Pocetnik na forumu
- Posts: 46
- Joined: 29-01-2013, 00:44
Re: Hektometar
aha skontao sam, ali jos uvek nmg da skontam.zasto mi kada prebacim na.pola kose.ne.racuna.+24 nego.72
Re: Hektometar
Koliko je 24+48?
Ne iskljucis prvi ulaz, kad ukljucis drugi...
Ne iskljucis prvi ulaz, kad ukljucis drugi...
Re: Hektometar
Peđa jel ovdje potrebno koristit funkciju 'goto'
U C-u ja je izbjegavam jer kad ih se više koristi lako se pogubi.
Može li se stavit jedan
While(1) i pičiš s programom da se stalno vrti u jednoj petlji?
U C-u ja je izbjegavam jer kad ih se više koristi lako se pogubi.
Može li se stavit jedan
While(1) i pičiš s programom da se stalno vrti u jednoj petlji?
Re: Hektometar
While 1 ili goto na labelu mu dodje jedno te isto.
Re: Hektometar
Da ali on u svakoj petlji koristi goto
Kako on uspije izać iz ove petlje?
fr*e screen capture software
Kako on uspije izać iz ove petlje?
fr*e screen capture software