باستخدام اردوينو للكشف عن عندما يتم تشغيل جهاز استشعار وإيقاف وعرض الوقت المنقضي

أود أن أعرف ما إذا كان بإمكاني استخدام جهاز استشعار الضغط مع Arduino. ﺳﯾﮐﺗﺷف اﻟرﻣز ﻋﻧدﻣﺎ ﯾﮐون ﺟﮭﺎز اﻻﺳﺗﺷﻌﺎر ﻗﯾد اﻟﺗﺷﻐﯾل ، وﺳﯾﺑدأ اﻟﻣؤﻗت ، وﯾﺗوﻗف ﻋﻧد إﯾﻘﺎف ﺗﺷﻐﯾل اﻟﻣﺳﺗﺷﻌر ، وﯾﻌرض اﻟوﻗت اﻟﻣﻧﻘﺿﻲ.

هنا رمز الموقت:

int main(void) {
  LARGE_INTEGER frequency;//ticks per second
  LARGE_INTEGER t1,t2;//ticks
  double elapsedTime;
 //get ticks per second
  QueryPerformanceFrequency(&frequency);
 //start timer
  QueryPerformanceCounter(&t1);
  //the code for sensorwill be written here
  QueryPerformanceCounter(&t2);
  elapsedTime = (t2.QuadPart - t1.QuadPart) * 1000.0/frequency.QuadPart;
  printf("\nElapsed time : %lf ms.\n", elapsedTime );
  return 0;
}
0

2 إجابة

يمكنك القيام بذلك بسهولة في اردوينو.

لكنني لاحظت أنك كتبت الشفرة في C مع وظائف Windows. لماذا لا تكتب رمز اردوينو وتستخدم ما يتوفره اردوينو بالفعل ، وهي دالات مليس() و ميكروس() ؟ المشكلة الوحيدة مع الوظيفة micros() هي أنها ستفوق بعد 70 دقيقة.

والشيء الآخر الذي يجب ذكره هو كيف ستعرف متى يكون المستشعر في وضع التشغيل؟ تتمثل إحدى الطرق في قراءة القيمة وتعيين حد أدنى بحيث يمكنك معرفة ما إذا كان مستشعر الضغط تحت الضغط أم لا.

يمكن استخراج معظم رمز لهذا من الأمثلة المختلفة لاردوينو الموجودة على الموقع.

بالنسبة لعتبة مستشعر الضغط ، يمكنك استخدام مثال Arduino AnalogComput وإضافة إذا كانت العبارة بعد قراءة تناظرية ودمجها مع وظيفة millis() من Arduino BlinkWithoutDelay example :

int sensorPin = A0;//Choose whichever analog pin you like
int sensorValue = 0;
int flagA = 0;
// flag is used just to indicate if timer has started or stopped

unsigned long startTime;
unsigned long stopTime;
unsigned long elapsedTime;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);
 //read the value from the sensor
  if(flagA == 0  && sensorValue > xxx) then {
   //if above threshold run timer
    startTime = millis();
    flagA = 1;
  }
  if(flagA == 1 && sensorValue < xxx) then {
   //if falls below threshold stop timer
    stopTime = millis();
    elapsedTime = stopTime - startTime;
    Serial.print("Elapsed time = ");
   //Put your print function in here
    Serial.print(elapsedTime);
    Serial.println(" ms");
    flagA = 0;
  }
1
وأضاف

سهل إلى حد ما ، لأنك في الأساس تحتاج فقط إلى الطابع الزمني للأحداث من المستشعر.

يمكنك إنشاء قاعدة زمنية للختم. يمكن أن يتم تنفيذ عملية الختم عن طريق الاقتراع ، أو تعليق شمسي أو شمسي ، أو التقاط. لسرد عدد قليل.

0
وأضاف