Bascom jak dolączyć potencjometr?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Bascom jak dolączyć potencjometr?

Post autor: Spanner » 02 gru 2011, 13:39

Witam. Mam pewien problem którego nie mogę rozwiązać. Nie wiem jak napisać program, by kręcenie potencjometrem połączonym do szyn zasilania i wejścia atmega8 zmieniało wartość zmiennej w zakresie od 0 do 255. Czy ktoś mógłby podać mi przykładowy program który tylko będzie zmieniaj wartość zmiennej? Tylko tyle potrzebuję do ukończenia projektu.
Pozdrawiam
spanner

Awatar użytkownika
kris74
Użytkownik
Posty: 270
Rejestracja: 16 sie 2006, 17:36
Lokalizacja: Gorzów Wielkopolski

Post autor: kris74 » 02 gru 2011, 14:34

Odczep potencjometru do nogi wejścia adc procesora, jeden koniec do masy drugi do +5 V.
Konfiguracja ADC config Adc = single, Prescaler = Auto, Reference = Avcc
Następnie zmienna Dim Wart_ac As word
potem Start Adc
i tu przykład odczytu
Do
Wart_ac = Getadc(1)
Lcd wart_ac
loop
wyświetli wartość odczytaną z wejścia adc, a to jest konfiguracja dla 10 bitowego przetwornika ac w atmega8, bo taki pod ręką był.

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 02 gru 2011, 15:01

Aha a dlaczego zapisuje wartość do zmiennej word, nie da się na przykład do byte? Jak przekształcić potem na zmienną liczbową, wystarczy dać powiedzmy :

Zmienna bajtowa = zmienna tekstowa?

Awatar użytkownika
kris74
Użytkownik
Posty: 270
Rejestracja: 16 sie 2006, 17:36
Lokalizacja: Gorzów Wielkopolski

Post autor: kris74 » 02 gru 2011, 15:10

Do zmiennej bajtowej nie przypiszesz zmiennej tekstowej trzeba zrobić jak już rzutowanie.
Ale po odpowiednim rzutowaniu jak najbardziej tak można zrobić, co do zmiennej Word zobacz co będzie jak zadeklarujesz byte, ja tego nie sprawdzałem, kod przykładowy działa na
pewno.

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 02 gru 2011, 15:21

A jak się robi to rzutowanie? mogę prosić o przykład?

Awatar użytkownika
kris74
Użytkownik
Posty: 270
Rejestracja: 16 sie 2006, 17:36
Lokalizacja: Gorzów Wielkopolski

Post autor: kris74 » 02 gru 2011, 15:46

Rzutowanie to nic innego jak zmiana jednej zmiennej na drugą, np byte na string.
Dim Zmienna As string*10
Dim L as Byte
to wtedy
Zmienna = Str(L)

keruseykaryu

Post autor: keruseykaryu » 02 gru 2011, 18:32

Spanner pisze:Aha a dlaczego zapisuje wartość do zmiennej word
Bo Getadc taką zwraca. Przecież masz ADC 10bit to gdzie chcesz ładować 10bitów do 8?

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 02 gru 2011, 19:00

Heh fakt. Będzie trzeba załadować do większej.
pozdro

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 03 gru 2011, 10:19

a mogę bezpośrednio do PWM-a wpisać wartosć tej zmiennej od adc?

Awatar użytkownika
mictronic
-
Posty: 81
Rejestracja: 04 paź 2006, 19:28
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: mictronic » 03 gru 2011, 10:25

Jeśli używasz PWM minimum 10bit to tak.

keruseykaryu

Post autor: keruseykaryu » 03 gru 2011, 13:52

a mogę bezpośrednio do PWM-a wpisać wartosć tej zmiennej od adc?
Nie robiłbym tego. Lepiej najpierw uśrednij wyniki z ADC.

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 03 gru 2011, 14:20

A mógłbyś powiedzieć jak to uśrednić? Nie rozumiem za bardzo o co chodzi i jak to zrobić.
pozdro

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 03 gru 2011, 14:46

Kolega nigdy sobie średniej arytmetycznej ocen w szkole nie liczył ? Wystarczy zebrać kilka próbek np. 8, dodać je do siebie i podzielić przez 8, to właśnie wynik uśredniony. No i zaokrąglić do wartości całkowitej.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 03 gru 2011, 15:01

Spanner zrób np 4 próbki i podziel

Kod: Zaznacz cały

Przetwornik = Przetwornik + Getadc(channel)                 'pomiar
Przetwornik = Przetwornik + Getadc(channel)
Przetwornik = Przetwornik + Getadc(channel)

Shift Przetwornik , Right , 4

Spanner
Użytkownik
Posty: 364
Rejestracja: 18 lip 2010, 18:29
Lokalizacja: Bielsko biała

Post autor: Spanner » 03 gru 2011, 16:13

Ok. mam jeszcze tylko pytanie co zrobić z końcówkami AREF, AVCC i AGND. NIgdy nie używałem atmegi więc nie wiem.
Pozdro

ODPOWIEDZ