Innehållsförteckning:

Ändra LED -färger med en POT och ATTINY85: 3 steg
Ändra LED -färger med en POT och ATTINY85: 3 steg

Video: Ändra LED -färger med en POT och ATTINY85: 3 steg

Video: Ändra LED -färger med en POT och ATTINY85: 3 steg
Video: attiny 85 PS3 fan controller 2024, November
Anonim
Ändra LED -färger med en POT och ATTINY85
Ändra LED -färger med en POT och ATTINY85
Ändra LED -färger med en POT och ATTINY85
Ändra LED -färger med en POT och ATTINY85
Ändra LED -färger med en POT och ATTINY85
Ändra LED -färger med en POT och ATTINY85

I detta projekt använder vi en potentiometer (POT) för att ändra färgerna i en LED med en ATTINY85.

Några definitioner -

En potentiometer är en enhet med en liten skruv / vridmekanism som vid vridning ger olika elektriska motstånd. Du kan se från den kommenterade bilden ovan att POT har tre stift, nämligen +, - och utmatning. POT drivs genom att ansluta + och - stiften till vcc respektive jord på en strömförsörjning. När POT -skruven vrids ändras utgångsmotståndet och gör att lysdioden minskar eller ökar i intensitet.. Med andra ord är det ett variabelt motstånd. De används i saker som hemljusdämpare.

LED - Detta är ett litet ljus som lyser när elektrisk ström passerar genom det. I det här fallet kommer vi att använda en mångfärgad LED som har 3 stift, en mark (mitten) och två stift som visar grönt respektive rött när de utlöses.

ATTINY85-det här är ett litet billigt mikrochip som du kan programmera som en Arduino.

Översikt - Utgången från POT är ansluten till ATTINY85. När POT -skruven vrids utmatas ett differensmotstånd som ett tal mellan 0 och 255. ATTINY kan mäta detta och vidta olika åtgärder beroende på värdet på POT -motståndet. I det här fallet har vi programmerat den för att ansluta till lysdioden enligt följande.

Om siffran är större än 170 växlar lysdioden till GRÖN.

Om siffran är mindre än 170 men större än 85 växlar lysdioden till RÖD.

om antalet är mindre än 85, slå på LED GRÖN OCH RÖD vilket resulterar i ORANGE.

BOM

1 x 3 -stifts LED 1 x ATTINY 85

1 x POT (B100K)

1 x brödbräda och kablar

1 strömförsörjning.

Steg 1: Programmering av ATTINY85

När det gäller programmering av ATTINY85, vänligen se min tidigare instruerbara-https://www.instructables.com/id/15-Dollar-Attiny8…

Koden visas nedan. Några punkter att notera är att två ATTINY -stift, PB3, fysisk stift 2, PB2, fysisk stift 7, är anslutna, i digitalt läge, till lysdioden för att åstadkomma färgändring. ATTINY pin PB4, fysisk pin 3, är ansluten till POT i analogt läge, vilket innebär att den kan läsa värden mellan 0 och 254. Jag anpassade kod som jag hittade på internet så jag erkänner att det fungerar. -

ogiltig 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 - ingång för POT // pb3 ledstift 1 // pb2 ledstift 3 // ATTINY 85 frekvens inställd på intern 8 MHz/* denna funktion initierar ADC

ADC förkalkningsanteckningar:

ADC Prescaler måste ställas in så att ADC -ingångsfrekvensen ligger mellan 50 - 200 kHz.

För mer information, se tabell 17.5 "ADC Prescaler Selections" i kapitel 17.13.2 "ADCSRA - ADC Control and Status Register A" (sidorna 140 och 141 i det kompletta ATtiny25/45/85 databladet, Rev. 2586M – AVR – 07/ 10)

Giltiga förkalkningsvärden för olika klockhastigheter

Klocka Tillgängliga förkalkningsvärden --------------------------------------- 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)

Nedanstående exempel ställer in förskalare på 128 för mcu som körs på 8MHz

(kontrollera databladet för de rätta bitvärdena för att ställa in förkalkningsanläggningen) */

// 8-bitars upplösning

// ställ in ADLAR på 1 för att aktivera vänster-skiftresultatet (endast bitar ADC9.. ADC2 är tillgängliga) // då räcker det bara med läsning av ADCH för 8-bitars resultat (256 värden) DDRB | = (1 << PB3); // Stift anges som en utgång. DDRB | = (1 << PB2); // Stift anges som en utgång. ADMUX = (1 << ADLAR) | // vänster skiftresultat (0 << REFS1) | // Ställer in ref. spänning till VCC, bit 1 (0 << REFS0) | // Ställer in ref. spänning till VCC, bit 0 (0 << MUX3) | // använd ADC2 för ingång (PB4), MUX bit 3 (0 << MUX2) | // använd ADC2 för ingång (PB4), MUX bit 2 (1 << MUX1) | // använd ADC2 för ingång (PB4), MUX bit 1 (0 << MUX0); // använd ADC2 för ingång (PB4), MUX bit 0

ADCSRA =

(1 << ADEN) | // Aktivera ADC (1 << ADPS2) | // ställ in förkalkning på 64, bit 2 (1 << ADPS1) | // ställ in förkalkningsmedel på 64, bit 1 (0 << ADPS0); // ställ in förkalkningsmedel på 64, bit 0}

int main (void)

{initADC ();

medan (1)

{

ADCSRA | = (1 << ADSC); // starta ADC -mätning medan (ADCSRA & (1 << ADSC)); // vänta tills konverteringen är klar

om (ADCH> 170)

{PORTB | = (1 << PB3); // Pin inställd på HIGH. PORTB | = (1 << PB2); // Pin inställd på HIGH. } annat om (ADCH 85) {PORTB | = (1 << PB3); // Pin inställd på HIGH. PORTB & = ~ (1 << PB2); // Pin inställd på LOW

} annat {

PORTB | = (1 << PB2); // Pin inställd på HIGH. PORTB & = ~ (1 << PB3); // Stift inställd på LÅG

}

}

returnera 0;

}

Steg 2: Krets

Krets
Krets

ATTINY stift

PB3, fysisk stift 2 - ansluten LED -stift 1

PB4, fysisk stift 3, är ansluten till mittstiftet POT

GND, fysisk stift 4, är ansluten till den negativa skenan - strömförsörjning

PB2, fysisk stift 7 - ansluten LED -stift 3

VCC, fysisk stift 8, är ansluten till den positiva skenan - strömförsörjning

POTT

pos och neg stift ansluten till respektive skenor - strömförsörjning.

LED

mittstiftet anslutet till den negativa skenan - strömförsörjning

Jag experimenterade med en 3 och 3,3 volt strömförsörjning och båda fungerade.

Steg 3: Slutsats

Slutsats
Slutsats

ATTINY85: s förmåga att flytta mellan analogt och digitalt läge är mycket kraftfullt och kan användas i ett antal olika applikationer, t.ex. köra motorer med variabel hastighet och skapa musiknoter. Jag kommer att utforska detta i framtida instruktioner. Jag hoppas att du har funnit detta användbart.

Rekommenderad: