Cambie los colores del LED usando un POT y ATTINY85: 3 pasos
Cambie los colores del LED usando un POT y ATTINY85: 3 pasos
Anonim
Cambiar los colores del LED usando un POT y ATTINY85
Cambiar los colores del LED usando un POT y ATTINY85
Cambiar los colores del LED usando un POT y ATTINY85
Cambiar los colores del LED usando un POT y ATTINY85
Cambiar los colores de los LED con un POT y ATTINY85
Cambiar los colores de los LED con un POT y ATTINY85

En este proyecto usamos un potenciómetro (POT) para cambiar los colores en un LED usando un ATTINY85.

Algunas definiciones -

Un potenciómetro es un dispositivo con un pequeño tornillo / mecanismo giratorio que cuando se gira genera diferentes resistencias eléctricas. Puede ver en la imagen anotada de arriba que el POT tiene 3 pines, a saber, +, - y salida. El POT se alimenta conectando los pines + y - a vcc y tierra respectivamente en una fuente de alimentación. A medida que se gira el tornillo POT, la resistencia de salida cambia y hace que la intensidad del LED disminuya o aumente.. En otras palabras, es una resistencia variable. Se utilizan en cosas como atenuadores de luz para el hogar.

LED: esta es una pequeña luz que se ilumina cuando la corriente eléctrica pasa a través de ella. En este caso, usaremos un LED multicolor que tiene 3 pines, uno de tierra (medio) y dos pines que se muestran en verde y rojo respectivamente cuando se disparan.

ATTINY85: este es un pequeño microchip de bajo costo que puede programar como un Arduino.

Descripción general: la salida del POT está conectada al ATTINY85. A medida que se gira el tornillo POT, se emite una resistencia diferencial como un número entre 0 y 255. ATTINY puede medir esto y tomar diferentes acciones dependiendo del valor de la resistencia POT. En este caso, lo hemos programado para que se conecte al LED de la siguiente manera.

Si el número es mayor que 170, cambie el LED a VERDE.

Si el número es menor que 170 pero mayor que 85, cambie el LED a ROJO.

si el número es menor que 85, encienda el LED VERDE Y ROJO que resulta en NARANJA.

BOM

1 x LED de 3 pines 1 x ATTINY 85

1 x BOTE (B100K)

1 x tablero y cables

1 fuente de alimentación.

Paso 1: Programación del ATTINY85

En términos de programación del ATTINY85, consulte mi instructable anterior:

El código se muestra a continuación. Algunos puntos a tener en cuenta son que dos pines ATTINY, PB3, pin físico 2, PB2, pin físico 7 están conectados, en modo digital, al LED para efectuar el cambio de color. ATTINY pin PB4, pin físico 3, está conectado al POT en modo analógico, lo que significa que puede leer valores entre 0 y 254. Personalicé el código que encontré en Internet, así que reconozco que funciona. -

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 - entrada para POT // pb3 led pin 1 // pb2 led pin 3 // frecuencia ATTINY 85 configurada en 8 MHz internos / * esta función inicializa el ADC

Notas de ADC Prescaler:

El preescalador de ADC debe configurarse de modo que la frecuencia de entrada de ADC esté entre 50 y 200 kHz.

Para obtener más información, consulte la tabla 17.5 "Selecciones del preescalador de ADC" en el capítulo 17.13.2 "ADCSRA - Registro A de control y estado de ADC" (páginas 140 y 141 en la hoja de datos completa de ATtiny25 / 45/85, Rev. 2586M – AVR – 07 / 10)

Valores de preescalador válidos para varias velocidades de reloj

Reloj Valores de preescalador disponibles --------------------------------------- 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)

El siguiente ejemplo establece el preescalador en 128 para mcu que se ejecuta a 8MHz

(consulte la hoja de datos para conocer los valores de bits adecuados para configurar el preescalador) * /

// resolución de 8 bits

// establece ADLAR en 1 para habilitar el resultado de desplazamiento a la izquierda (solo los bits ADC9.. ADC2 están disponibles) // entonces, solo leer ADCH es suficiente para resultados de 8 bits (256 valores) DDRB | = (1 << PB3); // El pin se establece como salida. DDRB | = (1 << PB2); // El pin se establece como salida. ADMUX = (1 << ADLAR) | // resultado de desplazamiento a la izquierda (0 << REFS1) | // Establece ref. voltaje a VCC, bit 1 (0 << REFS0) | // Establece ref. voltaje a VCC, bit 0 (0 << MUX3) | // use ADC2 para la entrada (PB4), MUX bit 3 (0 << MUX2) | // use ADC2 para la entrada (PB4), MUX bit 2 (1 << MUX1) | // use ADC2 para la entrada (PB4), MUX bit 1 (0 << MUX0); // use ADC2 para la entrada (PB4), MUX bit 0

ADCSRA =

(1 << ADEN) | // Habilitar ADC (1 << ADPS2) | // establece el preescalador en 64, bit 2 (1 << ADPS1) | // establece el preescalador en 64, bit 1 (0 << ADPS0); // establece el preescalador en 64, bit 0}

int main (vacío)

{initADC ();

mientras (1)

{

ADCSRA | = (1 << ADSC); // inicia la medición de ADC while (ADCSRA & (1 << ADSC)); // esperar hasta que se complete la conversión

si (ADCH> 170)

{PORTB | = (1 << PB3); // Pin establecido en HIGH. PORTB | = (1 << PB2); // Pin establecido en HIGH. } else if (ADCH 85) {PORTB | = (1 << PB3); // Pin establecido en ALTO. PORTB & = ~ (1 << PB2); // Pin establecido en BAJO

} demás {

PORTB | = (1 << PB2); // Pin establecido en ALTO. PORTB & = ~ (1 << PB3); // Pin establecido en BAJO

}

}

return 0;

}

Paso 2: circuito

Circuito
Circuito

Alfileres ATTINY

PB3, pin físico 2 - pin 1 del LED conectado

PB4, pin físico 3, está conectado al pin central POT

GND, pin físico 4, está conectado al riel negativo - fuente de alimentación

PB2, pin físico 7 - pin 3 del LED conectado

VCC, pin físico 8, está conectado al riel positivo - fuente de alimentación

MACETA

pin pos y neg conectados a los rieles respectivos - fuente de alimentación.

DIRIGIÓ

pin central conectado al riel negativo - fuente de alimentación

Experimenté con una fuente de alimentación de 3 y 3,3 voltios y ambas funcionaron.

Paso 3: Conclusión

Conclusión
Conclusión

La capacidad del ATTINY85 para moverse entre los modos analógico y digital es muy poderosa y se puede utilizar en varias aplicaciones diferentes, p. Ej. conduciendo motores de velocidad variable y creando notas musicales. Exploraré esto en futuros instructivos. Espero que te haya resultado útil.

Recomendado: