Star Trek dörrklockan hacka (6 / 7 steg)
Steg 6: Programmering av ATtiny85
Koden för ATtiny skrivs med hjälp av Arduino IDE och jag använde en liten AVR programmerare av Sparkfun för att få koden till chipet. Programmera dessa marker är löjligt lätt och kokar ner till lite mer än laddar några drivrutiner, koppla chippet till programmeraren och klicka på upload-knappen. Sparkfun har skrivit en mycket grundlig tutorial som förklarar varje steg i processen och det är den läraren som jag följde: Sparkfun Tiny AVR programmerare Tutorial.
Koden för min dörrklocka är relativt enkelt jämfört med de flesta skisser (Arduino kodfiler) och det fungerar på följande sätt:
- Kontrollera spänningen bell's högtalare pin och spara detta värde till en variabel.
- Om detta värde är större än en uppsättning tröskel ATtiny ögonblickligt ställer sin PIR anslutna pin hög och blinkar den röda lampan.
- Om värdet är mindre än tröskeln ATtiny gör ingenting och startar koden över.
Jag har klistrat in Arduino koden här men du kan också hämta det från github eller längst ner på denna sida.
Oh ja, jag gjorde också en 3D tryckta fall för min lilla programmerare. Filerna för detta fall är uppe på Thingiverse.
Definiera vilka kablar är kopplade till vilken pin
CONST int speakerPin = A1;
CONST int ledPin = 0;
CONST int pirPin = 1;
Skapa en variabel för att lagra talarens spänning värde
int speakerValue;
void setup() {
Ställa in stiften som ingångar och utgångar
pinMode (speakerPin, ingång);
pinMode (ledPin, produktionen);
pinMode (pirPin, produktionen); }
void loop() {
Läs spänningen på speaker wire stiftet som en analog
värde och lagrar det i variabeln speakerValue
speakerValue = analogRead(speakerPin);
är högtalare spänningen större än noll?
om (speakerValue > = 175) {
Ja det är det!
digitalWrite (ledPin, hög); Aktivera LED
digitalWrite (pirPin, hög); Skicka 3.3V till PIR sensor tråd
Delay(1000); paus för en sekund
digitalWrite (ledPin, låg); Inaktivera LED
digitalWrite (pirPin, låg); uppsättning PIR sensor tråd tillbaka till
noll volt
}
Delay(10); paus för 10 millisekunder innan start över
}