Spisu treści:
- Krok 1: Napięcie zasilania
- Krok 2: Temperatura wewnętrzna
- Krok 3: Komparator analogowy (przerwanie)
- Krok 4: Licznik
- Krok 5: Predefiniowane stałe
- Krok 6: Zachowaj zmienną w pamięci RAM przez zresetowanie
- Krok 7: Uzyskaj dostęp do sygnału zegara
- Krok 8: Wewnętrzna struktura portu ATmega328P
- Krok 9: Wbudowana (wbudowana) dioda LED jako fotodetektor
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Jest to raczej zestawienie nieczęsto wymienianych cech platform Arduino, które są zazwyczaj używane (np. Uno, Nano). Ta aukcja powinna służyć jako odniesienie, gdy chcesz sprawdzić te funkcje i rozpowszechniać informacje.
Spójrz na kod, aby zobaczyć przykłady wszystkich tych funkcji, ponieważ użyłem ich w kilku moich projektach tutaj na instrukcji (np. Wyświetlacz 1-przewodowy Arduino (144 znaków)). Poniższe kroki wyjaśniają po jednej funkcji.
Krok 1: Napięcie zasilania
Arduino może mierzyć własne napięcie zasilania w sposób pośredni. Mierząc wewnętrzne odniesienie z napięciem zasilania jako górną granicą odniesienia, można uzyskać stosunek między wewnętrznym odniesieniem a napięciem zasilania (napięcie zasilania działa jako górna granica dla odczytu analogowego/ADC). Ponieważ znasz dokładną wartość wewnętrznego napięcia odniesienia, możesz obliczyć napięcie zasilania.
Aby uzyskać szczegółowe informacje, jak to zrobić, w tym przykładowy kod, zobacz:
- Tajny woltomierz Arduino – pomiar napięcia akumulatora:
- Czy Arduino może zmierzyć własnego Vin?:
Krok 2: Temperatura wewnętrzna
Niektóre Arduino są wyposażone w wewnętrzny czujnik temperatury, dzięki czemu mogą mierzyć swoją wewnętrzną (półprzewodnikową) temperaturę.
Aby uzyskać dokładne informacje, jak to zrobić, w tym przykładowy kod, zobacz:
Wewnętrzny czujnik temperatury:
Czy Arduino może zmierzyć własnego Vin?:
Krok 3: Komparator analogowy (przerwanie)
Arduino może skonfigurować komparator analogowy między pinami A0 i A1. Czyli jeden podaje poziom napięcia, a drugi jest sprawdzany pod kątem przekroczenia tego napięcia. Przerwanie zostaje podniesione w zależności od tego, czy przecięcie jest zboczem narastającym, czy opadającym (lub obydwoma). Przerwanie może być następnie przechwycone przez oprogramowanie i odpowiednio wykonane.
Aby uzyskać dokładne informacje, jak to zrobić, w tym przykładowy kod, zobacz:
Przerwanie komparatora analogowego:
Krok 4: Licznik
Oczywiście AVR zawiera kilka liczników. Zwykle są one używane do ustawiania timera o różnych częstotliwościach i podnoszenia przerwań w razie potrzeby. Innym może być bardzo staromodnym zastosowaniem jest użycie ich jako liczników bez dodatkowej magii, po prostu odczytaj wartość, kiedy jej potrzebujesz (sonda). Ciekawym zastosowaniem tego może być odrzucenie przycisków, np. Przywołaj na przykład ten post: AVR Przykład licznika T1
Krok 5: Predefiniowane stałe
Istnieje kilka predefiniowanych zmiennych, których można użyć do dodania informacji o wersji i kompilacji do projektu.
Aby uzyskać szczegółowe informacje, jak to zrobić, w tym przykładowy kod, zobacz:
Serial.println(_DATA_); // data kompilacji
Serial.println(_TIME_); // czas kompilacji
Ciąg Ciąg Jeden = Ciąg (ARDUINO, DEC);
Serial.println(ciągJeden); // wersja arduino ide
Serial.println(_WERSJA_); // wersja gcc
Serial.println(_PLIK_); // plik skompilowany
te fragmenty kodu wyprowadzą te dane do konsoli szeregowej.
Krok 6: Zachowaj zmienną w pamięci RAM przez zresetowanie
Powszechnie wiadomo, że Arduino Uno (ATmega328) ma wewnętrzną pamięć EEPROM, która pozwala zachować wartości i ustawienia podczas wyłączania zasilania i przywrócić je przy następnym włączeniu. Nie tak dobrze znanym faktem może być to, że faktycznie możliwe jest zachowanie wartości podczas resetowania nawet w pamięci RAM - jednak wartości są tracone podczas cyklu zasilania - ze składnią:
unsigned long variable_that_is_preserved _attribute_ ((sekcja (".noinit")));
Pozwala to np. zliczyć liczbę RESETÓW, a przy użyciu EEPROM także liczbę uruchomień.
Aby uzyskać szczegółowe informacje, jak to zrobić, w tym przykładowy kod, zobacz:
- Zachowaj zmienną w pamięci RAM poprzez Reset:
- Biblioteka EEPROM:
Krok 7: Uzyskaj dostęp do sygnału zegara
Arduino i inne AVR (takie jak ATtiny) mają wewnętrzny zegar, dzięki czemu można je uruchomić bez użycia zewnętrznego oscylatora kwarcowego. Ponadto w tym samym czasie są również w stanie podłączyć ten sygnał na zewnątrz, umieszczając go na bolcu (np. PB4). Trudne jest to, że musisz zmienić bity bezpieczników chipów, aby włączyć tę funkcję, a zmiana bitów fuse zawsze wiąże się z ryzykiem zepsucia chipa.
Musisz włączyć bezpiecznik CKOUT, a najprostszym sposobem na to jest postępowanie zgodnie z instrukcją Jak zmienić bity bezpiecznika w AVR Atmega328p - 8-bitowy mikrokontroler za pomocą Arduino.
Aby uzyskać dokładne informacje, jak to zrobić, w tym przykładowy kod, zobacz:
- Tuning wewnętrzny oscylator ATtiny:
- Jak zmienić bity bezpiecznika AVR Atmega328p - 8-bitowy mikrokontroler za pomocą Arduino:
Krok 8: Wewnętrzna struktura portu ATmega328P
Znajomość wewnętrznej struktury portów ATmega328P pozwala nam wyjść poza standardowe ograniczenia użytkowania. Więcej szczegółów i schemat obwodu wewnętrznego można znaleźć w rozdziale o mierniku pojemności dla zakresu od 20 pF do 1000 nF.
Prostym przykładem jest użycie przycisków z portami cyfrowymi, które nie wymagają żadnego rezystora ze względu na użycie wewnętrznego rezystora podciągającego, jak pokazano w przykładzie szeregowym Input Pullup lub instruktażowym przycisku Arduino bez rezystora.
Bardziej zaawansowane jest wykorzystanie tej wiedzy, jak wspomniano, do pomiaru kondensatorów tak małych jak 20 pF, a ponadto bez dodatkowego okablowania! Aby osiągnąć tę wydajność, przykład wykorzystuje impedancję wewnętrzną/wejściową, wewnętrzny rezystor podciągający i kondensator rozproszenia. Porównaj z samouczkiem Arduino CapacitanceMeter, który nie może być niższy niż kilka nF.
Krok 9: Wbudowana (wbudowana) dioda LED jako fotodetektor
Wiele płyt Arduino ma wbudowane lub wbudowane diody LED, którymi można sterować za pomocą kodu, np. płytki Uno lub Nano na pinie 13. Dodając jeden przewód z tego pinu do pinu wejścia analogowego (np. A0) możemy również użyć tej diody LED jako fotodetektora. Może to być używane na wiele różnych sposobów, takich jak; użyj do pomiaru oświetlenia otoczenia, użyj diody LED jako przycisku, użyj diody LED do komunikacji dwukierunkowej (PJON AnalogSampling) itp.