Parkering sensor! (10 / 11 steg)
Steg 10: kod
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include "pitches.h"
/ * Följande kontrolleras med en HC-SR04 avstånd sensor om det finns
ett objekt mellan 2m och 25cm. Om det finns ett objekt mellan 2m och 1och en halv
mäter två gröna lysdioderna förändras från låg till hög. Om det finns ett objekt
mellan 1 kommer 50m och 50cm gröna och den gula LDS högt. Om det finns
ett objekt mellan 50cm och 25cm alla lampor kommer högt. Och slutligen om
Det finns ett objekt närmare till 25cm alla lampor blinkar.
Krets: en HC-SR04 Sensor
två gröna lysdioder, två gula lysdioder, två röda lysdioder med ett 220Ω motstånd bifogas
var och en av dem
en Summer med ett motstånd
sladdar! */
int gren = 2;
int grön = 3;
int gul = 4;
int yellow1 = 5;
int rött = 8.
int red1 = 9.
int trig = 7; //triger pin av sensorn
int echo = 6; //echo pin av sensorn
int maximumrange = 200; //the maximal räckvidd som vi vill ha sensorn för att mäta
int minimumrange = 25; //minimum sortiment som vi vill ha sensorn för att mäta
int redRange = 50;
int yellowRange = 150;
int högtalare = 10;
int melodi [] = {
NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, 0};
int noteDurations [] = {
1,2,4,8,64}.
lång varaktighet, avstånd;
void setup() {
Serial.BEGIN(9600);
pinMode(echo,INPUT);
pinMode(trig,OUTPUT);
pinMode(green,OUTPUT);
pinMode(gren,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(yellow1,OUTPUT);
pinMode(red,OUTPUT);
pinMode(red1,OUTPUT);
pinMode(speaker,OUTPUT);
}
void loop() {
Vi skickar signalen från triger PIN-koden och ta signalen med den
ECHO pin
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
duration=pulseIn(ECHO,High);
Vi beräknar avståndet
avståndet = varaktighet/58,2;
om (avstånd < = minimumrange) {//minimum=25cm
Limit();
}
annars om (avstånd < = redRange & & avstånd > = minimumrange) {
redLimit (); //red=50 minsta = 25
}
/ * om avståndet är mindre eller lika med 1,50 m och större eller lika med 25cm
göra fowlloings * /
annars om (avstånd < = yellowRange & & avstånd > = redRange) {
yellowLimit (); //yellow=150cm röd = 50 cm
}
annars om (avstånd < = maximumrange & & avstånd > = yellowRange) {
greenLimit();
}
annat if(distance > maximumrange) {
Melody [4].
noteDurations [4].
}
}
void limit() {//limit= 25cm från ett objekt
Serial.println();
Serial.Print ("uppmärksamhet! Du är: ");
Serial.Print(Distance);
Serial.Print ("cm nära ett objekt");
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
digitalWrite(red,HIGH);
digitalWrite(red1,HIGH);
Delay(20);
digitalWrite(green,LOW);
digitalWrite(gren,LOW);
digitalWrite(yellow,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/noteDurations [3].
tonen (högtalare, melody[3],noteDuration);
Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(speaker);
}
void redLimit() {
Serial.println();
Serial.Print ("var försiktig! Du är: ");
Serial.Print(Distance);
Serial.Print ("cm nära ett objekt");
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
digitalWrite(red,HIGH);
digitalWrite(red1,HIGH);
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/noteDurations [2].
tonen (högtalare, melody[2],noteDuration);
Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(speaker);
}
void yellowLimit() {
Serial.println();
Serial.Print ("du är:");
Serial.Print(Distance);
Serial.Print ("cm nära ett objekt");
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/noteDurations [1].
tonen (högtalare, melody[1],noteDuration);
Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(speaker);
}
void greenLimit() {
Serial.println();
Serial.Print ("det finns ett objekt:");
Serial.Print(Distance);
Serial.Print ("cm nära").
digitalWrite(yellow,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/noteDurations [0];
tonen (högtalare, melody[0],noteDuration);
Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(speaker);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Det finns en extra flik som du måste namnge pitch.h och kommer att omfatta de platser som du vill ha din Summer att spela. I min kod som jag har, bara NOTE_C4
#define NOTE_C4 262
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Så i princip är vad här koden gör att mäta avståndet och kontrollera vissa förhållanden. Om avståndet är mindre än Xcm det utstrålar den gröna gränsen, om avståndet är mindre än Xcm den gula etc