sygnałów cyfrowych przetwornikiem analogowo-cyfrowym Krótki wstęp teoretyczny Wysokim niskim chcielibyśmy poznać dokładną odległość od przeszkody

Podobne dokumenty
Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Teraz możesz kupić zestaw ponad 70 elementów niezbędnych do przeprowadzenia ćwiczeń z kursu u naszych dystrybutorów!

Przetwornik analogowo-cyfrowy

Laboratorium Analogowych Układów Elektronicznych Laboratorium 4

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Wyniki (prawie)końcowe - Elektroniczne warcaby

Kurs Arduino #2 podstawy programowania, porty I/O. 2 //Zawartość programu. 1 int main() { void setup() { //Instrukcje, które wykonają się jeden raz

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Parametryzacja przetworników analogowocyfrowych

Sygnały, czyli pogadajmy z Arduino

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

BEZDOTYKOWY CZUJNIK ULTRADŹWIĘKOWY POŁOŻENIA LINIOWEGO

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

Dalmierze firmy SHARP na przykładzie 2D120XJ100F

Czym jest sygnał PWM?

Pomiar natężenia światła (005; ; arduino, processing)

TERMOSTAT Z WYŚWIETLACZEM LED - 50,0 do +125,0 C

BRC SQ 24 MY07 DOSTROJENIE MANUAL by LemonR ZADBAJ O BATERIĘ W LAPTOPIE!

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Krótki wstęp o wyświetlaczach. Jak zmusić wyświetlacz do pracy?

Interfejs analogowy LDN-...-AN

Podstawy elektroniki: praktyka

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Ćw. 7 Przetworniki A/C i C/A

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

DWUKIERUNKOWY REGULATOR SILNIKA DC VDC 20A

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Ćwiczenie 1. Sprawdzanie podstawowych praw w obwodach elektrycznych przy wymuszeniu stałym

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

1 Badanie aplikacji timera 555

Commander

MCAR Robot mobilny z procesorem AVR Atmega32

SERIA D STABILIZATOR PRĄDU DEDYKOWANY DO UKŁADÓW LED

XXIX OLIMPIADA FIZYCZNA ETAP III Zadanie doświadczalne

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Sygnał PWM, serwomechanizmy i biblioteki. 1. Czym jest sygnał PWM? Strona 1

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

NARZĘDZIA WYMAGANE: Aby zainstalować UNI-IR potrzebny jest woltomierz o zakresie 20 woltów (Najlepszy będzie przyrząd automatyczny)

Przetworniki cyfrowo-analogowe C-A CELE ĆWICZEŃ PODSTAWY TEORETYCZNE

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

MultiTool instrukcja użytkownika 2010 SFAR

Instytut Teleinformatyki

Kabelki stykowe. Szybkie łączenie elementów elektronicznych. Żywe kolory ułatwiają utrzymanie porządku w układzie.

WS VAC 3 KANAŁOWY BEZPRZEWODOWY ODBIORNIK. z zasilaniem 230 V/AC OGÓLNY OPIS DO ZAŁĄCZANIA I CZASOWEGO STEROWANIA ODBIORNIKÓW EL.

Kod produktu: MP01611

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Laboratorium Metrologii

Przetwarzanie A/C i C/A

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Oscyloskop (007; ; arduino; processing)

Projektowanie i produkcja urządzeń elektronicznych

Kod produktu: MP01105

Arduino i nowe diody RGB

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Ściemniacz LED 2.4G RF 12V, 24V 16A + pilot dotykowy

Ćwiczenie nr 82: Efekt fotoelektryczny

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

Bufor danych DL 111K Nr produktu

Sterownik schodowy 6-17k

REGULOWANE ZASILACZE DC SERIA DPD

Instytut Teleinformatyki

REGULATOR ŁADOWANIA 12V / 24V / 36V / 48V DC DO INSTALACJI ELEKTROWNI WIATROWEJ

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Restarter GSM. Instrukcja montażu i konfiguracji. INETECH

INSTRUKCJA OBSŁUGI K3-3. Czytnik kart i zamek kodowy z kontrolerem dostępu i interfejsem Wiegand. Copyright Domster T. Szydłowski

CRN Profesjonalny czujnik ruchu 12V. Elementy czujnika

Lekcja 6. Metody pracy: pogadanka, wykład, pokaz z instruktarzem, ćwiczenia praktyczne

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Komunikujemy się z komputerem.

