Paso 3: Programar el microcontrolador
Programa el microcontrolador. No voy a entrar en detalles sobre cómo programar un ATtiny85, ya se hace bastante bien en muchos otros lugares, como esta. Pero aquí está el código que he utilizado.
#include < avr/sleep.h > const int buzzerPin = 3; void setup() Estela vacío)
const int button1Pin = 1;
const int button2Pin = 2;
const int button3Pin = 4;
myTone int = 0;
lastWake largo sin firmar;
{
pinMode (buzzerPin, salida);
pinMode (button1Pin, entrada);
pinMode (button2Pin, entrada);
pinMode (button3Pin, entrada);
lastWake = millis();
digitalWrite (2, alto); habilitar pull-up
}
{
cancelar el sueño como una precaución
sleep_disable();
debe hacer esto como el pin probablemente permanecerá bajo por un tiempo
detachInterrupt (0);
lastWake = millis();
} / / fin de wake
void loop()
{
int button1State = digitalRead(button1Pin);
int button2State = digitalRead(button2Pin);
int button3State = digitalRead(button3Pin);
Si ((button1State == LOW) & & (button2State == LOW) & & (button3State == LOW)) {}
myTone = 100;
}
else if ((button1State == LOW) & & (button2State == LOW)) {}
myTone = 150;
}
else if ((button1State == LOW) & & (button3State == LOW)) {}
myTone = 200;
}
else if ((button2State == LOW) & & (button3State == LOW)) {}
myTone = 300;
}
else if (button1State == LOW) {}
myTone = 400;
}
else if (button2State == LOW) {}
myTone = 800;
}
else if (button3State == LOW) {}
myTone = 2400;
}
Si (myTone > 0) {}
lastWake = millis();
tono (buzzerPin, myTone, 80);
Delay(40);
}
Else {}
Si no ha habido actividad durante 10 segundos, vaya a dormir.
Si (millis() - lastWake > 10000) {}
desactivar la ADC
ADCSRA = 0;
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_enable();
No interrumpa antes de que nos vamos a dormir, o la
ISR separará interrupciones y no despertamos.
noInterrupts ();
se llama cuando baja pin D2
attachInterrupt (0, wake, LOW);
desactivar habilitar apagón en software
que el procesador ejecuta la siguiente instrucción después de
interrupciones se encienden.
(interrupciones); un ciclo de
sleep_cpu (); un ciclo de
}
}
myTone = 0;
}
El código produce un tono constante dependiendo de la tecla, o la combinación de teclas, se presiona. Pero es ciertamente posible modificar el código sin embargo quiero. Por ejemplo, podría código para pulsante o alterna tonos o canciones incluso. Tenga en cuenta que en la lista de piezas, incluye un casquillo de inmersión para ATtiny85, así incluso después de finalizado el proyecto, puede tirar el chip y volver a programarlo para cambiar el comportamiento del dispositivo.