manredu escribió:eso es lo que te queda o lo que usa el bootloader del arduino?
por lo que he leído no hay bootloader para ese chip en Arduino. Solo se queman los fuses... aunque no lo entiendo muy bien.
Mira, este código tiene 808 bytes. Son 4 modos con memoria a los 4 segundos. Lo estoy ejecutando en el Attiny85, aun no me han llegado los Attiny13
#include <EEPROM.h>
int led = 1; //el led está conectado al pin 1
byte address = 0; //dirección memoria donde guardar modo
byte mode; //el modo de luz que hace la linterna
byte guardamode; //modo a guardar en memoria
unsigned long time; //hora de encendido de la linterna
unsigned long time2; //hora actual
boolean primer = false;
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
mode = EEPROM.read(address); //lee modo desde memoria
delay(80); //tiempo para leer
if (mode == 0) {mode = 1;}
if (mode > 4) {mode = 1;}
time = millis(); //hora a la que se enciende linterna
}
// the loop routine runs over and over again forever:
void loop() {
guardamode = mode +1; //en principio se guarda el
//sigiente modo, salvo que pasen 4 segundos
if (guardamode >= 5) {guardamode = 1;}
if (primer == false) {EEPROM.write(address, guardamode);
primer = true;} //se guarda el modo solo una vez
//siguen 4 modos de parpadeo
if (mode == 1) {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
if (mode == 2) {
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
}
if (mode == 3) {
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(50); //
}
if (mode == 4) {
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
delay(20); //
}
time2 = millis(); //hora actual en milisegundos
//si han pasado más de 4 segundos se guarda el modo actual, no el
//siguiente
if ((time2 - time) > 4000) {EEPROM.write(address, mode);}
}