TERMINAL DO PROGRAMOWANIA PRZETWORNIKÓW SERII LMPT I LSPT MTH-21 INSTRUKCJA OBSŁUGI I EKSPLOATACJI. Wrocław, lipiec 1999 r.

Kod produktu: MP01611-ZK

Multi-CZUJNIK 68. Programowany Multi-CZUJNIK zawierający czujnik. położenia, uderzenia i spadku napięcia.

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

ZASILACZ DC AX-3003L-3 AX-3005L-3. Instrukcja obsługi

M-1TI. PRECYZYJNY PRZETWORNIK RTD, TC, R, U NA SYGNAŁ ANALOGOWY 4-20mA Z SEPARACJĄ GALWANICZNĄ. 2

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Instrukcja obsługi. Ściemniacz LED RF 12V 16A + pilot dotykowy R203. Parametry techniczne: Kontroler

Przenośny akumulator, powerbank Goal Zero Venture 30 Outdoor 22008, 7800 mah, Li-Ion, Czarno-zielony

2.1 Przesył danych między procesorem a tabelą zmiennych

Instrukcja obsługi Zasilacz regulowany WINNERS XL4015 USB

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

GATE OPENER. Instrukcja Obsługi i Konserwacji. Sterownika GSM-21. Instrukcja obsługi sterownika GSM-21

Wstęp do użytkowania modeli GP2D12 i GP2Y0A02 Podstawowe informacje techniczne Testy praktyczne czujnika GP2Y0A02

Płytka ewaluacyjna z ATmega16/ATmega32 ARE0021/ARE0024

Instrukcja ST-226/ST-288

Urządzenia do bezprzerwowego zasilania UPS CES GX. 6 kva. Wersja U/CES_GX_6.0/J/v01. Praca równoległa

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Nowy MULTIMETR z czujnikiem Halla

Miernik poziomu cieczy MPC-1

Opis dydaktycznych stanowisk pomiarowych i przyrządów w lab. EE (paw. C-3, 302)

Przetworniki analogowo-cyfrowe

Transkrypt:

Kurs # Przetwornik ADC W poprzednich częściach kursu zajmowaliśmy się odczytywaniem sygnałów cyfrowych. Dzięki temu mogliśmy np.: sprawdzić, czy przycisk został wciśnięty. Świat, który nas otacza nie jest jednak cyfrowy, czasami stany (/0) to za mało. Dlatego tym razem zajmiemy się przetwornikiem analogowo-cyfrowym, w skrócie ADC. Krótki wstęp teoretyczny Elektronikę można podzielić na cyfrową oraz analogową. Cyfrowa ogranicza się do tego, że dane wejście lub wyjście może być w jednym z dwóch stanów. Wysokim () lub niskim (0). W praktyce oznacza to, że rozpozna na swoim wejściu 0V lub V (w uproszczeniu). Niestety nie wszystkie rzeczy z otaczającego nas świata można opisać w tak prosty sposób. Podłączając czujnik odległości chcielibyśmy poznać dokładną odległość od przeszkody, a nie jedynie informacje na zasadzie: przeszkoda widoczna, brak przeszkody. Czujnik taki na swoim wyjściu mógłby podawać napięcie proporcjonalne do odległości. Wtedy pomiar polegałby na odczytaniu napięcia np.: z zakresu 0-V. To jest właśnie podejście analogowe. Dlatego w poniższych przykładach wykorzystamy odpowiednie peryferia, które pozwalają na pomiar napięcia dostarczanego do specjalnych wejść układu. Uwaga! Zanim przejdziemy do testów zapamiętaj, że do wejść UNO można podłączyć jedynie napięcie z zakresu 0-V. Inne może uszkodzić płytkę, a nawet komputer, do którego podłączysz swój układ! Do przetwarzania sygnału analogowego wykorzystuje się tzw. ADC, czyli Analog-Digital Converter. Jest to jedno z najpopularniejszych peryferiów występujących w mikrokontrolerach. Jego zadaniem jest próbkowanie napięcia podanego na wejście układu i przetwarzanie go na postać cyfrową. Przykładowo dla przetwornika liniowego: Napięcie => Wartość odczytana z ADC [V] (zaokrąglona) 0 => 0 => => 0 => => 0 => W tym wypadku przedstawiony został przetwornik -bitowy, ponieważ odczytana wartość mogła mieć kombinacji (poczynając od 0). W rzeczywistości możemy się spotkać z różnymi przetwornikami, np. lub - bitowymi. Przetwornik, który ma więcej bitów powinien być dokładniejszy, ponieważ jego maksymalna wartość jest większa (działa na tym samym zakresie, ale z większą rozdzielczością). W ramach ciekawostki warto wiedzieć, że przetworniki analogowo-cyfrowe działają stosunkowo wolno. Oczywiście nie zauważysz tego w swoich programach.jednak porównując ADC do innych peryferiów mikrokontrolera nie wypadają one na tym tle najlepiej. Pomiar z ADC trwa 0.000 s, czyli maksymalnie można wykonać 0,000 pomiarów na sekundę! Po drugie przetworniki te są drogie w produkcji. Jak pamiętasz z drugiej lekcji w UNO mamy do dyspozycji wejść analogowych (A0-A). Tak naprawdę w środku mikrokontrolera znajduje się tylko przetwornik ADC, do którego podłączony jest multiplekser. Dzięki temu możliwy jest pomiar napięcia na kanałach.

