En el siguiente ejemplo, pretendo mostrarles como programar un ATtiny85 con el IDE de Arduino.
En este proyecto, simplemente actuaremos sobre un LED con un PWM controlado por un pulsador y un potenciómetro. En paralelo, sume un display LCD I2c para poder ver los estados del potenciómetro, el pulsador y las variables...
Características del ATTINY85:
- Se puede conectar y programar directamente al conector USB.
- Los pines correspondientes a los ADC son PB5 (A0), PB2 (A1), PB4(A2), PB3(A3)
- Los pines para el bus I2C son el PB0 y el PB2.
- Los pines para el bus SPI son el PB2(SCLK), PB1(MISO) y PB0(MOSI).
Como configurar el IDE de Arduino para programar el ATTINY85:
Driver necesarios para que nuestra PC reconozca la placa:
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
En este proyecto, simplemente actuaremos sobre un LED con un PWM controlado por un pulsador y un potenciómetro. En paralelo, sume un display LCD I2c para poder ver los estados del potenciómetro, el pulsador y las variables...
CSS:
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Ejemplo: Funcion MAP y empleo del ATTINY85 con el IDE de ARDUINO - prof.martintorres@educ.ar - ETI Patagonia
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
------ Pin ATtiny85 ------
P5-1-PB5-ADC0-Reset
P4-3-PB4-ADC2-USB(-)-PWM4
P3-2-PB3-ADC3-USB(+)
P2-7-PB2-ADC1-SCLK-SCL-INT0
P1-6-PB1-PWM1-MISO
P0-5-PB0-PWM0-MOSI-SDA
--------------------------
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*/
#include <TinyWireM.h>
#include <TinyLiquidCrystal_I2C.h>
TinyLiquidCrystal_I2C lcd(0x27,20,4);
#define LED 1
#define PulsadorA 3
#define PulsadorB 5
int PWM_Led;
int dms = 20; //20 milisegundos
int valor;
int pot_valor = 0;
int pot_PWM = 0;
String pot_valorS = ""; // pot_valor en String.
void setup()
{
TCCR0B = TCCR0B & 0b11111000 | 0b001;
pinMode(PulsadorB, INPUT); // Entrada ADC en pin P5
pinMode(PulsadorA, INPUT); // Entrada ADC en pin P3
pinMode (LED,OUTPUT); // Salida LED en ´pin P6
pinMode (A2,INPUT); // Entrada ADC en pin P4
// BUS I2c SDA en pin P0
// BUS I2c SCL en pin P2
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop()
{
valor = digitalRead(PulsadorA);
if (valor == LOW)
{
pot_PWM = analogRead(A2);
PWM_Led = map(pot_PWM, 0, 1023, 0, 255);
pot_valor = analogRead(A2);
pot_valor = map(pot_valor, 0, 1023, 0, 100);
pot_valorS = String(pot_valor);
lcd.setCursor(0,0);
lcd.print("----- ATiny 85 -----");
lcd.setCursor(0,1);
lcd.print("Pulsador: ENCENDIDO ");
lcd.setCursor(0,2);
lcd.print("POT: ");
lcd.print(pot_valorS);
lcd.print(" PWM: ");
lcd.print(PWM_Led);
lcd.setCursor(0,3);
lcd.print("--------V1.1--------");
analogWrite(LED,PWM_Led);
delay(20);
lcd.clear();
}
if (valor == HIGH)
{
lcd.clear();
digitalWrite(LED, LOW);
pot_valor = analogRead(A2);
pot_valor = map(pot_valor, 0, 1023, 0, 100);
pot_valorS = String(pot_valor);
lcd.print("----- ATiny 85 -----");
lcd.setCursor(0,1);
lcd.print("Pulsador: APAGADO ");
lcd.setCursor(0,2);
lcd.print("POT: ");
lcd.print(pot_valorS);
PWM_Led = 0;
lcd.print(" PWM: ");
lcd.print(PWM_Led);
lcd.setCursor(0,3);
lcd.print("--------V1.1--------");
delay(100);
}
lcd.clear();
}
Características del ATTINY85:
- Microcontrolador arquitectura de 8 bits de la familia AVR
- Hasta 6 pines I/O disponibles
- Memoria de programa flash de 8 kB (2 kB lo utiliza el sistema para el bootloader, así que nos quedan 6 kB)
- SRAM de 512 Bytes
- EEPROM de datos de 512 Bytes
- Oscilador externo hasta 20 MHz
- ADC de 10 bits, 4 canales (ó 2 canales diferenciales) y medición de temperatura.
- Voltaje de operación 2.7 V a 5.5 V
- 1 timer/contador de 8 bits
- 1 timer/contador de 8 bits, alta velocidad y prescaler separado
- 4 canales PWM
- USI (Universal Serial Interface) que soporta SPI y TWI
- soporta bus I2c
- Comparador analógico.
- Múltiples fuentes de interrupción
- Oscilador de reloj interno configurable
- Brown-out Reset de valor programable
- Power-on Reset
- Modos de bajo consumo
- Soporta 10,000 ciclos de borrado/escritura en memoria flash
- Soporta 100,000 ciclos de borrado/escritura en memoria EEPROM
- Se puede conectar y programar directamente al conector USB.
- Los pines correspondientes a los ADC son PB5 (A0), PB2 (A1), PB4(A2), PB3(A3)
- Los pines para el bus I2C son el PB0 y el PB2.
- Los pines para el bus SPI son el PB2(SCLK), PB1(MISO) y PB0(MOSI).
Como configurar el IDE de Arduino para programar el ATTINY85:
Driver necesarios para que nuestra PC reconozca la placa:
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip