Spisu treści:

Zmień kolory LED za pomocą POT i ATTINY85: 3 kroki
Zmień kolory LED za pomocą POT i ATTINY85: 3 kroki

Wideo: Zmień kolory LED za pomocą POT i ATTINY85: 3 kroki

Wideo: Zmień kolory LED za pomocą POT i ATTINY85: 3 kroki
Wideo: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Lipiec
Anonim
Zmień kolory LED za pomocą POT i ATTINY85
Zmień kolory LED za pomocą POT i ATTINY85
Zmień kolory LED za pomocą POT i ATTINY85
Zmień kolory LED za pomocą POT i ATTINY85
Zmień kolory LED za pomocą POT i ATTINY85
Zmień kolory LED za pomocą POT i ATTINY85

W tym projekcie używamy potencjometru (POT) do zmiany kolorów w LED za pomocą ATTINY85.

Niektóre definicje -

Potencjometr to urządzenie z małą śrubką/mechanizmem obrotowym, które po obróceniu wytwarza różne rezystancje elektryczne. Na powyższym obrazku z adnotacjami widać, że POT ma 3 piny, a mianowicie +, - i wyjście. POT jest zasilany przez podłączenie pinów + i - odpowiednio do vcc i uziemienia na zasilaczu. Gdy śruba POT jest obracana, rezystancja wyjściowa zmienia się i powoduje zmniejszenie lub zwiększenie intensywności diody LED.. Innymi słowy jest to rezystor zmienny. Są używane w takich rzeczach jak domowe ściemniacze światła.

LED - Jest to małe światło, które zapala się, gdy przepływa przez nie prąd elektryczny. W tym przypadku użyjemy wielokolorowej diody LED, która ma 3 styki, jedną masę (środek) i dwa styki, które po uruchomieniu pokazują się odpowiednio na zielono i czerwono.

ATTINY85 - jest to mały, tani mikrochip, który można programować jak Arduino.

Przegląd - Wyjście z POT jest podłączone do ATTINY85. Gdy śruba POT jest obracana, różnica rezystancji jest wyprowadzana jako liczba od 0 do 255. ATTINY może to zmierzyć i podjąć różne działania w zależności od wartości rezystancji POT. W tym przypadku zaprogramowaliśmy go tak, aby łączył się z diodą LED w następujący sposób.

Jeśli liczba jest większa niż 170, przełącz diodę na ZIELONĄ.

Jeśli liczba jest mniejsza niż 170, ale większa niż 85, przełącz diodę LED na CZERWONĄ.

jeśli liczba jest mniejsza niż 85, włącz ZIELONĄ I CZERWONĄ DIODĘ, co spowoduje kolor POMARAŃCZOWY.

BOM

1 x 3 pin LED1 x ATTINY 85

1 x garnek (B100K)

1 x płytka stykowa i kable

1 zasilacz.

Krok 1: Programowanie ATTINY85

Jeśli chodzi o programowanie ATTINY85, zapoznaj się z moją poprzednią instrukcją -

Kod pokazano poniżej. Należy zauważyć, że dwa piny ATTINY, PB3, fizyczny pin 2, PB2, fizyczny pin 7 są połączone w trybie cyfrowym z diodą LED, aby zmienić kolor. ATTINY pin PB4, fizyczny pin 3, jest podłączony do POT w trybie analogowym, co oznacza, że może odczytywać wartości od 0 do 254. Spersonalizowałem kod, który znalazłem w internecie, więc potwierdzam, że działa. -