Na tym zakończę wstęp teoretyczny. Gdyby ktoś był ciekawy jak to wszystko działa dokładniej, to zapraszam do pytania w komentarzach. Teraz możemy przejść do pierwszego programu. ADC w praktyce Czas na sprawdzenie jak ADC zadziała w praktyce. W tym celu należy złożyć układ zgodnie z poniższym rysunkiem. Pojawił się tutaj potencjometr w roli dzielnika napięcia. Jeśli nie pamiętasz czym jest dzielnik napięcia, to koniecznie zajrzyj teraz do trzeciej części kursu elektroniki. Programowe wykorzystanie ADC jest banalne i ogranicza się do wykorzystania dosłownie jednej, funkcji analogread(kanał ADC), gdzie za kanał ADC podstawiamy wybrany pin (A0-A). Nie pozostaje nam nic innego jak pierwszy prosty program. Na początku ograniczymy się tylko do przesyłania odczytanej wartości do komputera. Wykorzystamy do tego oczywiście USART, który poznaliśmy w poprzedniej części kursu. 0 int odczytanawartosc = 0; Serial.begin(00);//Uruchomienie komunikacji przez USART odczytanawartosc = analogread(a);//odczytujemy wartość napięcia Serial.println(odczytanaWartosc);//Wysyłamy ją do terminala delay(00);//czekamy, aby wygodniej odczytywać wyniki Podczas kręcenia potencjometrem, na ekranie otrzymujemy wartości od 0 do 0. To oznacza, że przetwornik ADC, który znajduje się w UNO jest 0-bitowy.

Czy takie suche wartości są dla nas przydatne? Ciężko powiedzieć. Lepiej byłoby odczytywać wynik w bardziej ludzkich jednostkach. Przykładowo w woltach, prawda? Prosty woltomierz Zadanie to jest łatwe i polega tylko na odpowiednim przeliczeniu odczytanej wartości. Wiemy, że napięcie wejściowe waha się w zakresie 0-V, a największa liczba jaką możemy odczytać z przetwornika do 0. Czyli z proporcji: Mówiąc prościej każde zwiększenie napięcie wejściowego o ~0,00V zwiększy wskazanie ADC o jeden. Czyli uzyskanie wyniku w woltach ogranicza się do dodania jednej linijki: 0 int odczytanawartosc = 0;//Odczytana wartość z ADC float napiecie = 0;//Wartość przeliczona na napięcie w V Serial.begin(00);//Uruchomienie komunikacji przez USART odczytanawartosc = analogread(a);//odczytujemy wartość napięcia napiecie = odczytanawartosc * (.0/0.0); //Przeliczenie wartości na napięcie Serial.println(napiecie);//Wysyłamy zmierzone napięcie delay(00);//czekamy, aby wygodniej odczytywać wyniki Zwróć uwagę, że zmienna napięcie została zadeklarowana jako typ float, czyli taką, która pozwala na przechowywanie liczb zmiennoprzecinkowych. Liczby dzielone przez siebie w powyższym kodzie zostały zapisane z dopiskiem.0, jest to informacja dla kompilatora, aby traktował je jako liczby zmiennoprzecinkowe. Inaczej wynik takiej operacji byłby całkowity! Od teraz na ekranie komputera powinna wyświetlać się wartość z zakresu 0-V. Tym samym zbudowaliśmy właśnie bardzo prosty, ale działający, woltomierz. Czy można zamiast potencjometru zmierzyć nim napięcie np.: baterii? Tak, ale tylko, gdy będziesz bardzo ostrożny. Pamiętaj, że podłączenie napięcia wyższego od V uszkodzi nieodwracalnie! Dlatego nawet nie próbuj podłączać pod nasz woltomierz baterii V, która znajduje się w zestawie. Jednak jeśli znajdziesz gdzieś najzwyklejszą baterię AA,V (poszukaj w pilotach do TV), to możesz przeprowadzić eksperyment:. Minus (GND) baterii połącz przewodem z masą. Przewód idący od pinu A przyłóż do plusa baterii. Odczytaj napięcie z komputera W moim wypadku, na nowej baterii, odczyt wynosił lekko ponad,v, więc wszystko było w normie. Oczywiście woltomierz taki jest bardzo niedokładny i zbiera dużo zakłóceń (o czym przeczytasz dalej). Więc należy traktować go tylko jako ciekawostkę.

