ATNEL tech-forum
https://forum.atnel.pl/

ADC mapowanie zakresu.
https://forum.atnel.pl/topic22788.html
Strona 1 z 1

Autor:  gregory099 [ 14 sty 2020, o 20:09 ]
Tytuł:  ADC mapowanie zakresu.

Witam serdecznie wszystkich. W temacie programowania AVR jestem zielony;) Troszke miałem styczności z zabawą Arduinem UNO natomiast teraz wzięło mnie natchnienie na poznanie czystego języka C w AVR. I w związku z tym mam pewne zapytanie odnośnie ADC. Mianowicie gdy ustawie sobie już wszystkie parametry zwiazane z ADC w Atmega32 i powiedzmy przy przekręceniu potencjometrem zmieniają mi sie wartości od 0-1023 czy istnieje taka opcja aby użyć jak to w arduino było tzw. mapowania zakresu w sensie takim że np bedzie map_zakres(0,1023,0,100) wartość 0-1023 zamienić na wartości z przedziału 0%-100%? A następnie wykorzystać w sposób ze gdybym miał podpiety czujnik temperatury temperaturę mam np 20C więc uruchom wentylator przy pomocy timera i fast PWM na 30%??

Autor:  moscow [ 14 sty 2020, o 20:29 ]
Tytuł:  Re: ADC mapowanie zakresu.

Jeśli jakaś funkcjonalność z Arduino działa wystarczająco dobrze, to czasem najprościej zajrzeć do kodu źródłowego danej funkcji. Czasem można po prostu przekleić, czasem napisać samemu coś na podstawie.

Googlując trochę - tutaj na stronie znalazłem ciekawą dyskusją na temat tej funkcji oraz potencjalnych wariantów (zaokrągleń).

https://github.com/arduino/ArduinoCore-API/issues/51

W szczególności można wykorzystać pewnie ten fragment

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

Autor:  micky [ 14 sty 2020, o 20:40 ]
Tytuł:  Re: ADC mapowanie zakresu.

Jak jesteś początkujący to najpierw rozpisz sobie jakie działania matematyczne należy wykonać by przeskalować wartości z 0-1023 na 0-100. Zaglądanie do kodów źródłowych Arduino to myślę, że powinno się robić na wyższym poziomie zaawansowania.

P. S. Jak nie masz to polecam Mirkowego Blue Booka - potężna dawka wiedzy dla początkującego i nie tylko.

Autor:  Wirnick [ 15 sty 2020, o 08:38 ]
Tytuł:  Re: ADC mapowanie zakresu.

@gregory099 Poruszyłeś zagadnienie związane z porównaniem platform programowania w języku C/C++.
Platformą na tym forum jest AVR Toolchain i jej funkcje wewnętrzne. Arduino ma swoje funkcje wewnętrzne.
Wspólnym obiektem programowania jest mikroprocesor AVR. Rejestr ADCW zawiera wynik pomiaru ADC. Znając ten wynik wskazujesz co ma się znajdować w innych rejestrach wewnętrznych lub wyjściowych. Np. jeżeli ADCW jest 50% to pin PD0 ma być 0(dioda LED podłączona do tego pinu "świeci").

Autor:  gregory099 [ 15 sty 2020, o 18:20 ]
Tytuł:  Re: ADC mapowanie zakresu.

Witam. Spokojnie koledzy jak to mówią kto pyta nie błądzi. I wychodzi właśnie różnica pomiędzy Arduino a czystym pisaniem w C. Raczej chodziło mi na odwrót kolego Wirnick np że gdy termistor 10k podłączony do ADC odczyta wartość temperatury np 30 stopni C uruchom wentylator przy pomocy PWM w 50% jego pełnego zakresu. W Arduino wiem ze mozna było to zrobić tutaj widze że też by można było tylko raczej na piechote wszystko w sensie takim że ręcznie wpisywać wypełnienie w PWM. Chyba że jestem w błędzie to proszę o korektę mojej wypowiedzi ;) Pozdrawiam.

Autor:  Wirnick [ 15 sty 2020, o 19:25 ]
Tytuł:  Re: ADC mapowanie zakresu.

Niema takiej platformy programistycznej, by obeszło się od wklepywania programu ręcznie. Chociaż raz trzeba tego dokonać, by procesor z peryferiami stał się samodzielnym robotem. Też miałem problemy zrozumieć funkcjonowanie procesora i dzięki BB Pana Mirka poznałem co tkwi w szczegółach(wnętrznościach procka), a tego nie musisz wiedzieć programując w Arduino. Programuję też w arduino szukając pomocy w skieczach i helpach.

Autor:  gregory099 [ 15 sty 2020, o 19:49 ]
Tytuł:  Re: ADC mapowanie zakresu.

Jest jest różnica między Arduino a AVR . Bob też mam od niedawna i staram się uczyć powoli. Myślę że kiedyś ogarnę temat;). A zapytanie jeszcze mam odnośnie porównania do Arduino w pętli loop bądź setup gdy jakiś program się wpisało np proste mruganie dioda poszło od strzała a dlaczego w AVR nie ruszy nic jeśli wszystkiego nie wezmę np w klamry pętli while?

Autor:  Wirnick [ 15 sty 2020, o 20:05 ]
Tytuł:  Re: ADC mapowanie zakresu.

Przechodząc na platformy trzeba spełnić jej rygory. W arduino muszą być funkcje setup i loop. W C/C++ main(ciało programu) i while()(program główny). Warto zainstalować na komputerze program AVPlayer - otrzymasz dość pokaźną dawkę wiedzy z poradników wideo.

Autor:  micky [ 15 sty 2020, o 20:07 ]
Tytuł:  Re: ADC mapowanie zakresu.

Zacznij kolego od podstaw - studiuj BB bo inaczej się nie da.

Autor:  Marhef [ 16 sty 2020, o 08:30 ]
Tytuł:  Re: ADC mapowanie zakresu.

gregory099 napisał(a):
zapytanie jeszcze mam odnośnie porównania do Arduino w pętli loop bądź setup gdy jakiś program się wpisało np proste mruganie dioda poszło od strzała a dlaczego w AVR nie ruszy nic jeśli wszystkiego nie wezmę np w klamry pętli while?
Jeśli znajdziesz sobie plik arduino.h (albo arduino.cpp. Albo coś w tym stylu), to w pewnym miejscu jest taki zapis (mniej więcej, z głowy piszę):
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co to oznacza? Że to, co w czystym C/C++ musisz napisać sam, arduino załatwia "po cichu".
Z mojej strony, polecam jednak odstawić arduino, w ten sposób nie nauczysz się programować. Piszę (niestety) z własnego doświadczenia.

Autor:  gregory099 [ 16 sty 2020, o 08:42 ]
Tytuł:  Re: ADC mapowanie zakresu.

Dziękuję kolegom za podpowiedzi teraz temat dlaczego trzeba użyć while się wyjaśnił ;)

Autor:  Wirnick [ 17 sty 2020, o 13:57 ]
Tytuł:  Re: ADC mapowanie zakresu.

Dobrze, że się wyjaśniło.Ja zazwyczaj nie odpowiadam na PW, ponieważ cenię otwartość tego forum i przychylność userów w udzielaniu pomocy. Śmiało przedstawiaj pytania i wątpliwości. Jak przejdziesz w lekturze BB rozdział 4.5. to będziesz już na głębokiej "wodzie" w poznawaniu AVR i programowaniu w C/C++. Razem z tobą zaczynam powtarzać lekturę.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/