أردت استخدام حساس يساعدني إلى التعرف فيما إذا كان هناك حركة أم لا. هناك العديد من الحساسات التي قد تفي بالغرض. لكنها تختلف (1) مسافة النطاق التي من خلالها يمكنها التحسس (2) وبما يعرف بـ rest time وقت إعادة الضبط أو بمعنى الوقت الذي تحتاجه لتصبح جاهزة للتحسس لحركة جديدة
إشتريت بضعة حساسات EKMC1601111 لشركة بناسونيك Panasonic. وقمت بربط الحساس إلى شريحة ESP8266.
تم استخدام الشيفرة التالية لقراءة قيمة الحساس وطباعتها إلى نافذة الخرج. لاحظ السطر 6 ، تم ضبط موخر لمدة 30 ثانية لتهيئة الحساس
1 6 9 15 |
const int PPR = D2; int bState = 0; void setup() { delay(30000);//wait for 30s until the sensor voltage becomes stable Serial.begin (9600); void loop() { int State = digitalRead (PPR); if (bState != State) { if (State == HIGH) { delay(100);
|
بعد تحميل البرنامج إلى شريحة ESP8266 قم بفتح نافذة الخرج لمشاهدة نتائج تعليمات الطباعة المستخدمة
لاحظ قيمة 1 تدل على أن هناك جسم متحرك ضمن نطاق الحساس
لم أستخدم الباعث الضوئي إلى الآن ، سأقوم بإضافة تعليمات الآن لإضاءة الباعث الضوئي إشعارا بأن هناك حركة
const int PPR = D2; const int LED = D1; float State = 0; void setup() { pinMode(LED, OUTPUT); pinMode(PPR, INPUT); delay(30000);//wait for 30s until the sensor voltage becomes stable void loop() { int readState = 0; for(int i = 0; i < 10; i++){ State = readState/10; if(State >= 0.5){ delay(500); |
المراجع: