نظام الحسّاسات لاصطفاف السيارة

مبتدئ متوسط

الكود البرمجي

قم برفع الكود التالي على الاردوينو :

int tonePin = 4;    //Tone - Red Jumper
int trigPin = 10;    //Trig - violet Jumper
int echoPin = 9;   //Echo - yellow Jumper
int clockPin = 11;  //IC Pin 11 - white Jumper
int latchPin = 12;  //IC Pin 12 - Blue Jumper
int dataPin = 13;   //IC Pin 14 - Green Jumper

byte possible_patterns[9] = {
  B00000000,
  B00000001,
  B00000011,
  B00000111,
  B00001111,
  B00011111,
  B00111111,
  B01111111,
  B11111111,
};
int proximity=0;
int duration;
int distance;

void setup() {
  //Serial Port
  Serial.begin (9600);
 
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(tonePin, OUTPUT);
}

void loop() {
  digitalWrite(latchPin, LOW);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
 
  proximity=map(distance, 0, 45, 8, 0);
  //Serial.println(proximity);
 
 if (proximity <= 0){
      proximity=0; 
    } 
 else if (proximity >= 3 && proximity <= 4){ 
     tone(tonePin, 200000, 200);
      } 
 else if (proximity >= 5 && proximity <= 6){ 
     tone(tonePin,5000, 200); 
      } 
 else if (proximity >= 7 && proximity <= 8){
    tone(tonePin, 1000, 200);
     }
  shiftOut(dataPin, clockPin, MSBFIRST, possible_patterns[proximity]);
  digitalWrite(latchPin, HIGH);
 
  delay(600);
  noTone(tonePin);
}

لمحة سريعة عن الكود:

لإستخدام الحساس يتم ارسال نبضة (HIGH Level)على Trig Pin لمدة تزيد عن 10 Microseconds,ثم بعد ذلك LOW, وهذه تمثل الموجه فوق الصوتية المرسلة .

digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);

إذا تم الكشف عن جسم ما أمام جهاز الاستشعار(ستصبح قيمة Echo Pin =HIGH Level)، يتم حساب مدة بقاء الإشارةHIGH   المستقبلة عن Echo pin .

duration = pulseIn(echoPin, HIGH);

و بعد ذلك يتم حساب المسافة التي يبعد عنها الجسم عن حساس الأمواج فوق الصوتية ويتم تحولها الى رقم  بوحدة السنتيميتر

distance = (duration/2) / 29.1;

الصفحة التالية