Inhoudsopgave:

Verander LED-kleuren met behulp van een POT en ATTINY85 - Ajarnpa
Verander LED-kleuren met behulp van een POT en ATTINY85 - Ajarnpa

Video: Verander LED-kleuren met behulp van een POT en ATTINY85 - Ajarnpa

Video: Verander LED-kleuren met behulp van een POT en ATTINY85 - Ajarnpa
Video: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Juli-
Anonim
Verander LED-kleuren met een POT en ATTINY85
Verander LED-kleuren met een POT en ATTINY85
Verander LED-kleuren met een POT en ATTINY85
Verander LED-kleuren met een POT en ATTINY85
Verander LED-kleuren met een POT en ATTINY85
Verander LED-kleuren met een POT en ATTINY85

In dit project gebruiken we een potentiometer (POT) om de kleuren in een LED te veranderen met behulp van een ATTINY85.

Enkele definities -

Een potentiometer is een apparaat met een klein schroef-/draaimechanisme dat bij draaien verschillende elektrische weerstanden afgeeft. Je kunt aan de geannoteerde afbeelding hierboven zien dat de POT 3 pinnen heeft, namelijk +, - en output. De POT wordt gevoed door de + en - pinnen aan te sluiten op respectievelijk vcc en aarde op een voeding. Als de POT-schroef wordt gedraaid, verandert de uitgangsweerstand en zorgt ervoor dat de LED in intensiteit afneemt of toeneemt.. Met andere woorden, het is een variabele weerstand. Ze worden bijvoorbeeld gebruikt in dimmers voor thuisverlichting.

LED - Dit is een klein lampje dat gaat branden wanneer er elektrische stroom doorheen gaat. In dit geval gebruiken we een veelkleurige LED met 3 pinnen, een aarde (midden) en twee pinnen die respectievelijk groen en rood zijn wanneer ze worden geactiveerd.

ATTINY85 - dit is een kleine goedkope microchip die je kunt programmeren als een Arduino.

Overzicht - De uitgang van de POT is verbonden met de ATTINY85. Als de POT-schroef wordt gedraaid, wordt een verschilweerstand weergegeven als een getal tussen 0 en 255. De ATTINY kan dit meten en verschillende acties ondernemen, afhankelijk van de waarde van de POT-weerstand. In dit geval hebben we het als volgt geprogrammeerd om verbinding te maken met de LED.

Als het aantal groter is dan 170, schakelt u de LED naar GROEN.

Als het aantal kleiner is dan 170 maar groter dan 85, schakelt u de LED op ROOD.

als het aantal kleiner is dan 85, schakelt u LED GROEN EN ROOD in, wat ORANJE oplevert.

stuklijst

1 x 3-pins LED1 x ATTINY 85

1 x POT (B100K)

1 x breadboard en kabels

1 voeding.

Stap 1: Programmeren van de ATTINY85

Raadpleeg mijn vorige instructable voor het programmeren van de ATTINY85 -

De code wordt hieronder getoond. Enkele aandachtspunten zijn dat twee ATTINY-pinnen, PB3, fysieke pin 2, PB2, fysieke pin 7, in digitale modus zijn aangesloten op de LED om kleurverandering te bewerkstelligen. ATTINY pin PB4, fysieke pin 3, is in analoge modus verbonden met de POT, wat betekent dat het waarden tussen 0 en 254 kan lezen. Ik heb de code aangepast die ik op internet heb gevonden, dus ik erken dat werk. -

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 - ingang voor POT //pb3 led pin 1 //pb2 led pin 3 // ATTINY 85 frequentie ingesteld op intern 8 MHz /* deze functie initialiseert de ADC

ADC Prescaler Opmerkingen:

ADC Prescaler moet zo worden ingesteld dat de ADC-ingangsfrequentie tussen 50 - 200 kHz ligt.

Voor meer informatie, zie tabel 17.5 "ADC Prescaler Selections" in hoofdstuk 17.13.2 "ADCSRA – ADC Control and Status Register A" (pagina's 140 en 141 op de volledige ATtiny25/45/85 datasheet, Rev. 2586M–AVR–07/ 10)

Geldige prescaler-waarden voor verschillende kloksnelheden

Klok Beschikbare prescaler-waarden --------------------------------------- 1 MHz 8 (125 kHz), 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)

Stel in onderstaand voorbeeld prescaler in op 128 voor mcu die draait op 8MHz

(controleer de datasheet voor de juiste bitwaarden om de prescaler in te stellen) */

// 8-bits resolutie

// stel ADLAR in op 1 om het resultaat van de linkerverschuiving in te schakelen (alleen bits ADC9.. ADC2 zijn beschikbaar) // dan is alleen het lezen van ADCH voldoende voor 8-bits resultaten (256 waarden) DDRB |= (1 << PB3); //Pin is ingesteld als uitvoer. DDRB |= (1 << PB2); //Pin is ingesteld als uitvoer. ADMUX = (1 << ADLAR) | // linker shift resultaat (0 << REFS1) | // Sets ref. spanning naar VCC, bit 1 (0 << REFS0) | // Sets ref. spanning naar VCC, bit 0 (0 << MUX3) | // gebruik ADC2 voor invoer (PB4), MUX bit 3 (0 << MUX2) | // gebruik ADC2 voor invoer (PB4), MUX bit 2 (1 << MUX1) | // gebruik ADC2 voor invoer (PB4), MUX bit 1 (0 << MUX0); // gebruik ADC2 voor invoer (PB4), MUX bit 0

ADCSRA =

(1 << ADEN) | // ADC inschakelen (1 << ADPS2) | // stel prescaler in op 64, bit 2 (1 << ADPS1) | // stel prescaler in op 64, bit 1 (0 << ADPS0); // stel prescaler in op 64, bit 0}

int hoofd(void)

{ initADC();

terwijl(1)

{

ADCSRA |= (1 << ADSC); // start ADC-meting terwijl (ADCSRA & (1 << ADSC)); // wacht tot de conversie is voltooid

indien (ADCH > 170)

{ PORTB |= (1 << PB3); //Pin ingesteld op HOOG. PORTB |= (1 << PB2); //Pin ingesteld op HOOG. } else if (ADCH 85) { PORTB |= (1 << PB3); //Pin ingesteld op HOOG. PORTB &= ~(1 << PB2); //Pin ingesteld op LAAG

} anders {

PORTB |= (1 << PB2); //Pin ingesteld op HOOG. PORTB &= ~(1 << PB3); //Pin ingesteld op LAAG

}

}

retourneer 0;

}

Stap 2: Circuit

Stroomkring
Stroomkring

ATTINY pinnen

PB3, fysieke pin 2 - aangesloten LED pin 1

PB4, fysieke pin 3, is verbonden met de middelste pin POT

GND, fysieke pin 4, is verbonden met de negatieve rail - voeding

PB2, fysieke pin 7 - aangesloten LED pin 3

VCC, fysieke pin 8, is verbonden met de positieve rail - voeding

POT

pos en neg pin aangesloten op respectievelijke rails - voeding.

LED

middelste pin aangesloten op de negatieve rail - voeding

Ik heb geëxperimenteerd met een voeding van 3 en 3,3 volt en beide werkten.

Stap 3: Conclusie

Conclusie
Conclusie

Het vermogen van de ATTINY85 om te schakelen tussen analoge en digitale modus is zeer krachtig en kan in een aantal verschillende toepassingen worden gebruikt, b.v. het besturen van motoren met variabele snelheid en het maken van muzieknoten. Ik zal dit in toekomstige instructables onderzoeken. Ik hoop dat je dit nuttig vond.

Aanbevolen: