torres.electronico

ARDUINO: programando el ATtinny85 con el IDE de Arduino

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...

attiny85-png.310636


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

attiny_pinout-png.310635


- 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
  • ATtiny_PinOUT.png
    ATtiny_PinOUT.png
    218.3 KB · Visitas: 8
  • Attiny85.png
    Attiny85.png
    62.3 KB · Visitas: 7
Atrás
Arriba