Prosty woltomierz na. Czy widzisz już praktyczne zastosowanie dla pomiarów ADC (inne od woltomierza)? Jeśli nie, to sprawdź poniższe ćwiczenie (w przeciwnym wypadku również testów nigdy za mało). Regulacja pracy programu dzięki ADC Wcześniejszy program miał za zadanie jedynie demonstrować działanie przetwornika. Możemy teraz wykorzystamy potencjometr podłączony do układu, aby wpływać na działanie programu. W tym celu dodajmy do jedną diodę LED. Wartości z przetwornika mieszą się w przedziale 0-0, czyli stosunkowo niewiele. Co stanie się, gdy odczytaną liczbę wykorzystamy jako wartość opóźnienia w programie? Oto najszybszy sposób na zbudowanie urządzenia, które miga diodą z częstotliwością regulowaną potencjometrem: 0 int odczytanawartosc = 0; //Zmienna do przechowywania odczytu ADC pinmode(, OUTPUT); //Konfiguracja wyjść pod diodę LED odczytanawartosc = analogread(a);//odczytanie wartości z ADC digitalwrite(, HIGH);//Włączenie diody delay(odczytanawartosc);//uzależnienie czasu oczekiwania od ADC digitalwrite(, LOW);//Wyłączenie diody

delay(odczytanawartosc);//uzależnienie czasu oczekiwania od ADC Zadanie domowe. Zaobserwuj co dzieje się, w jednej ze skrajnych pozycji potencjometru. Jak myślisz, co jest tego przyczyną? Wskaźnik na diodach Pora na bardziej rozbudowany projekt. Tym razem zależnie od pozycji, w której znajdzie się suwak potencjometru włączymy odpowiednią z diod. Na początku należy podłączyć wszystkie elementy. Moja propozycja podłączenia wygląda tak: Zadanie jest proste, wystarczy podzielić maksymalną wartość, którą możemy odczytać z ADC, czyli 0 przez i na tej podstawie zbudować warunki włączania poszczególnych diod. Jednak możemy wykorzystać do tego bardzo wygną funkcję map(). Jej zastosowanie w praktyce wygląda tak: wartoscprzeskalowana = map(wartoscodczytana, 0, 0,, ); Funkcja ta pozwala na szybkie przeskalowanie pewnej wartości. Jako pierwszy argument podajemy wartość, która ma być skalowana. W naszym przypadku będzie to informacja z przetwornika ADC. Drugi i trzeci parametr, to zakres wartości wejściowej, natomiast ostatnie dwa parametry to zakres wartości wyjściowej (po przeskalowaniu). W wyniku działania powyższej linijki kodu zawsze otrzymamy wartość z zakresu -. W praktyce wykorzystać można to w następujący sposób: 0 0 int odczytanawartosc = 0; pinmode(, OUTPUT); //Konfiguracja wyjść pod diody LED pinmode(, OUTPUT); pinmode(0, OUTPUT); pinmode(, OUTPUT); pinmode(, OUTPUT); odczytanawartosc = analogread(a);//odczytanie wartości z ADC odczytanawartosc = map(odczytanawartosc, 0, 0,, );//Przeskalowanie wartości if (odczytanawartosc == ) { //Pierwszy zakres digitalwrite(, HIGH); digitalwrite(, LOW); digitalwrite(0, LOW); digitalwrite(, LOW); digitalwrite(, LOW); else if (odczytanawartosc == ) { //Drugi zakres digitalwrite(, LOW); digitalwrite(, HIGH); digitalwrite(0, LOW); digitalwrite(, LOW); digitalwrite(, LOW); else if (odczytanawartosc == ) { //Trzeci zakres

digitalwrite(, LOW); digitalwrite(, LOW); 0 digitalwrite(0, HIGH); digitalwrite(, LOW); digitalwrite(, LOW); else if (odczytanawartosc == ) { //Czwarty zakres digitalwrite(, LOW); digitalwrite(, LOW); digitalwrite(0, LOW); digitalwrite(, HIGH); digitalwrite(, LOW); else { //Pozostałe, czyli piąty zakres 0 digitalwrite(, LOW); digitalwrite(, LOW); digitalwrite(0, LOW); digitalwrite(, LOW); digitalwrite(, HIGH); delay(0); //Opóźnienie, aby nie odczytywać ADC zbyt szybko Zdaję sobie sprawę, że doświadczeni programiści mogą łapać się za głowę widząc powyższe warunki. Wszystko jednak pod kontrolą. Już niedługo zajmiemy się konstrukcją switch/case, która ułatwi takie długie warunki Sprawdź co dzieje się z poszczególnymi diodami, gdy kręcisz potencjometrem. Jeśli wszystko zostało poprawnie podłączone, to wraz z przekręcaniem suwaka powinna świecić się inna dioda. Przy jednej ze skrajnych pozycji potencjometru możesz zauważyć, że diody zachowują się dziwnie. Wtedy najlepiej metodą prób i błędów zmienić wartość maksymalną ADC, która ustawiona jest w funkcji map(). U mnie układ zachowywał się poprawnie już przy zmianie z 0 na 0. Zadanie domowe. Jeśli będziesz miał szczęście (dużo zakłóceń w otoczeniu), to możliwe będzie wykonanie bardzo widowiskowego eksperymentu. Wykorzystaj połączony wcześniej układ z diodami. Odłącz przewód idący do potencjometru i pozostaw go w powietrzu. Co się dzieje, gdy zbliżasz rękę do przewodu (nie dotykając końcówki)? U mnie, przy przewodzie wiszącym w powietrzu świeciły się diody, jednak wystarczyło zbliżyć rękę na odległość cm od kabla i zapalały się wtedy wszystkie diody. Masz pomysł dlaczego tak się dzieje? Czekam na Wasze komentarze. Jeśli u Ciebie efekt ten nie jest tak wyraźny możesz do końcówki kabla przymocować antenę np.: ze sreberka. Doświadczenie to powinno utkwić Ci w pamięci jako dowód na to, że nie wolno zostawiać żadnych wejść układu wiszących w powietrzu. Zobacz jakie mogą z tego wynikać problemy! Lampka uruchamiana w ciemności Pora na wykorzystanie nowego elementu oraz zbudowanie czegoś co będzie miało zastosowanie praktyczne. W tym ćwiczeniu wykorzystamy fotorezystor czyli element, którego opór zmienia się pod wpływem padającego światła (im bardziej go oświetlimy, tym mniejsza rezystancja). Z wykorzystaniem potencjometru możemy zbudować dzielnik napięcia, który będzie zależny od ilości światła w otoczeniu. Złóż układ zgodnie z poniższym rysunkiem. Fotorezystor powinien tworzyć dzielnik wraz z rezystorem k.

W momencie, kiedy na fotorezystor pada duża ilość światła, jego rezystancja jest minimalna i w punkcie, który podłączony jest do panuje stosunkowo wysokie napięcie. Gdy światło przestaje świecić, rezystancja fotorezystora wzrasta, i napięcie na dzielniku jest niskie. Dysponując takim układem jesteśmy w stanie stworzyć lampkę, która uruchomi się po zmroku. Kod jest bardzo prosty (jak zawsze): 0 int odczytanawartosc = 0; //Zmienna do przechowywania odczytu ADC pinmode(, OUTPUT); //Konfiguracja wyjść pod diodę LED odczytanawartosc = analogread(a);//odczytanie wartości z ADC if (odczytanawartosc < 00) { digitalwrite(, HIGH);//Włączenie diody else { digitalwrite(, LOW);//Wyłączenie diody delay(0); Jak widać znajduje się tam warunek, który odpowiada za włączenie lub wyłączenie diody. Pytanie jak dobrać tę wartość przełączenia? Najlepiej ręcznie U siebie ustawiłem ją na początku na 00 i stopniowo zmniejszałem, aż dioda uruchamiała się w odpowiednim momencie (gdy zakryłem czujnik ręką). Wystarczy teraz zamiast niebieskiej diody podłączyć kilka mocniejszych białych (przez tranzystor) i już możemy chwalić się działającą lampką, która sama będzie wiedziała kiedy ma świecić. Co jednak, gdy przeniesiemy ją do innego pokoju, gdzie będą minimalne inne warunki? Czy znowu będziemy musieli programować kilka razy, aby dobrać odpowiedni próg? Tak, chyba, że Lampka uruchamiana w ciemności v Tym razem zadanie jest oczywiste. Tak jak wcześniej, chcemy stworzyć lampkę, która będzie uruchamiała się po zmroku. Powinna być ona jednak znacznie łatwiejsza w regulacji. Masz pomysł jak tego dokonać? Ja wykorzystałem potencjometr podłączony pod kolejne wejście analogowe (A): Zamiast uzależniać włączenie diody od sztywnej granicy możemy teraz płynnie regulować próg włączenia za pomocą potencjometru. Zmiana w programie jest bardzo prosta i ogranicza się do edycji linijek kodu: int odczytanawartosc = 0; //Zmienna do przechowywania odczytu ADC int prog = 0; //Próg włączenia światła - ustawiany potencjometrem pinmode(, OUTPUT); //Konfiguracja wyjść pod diodę LED

0 odczytanawartosc = analogread(a);//odczytanie wartości z ADC prog = analogread(a);//odczytanie wartości z ADC if (odczytanawartosc < prog) { //Czy jest ciemniej od ustawionego progu? digitalwrite(, HIGH);//Włączenie diody else { digitalwrite(, LOW);//Wyłączenie diody delay(0); Jak najszybciej dostroić układ?. Połóż urządzenie w świetle, przy którym dioda ma być wyłączona. Przekręć potencjometr na pozycję tuż za miejscem, gdy gaśnie dioda. Gotowe! Od teraz minimalne zasłonięcie fotorezystora powinno włączyć nasze symboliczne oświetlenie! Używanie ADC jest bardzo proste, dlatego pora na samodzielną pracę z zadaniami domowymi. Pamiętaj, aby dobrze opanować wszystkie lekcje. Z czasem będziemy w programach używać wielu funkcji. Nie będzie wtedy dużo czasu na wracanie do podstaw! Zadanie domowe. Rozbuduj program inteligentnej lampki, tak aby w momencie włączenia diody wysyłał (raz) do PC informację jakie napięcie pojawiło się na dzielniku. Zadanie domowe. Spróbuj napisać prostą gre. Po uruchomieniu programu należy przekręcić potencjometr w losowe miejsce i wcisnąć przycisk. Wtedy powinno wyświetlić na PC komunikat: Podaj liczbę: Jeśli wysłana do liczba będzie zgadzała się z odczytem ADC o +/- 0, to gracz wygrywa. W przeciwnym wypadku włącza się żółta dioda i gracz ma jeszcze próby. Gdy za każdym razem zostanie wpisana zła liczba, to na płytce stykowej włącza się czerwona dioda. Natomiast w przypadku wygranej zielona. Zadanie domowe. Wykorzystaj dwa fotorezystory w roli osobnych dzielników napięcia. Umieść je po skrajnych stronach płytki stykowej. Najlepiej będzie, gdy odchylisz je nawet minimalnie na zewnątrz. Wyświetl wartości obu czujników w terminalu. Co się dzieje, gdy machasz ręką przed płytką (robiąc cień) lub świecisz w nią latarką? Czy analizując równicę między pomiarami z dwóch czujników jesteś w stanie napisać program, który określi, po której stronie płytki znajduje się silniejsze źródło światła? Spróbuj wskazać kierunek na diodach (bardziej w lewo, środek, bardziej w prawo itd.)! Częste pytanie o książki Dodatkowy akapit dedykuje osobom zainteresowanych książkami o. Całkiem często otrzymuję pytania, którą pozycje wybrać. Moim zdaniem, w tej chwili, warto wybierać pomiędzy:. dla początkujących. Podstawy i szkice. w akcji

Podsumowanie W tej części kursu opisałem, moim zdaniem, jedno z najciekawszych peryferiów, czyli ADC. Z przetworników analogowych korzysta się bardzo często, gdy układ odczytuje jakieś informacje z zewnątrz. Co ważne ADC dostępne są nie tylko w, więc praktyczna wiedza z tej części zawsze będzie aktualna. Pamiętaj, że komplet elementów niezbędnych do przeprowadzenia wszystkich ćwiczeń jest dostępny w Botlandzie. Zakup zestawów wspiera kolejne publikacje na Forbocie! W wolnej chwili polecamy również Forbotowy kurs elektroniki >> Jak zawsze czekam na Wasze komentarze i sugestie! Powodzenia w budowie własnych urządzeń, zachęcam do eksperymentowania, koniecznie w praktyce!