void initADC(){ // *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ============= =========================================================== ============================== // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // * ** (PCINT4/XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/ DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0) // *** //pb4 - wejście dla POT //pb3 led pin 1 //pb2 led pin 3 // ATTINY 85 częstotliwość ustawiona na 8 MHz /* ta funkcja inicjuje ADC

Uwagi dotyczące wstępnego skalowania ADC:

Preskaler ADC musi być ustawiony tak, aby częstotliwość wejściowa ADC mieściła się w zakresie 50 - 200 kHz.

Aby uzyskać więcej informacji, patrz tabela 17.5 „Wybór preskalera ADC” w rozdziale 17.13.2 „ADCSRA – Rejestr kontroli i stanu ADC A” (strony 140 i 141 w pełnej karcie katalogowej ATtiny25/45/85, wersja 2586M–AVR–07/ 10)

Prawidłowe wartości preskalera dla różnych częstotliwości zegara

Zegar Dostępne wartości preskalera --------------------------------------- 1 MHz 8 (125kHz), 16 (62,5 kHz) 4 MHz 32 (125 kHz), 64 (62,5 kHz) 8 MHz 64 (125 kHz), 128 (62,5 kHz) 16 MHz 128 (125 kHz)

Poniższy przykład ustaw preskaler na 128 dla mcu działającego przy 8 MHz

(sprawdź w arkuszu danych właściwe wartości bitów, aby ustawić preskaler) */

// 8-bitowa rozdzielczość

// ustaw ADLAR na 1, aby włączyć wynik przesunięcia w lewo (dostępne są tylko bity ADC9.. ADC2) // wtedy tylko odczyt ADCH jest wystarczający dla wyników 8-bitowych (256 wartości) DDRB |= (1 << PB3); //Pin jest ustawiony jako wyjście. DDRB |= (1 << PB2); //Pin jest ustawiony jako wyjście. ADMUX = (1 << ADLAR) | // wynik przesunięcia w lewo (0 << REFS1) | // Ustawia ref. napięcie do VCC, bit 1 (0 << REFS0) | // Ustawia ref. napięcie do VCC, bit 0 (0 << MUX3) | // użyj ADC2 dla wejścia (PB4), MUX bit 3 (0 << MUX2) | // użyj ADC2 dla wejścia (PB4), MUX bit 2 (1 << MUX1) | // użyj ADC2 dla wejścia (PB4), MUX bit 1 (0 << MUX0); // użyj ADC2 dla wejścia (PB4), MUX bit 0

ADCSRA =

(1 << ADEN) | // Włącz ADC (1 << ADPS2) | // ustaw preskaler na 64, bit 2 (1 << ADPS1) | // ustaw preskaler na 64, bit 1 (0 << ADPS0); // ustaw preskaler na 64, bit 0 }

int główny (unieważniony)

{ initADC();

póki(1)

{

ADCSRA |= (1 << ADSC); // rozpocznij pomiar ADC while (ADCSRA & (1 << ADSC)); // poczekaj na zakończenie konwersji

jeśli (ADCH > 170)

{ PORTB |= (1 << PB3); //Przypnij ustawiony na WYSOKI. PORTB |= (1 << PB2); //Przypnij ustawiony na WYSOKI. } else if (ADCH 85) { PORTB |= (1 << PB3); //Przypnij ustawiony na WYSOKI. PORTB &= ~(1 << PB2); //Pin ustawiony na LOW

} w przeciwnym razie {

PORTB |= (1 << PB2); //Przypnij ustawiony na WYSOKI. PORTB &= ~(1 << PB3); //Pin ustawiony na LOW

}

}

zwróć 0;

}

Krok 2: Obwód

Okrążenie
Okrążenie

Szpilki ATTINY

PB3, fizyczny pin 2 - podłączony LED pin 1

PB4, fizyczny pin 3, jest podłączony do środkowego pinu POT

GND, fizyczny pin 4, jest podłączony do szyny ujemnej - zasilanie

PB2, fizyczny pin 7 - podłączony LED pin 3

VCC, fizyczny pin 8, jest podłączony do szyny dodatniej - zasilanie

GARNEK

pos i neg pin podłączone do odpowiednich szyn - zasilanie.

PROWADZONY

środkowy pin połączony z szyną ujemną - zasilanie

Eksperymentowałem z zasilaczem 3 i 3,3 V i oba działały.

Krok 3: Wniosek

Wniosek
Wniosek

Zdolność ATTINY85 do przechodzenia między trybem analogowym i cyfrowym jest bardzo potężna i może być wykorzystywana w wielu różnych aplikacjach, np. napędzanie silników o zmiennej prędkości i tworzenie nut. Zbadam to w przyszłych instrukcjach. Mam nadzieję, że okazało się to przydatne.

Zalecana: