Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 14:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
 Tytuł: Problem z adc
PostNapisane: 16 wrz 2012, o 15:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Witam !
Mam pewien problem z adc, a mianowicie kompletnie nie wiem jak porównać wartości adc w jednym warunku tzn:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę umieszczać kody w znacznikach syntax bo będę kasował tematy : SunRiver


To jest działający kod na 1 czujnik - ale jak rozszeżyć go na 2 czujniki tzn sprawdzać stan dwóch zujników w jednym if'ie ? Jak odczytać wartość z określonego ADC ?

Z góry dziękuję i pozdrawiam !



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 16:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Musisz utworzyć zmienne na każdy kanał np:

pomiar1 = pomiar(1);
pomiar2 = pomiar(2);

a później operujesz już zmienna pomiar1 a nie ADCW



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 17:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


--------------
Proszę umieszczać kody w znacznikach syntax bo będę kasował tematy : SunRiver

Coś takiego ? - nie działa kompletnie, a powinno.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Mogę się mylić ale te zmienne pomiar1 i pomiar2 powinny być zmiennymi globalnymi... da je wyżej, nad int main(void). To samo zrób ze zmienna a.
No i nie sądzę żeby wyrażenia warunkowe są prawidłowe... powinny wyglądać np tak: if( x>15 && x<80 && y>195 && y<235 )



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 17:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Wywala warningi i errory:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie mogę tam tego przenieść bo jest tam deklaracja funkcji.


Proszę umieszczać kody w znacznikach syntax bo będę kasował tematy : SunRiver


Nie za bardzo rozumiem czemu moje wyrażenia warunkowe są złe, jeśli możesz, proszę o wytlumaczenie ;). Poza tym zmienna a była nieglobalna a program działał (na jeden czujnik w warunku).

------------------------ [ Dodano po: 3 minutach ]

Dobra już skompilowałem ale dalej nie działa...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 17:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Namieszałeś... w ifach - powinno być tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 18:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Rzeczywiście było namieszane w if'ach, ale dalej jest to samo - jak postawię robota na białym podczas wgrywania wsadu to diody gasną na cały czas (żadnej reakcji na czarny), a jak jest na czarnym, podczas wgrywania programu diody się zapalają i już nie gasną (0 reakcji na biały). Aha PORTB=0xff- diody zgaszone, PORTB=0x00- diody zapalone.

PS:przepraszam za stosowanie nie tych znaczników



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 18:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

przerzuć pomiary do pętli while(1) i powinno zadziałać.

inna sprawa czy działa Ci w ogóle funkcja odczytu ADCW ? testowałeś ją jakoś ? masz w ogóle odczyty ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 19:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W ten sposób? Jeśli tak to nie działa. Samo ADCW działa ładnie (kod z pierwszego postu), jeśli chodzi Ci o odczyty adc (0-1023) to takowych nie posiadam bo nie mam jak ich dokonać .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 19:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Skoro nie masz jak sprawdzić czy ADCW działa bo nie masz jak, to skąd wiesz że działa ? fakt że program się skompilował nie oznacza że działa tak jakbyś tego chciał :)

Musisz mieć możliwość odczytu wartości...
Masz pierwszą część książki Mirka ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2012, o 04:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Ale ja wiem że działa bo program z ADCW pięknie chodzi na jednym czujniku, a ja chcę rozszeżyć go na dwa czujniki, nie wim po co tutaj potrzebny jest mi pomiar? Tak 1 część książki posiadam, całą już niejednokrotnie przeczytałem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2012, o 08:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

To zrób mały test i zamiast wzdłurz linii, przejedź ją w poprzek i zobacz co się stanie.

Według mnie w warunkach jest błąd logiczny. Jeżeli masz czujniki po obydwóch stronach robota, czyli linia jest miedzy czujnikami, to będzie tylko spełniony warunek dla białego, natomiast dla czarnego nigdy nie będzie spełniony warunek poniewaz robot musiał by najechać dwoma czujnikami na raz na czarną linie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2012, o 14:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Malutki_27 ja buduję minisumo nie linefollowera ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2012, o 06:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Działający kod, może komuś się przyda, dziękuję wszystkim za pomoc !!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2012, o 07:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Hehehee ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2012, o 11:51 
Offline
Użytkownik

Dołączył(a): 19 lip 2012
Posty: 86
Lokalizacja: Lublin
Pomógł: 3

Witam,

Mam podobny problem.

Otóż na szynie ADC mam wpięte 5 czujników pola magnetycznego (Hall). Jak zbieram wynik pomiarów to okazuje się że wszystkie są takie same :o . Jak zostawię tylko jeden wpięty i zbiorę pomiar to i tak pięć zmiennych przekonywujących pomiary ma tą samą wartość. Wygląda na to że MUX nie przełącza :-(

Ktoś wie jak to rozwiązać?

Dodam że program pisany jest na Atmega644PA.


Proszę o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2012, o 11:57 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

kazzik87 napisał(a):
Mam podobny problem.

Otóż na szynie ADC mam wpięte 5 czujników pola magnetycznego (Hall). Jak zbieram wynik pomiarów to okazuje się że wszystkie są takie same :o . Jak zostawię tylko jeden wpięty i zbiorę pomiar to i tak pięć zmiennych przekonywujących pomiary ma tą samą wartość. Wygląda na to że MUX nie przełącza :-(

Ktoś wie jak to rozwiązać?

Dodam że program pisany jest na Atmega644PA.
.


Panie kolego ;) proszę się rozejrzeć na forum ale też zaglądać do źródła:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

a ten akurat kłopot jest opisany tutaj:

post13633.html#p13633

i wszystko będzie dobrze

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO