Altoid Tin tyst larm (3 / 6 steg)
Steg 3: Steg 3: programmering ATtiny85 chip
Jag använde min Arduino Uno som Internet-leverantören för att programmera små chip jag inte ska gå igenom stegen för att göra detta, men här är den webbplats som jag brukade göra det.
http://42bots.com/tutorials/How-to-program-attiny85-with-Arduino-Uno-part-1/
http://42bots.com/tutorials/How-to-program-attiny85-with-Arduino-Uno-part-2/
Kodöversikt
Koden är utformat så att en person kan både ställa in och kontrollera lamporna utan kvittning på olycka. Användaren kommer Anslut sensorn, det kommer att ge 5 sekunder innan det börjar testa för avstånd. Detta ger användartid att lämna rummet efter inställning det. En liknande insats sattes i Kontrollera sensorn, är naturligtvis hur den är programmerad att det ska bli röd när det läser värdet under 70cm. Detta innebär att den röda lampan skulle vändas varje gång dörren öppnas. Men det sättet att det är programmerat användaren har ca 5 sekunder innan den växlar från grönt till rött.
I koden finns det en del att filtrera bort 0 värden, kommer detta från ett problem med sensorn. Det kommer då och då kasta en random 0, så koden filtrerar bort alla värden som är lika med 0 för att förhindra en falsk post.
[Edit (2-25-14)]
Ultrasonic sensor verk genom att sända ut en signal från den sändande sidan, samla in signalen puls i den andra sidan som är i huvudsak en mikrofon och beräkning av tid det tar att ta emot i mikrosekunder (som är 1/1 000 000 av en sekund). Det kommer att ta denna tid som samlades och dividera med som rusas av solitt mätt i mikrosekunder. Detta returnerar avståndet i centimeter. Ultrasonic sensorn fungerar bäst när pekade vinkelrätt mot det objekt som det är att mäta. Det kommer att fungera när det är i en vinkel, men den maximala behandlingen kommer från den vinkelräta behandlingen.
Detta program ständigt ping signaler och kontroll för avbrott i fjärran. Detta sätt har en absolut chans att fånga någon in i rummet (om inte naturligtvis de kör snabbare än ljudets hastighet).
Koden
#include < TinyNewPing.h >
// ---------------------------------------------------------------------------
Koden som skrivits för Arduino baserat tyst larm
2-23-14
Postat på instructables
Baserad på NewPing exempel
// ---------------------------------------------------------------------------
#define TRIGGER_PIN 2 / / Arduino PIN-kod knuten till utlösa pin på ultrasonic sensor.
#define ECHO_PIN 3 / / Arduino PIN-kod knuten till echo pin på ultrasonic sensor.
#define MAX_DISTANCE 200 / / maximalt avstånd vi vill skicka ping (i centimeter). Maximal sensorn avståndet är dimensionerade för 400-500cm.
int buffert, avstånd;
int grön = 0, röd = 1;
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing inställning av stift och maximalt avstånd.
void setup() {
pinMode (grön, utgång); Ställer in stiften som utgångar för lysdioderna
pinMode (röd, produktionen);
digitalWrite (grön, hög); Detta avsnitt är att göra ljus blixten i ungefär 5 sekunder
Delay(500); Också ger dig en chans att lämna rummet utan kvittning sensorn.
digitalWrite(green,LOW);
Delay(500);
digitalWrite (grön, hög);
Delay(500);
digitalWrite(green,LOW);
Delay(500);
digitalWrite (grön, hög);
Delay(500);
digitalWrite(green,LOW);
Delay(500);
digitalWrite (grön, hög);
Delay(500);
digitalWrite(green,LOW);
Delay(500);
digitalWrite (grön, hög);
Delay(500);
digitalWrite(green,LOW);
Delay(500);
digitalWrite(green,HIGH); Håller den gröna ledde på tills avbruten
buffert = 200.
}
void loop() {
Delay(250); Vänta 250ms mellan pingar. 29ms bör vara den kortaste fördröjningen mellan pingar.
unsigned int oss = sonar.ping(); Skicka ping, ping tid i mikrosekunder (oss) att få.
buffert = oss / US_ROUNDTRIP_CM;
IF(buffer!=0) {//Sensor ger felaktiga avläsningar detta var att bli av 0 värden
avståndet = buffert;
}
annat
{}
IF(Distance<70) //Measuring avstånd, att visa att någon har varit in i rummet
{
Delay(5000); Väntar 5 sekunder för att ge dig en chans att kontrollera de blinkande lamporna.
digitalWrite(green,LOW);
göra
{
digitalWrite (röd, hög); Visar att någon har öppnat dörren eller kom in i rummet
Delay(1000);
digitalWrite(red,LOW);
Delay(1000);
} while(1);
}
}