SHARE
TWEET

Impulzus hossz mérés demo

Szerelo Jun 23rd, 2020 (edited) 1,230 in 351 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*  Impulzus hosszának méréséhez használható DEMO program.
  2.  *  Egy nyomógomb megnyomásának az idejét méri, ami az A0-ás kivezetés és a GND közé van kötve
  3.  *  Ha nem lefutó, hanem felfutó impulzust kell mérni,
  4.  *  akkor a mérés függvényekben a HIGH-ot LOW-ra és a LOW-ot HIGH-ra kell kicserélni.
  5.  */
  6.  
  7. #define INPUTPIN A0
  8.  
  9. #include <Wire.h>
  10. #include <LiquidCrystal_I2C.h>
  11.  
  12. unsigned long duration, tmp, tmp1;
  13. unsigned long timeout=5000;   // 5000 ms-ig, azaz 5 másodperc után visszatér nulla értékkel. Csak a meresTO()-nál
  14. bool tm=false;
  15.  
  16. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
  17.  
  18. void setup() {
  19.   pinMode(INPUTPIN,INPUT_PULLUP);
  20.   Serial.begin(115200);
  21.   Serial.println("Start ...");
  22.   lcd.begin(16,2);               // initialize the lcd
  23.   lcd.clear();
  24.   lcd.print("     HELLO");
  25.   delay(1000);
  26. }
  27.  
  28. void loop() {
  29.   //meres();    // vagy ezt vagy a másikat hívod meg
  30.   meresTO();
  31.   delay(5000);
  32. }
  33.  
  34. void meres() {    // Bemenetre érkező jel hosszának a mérése. Addig vár, amíg nem érkezik egy impulzus!
  35.   lcd.clear();
  36.   Serial.println("Push button");
  37.   lcd.print("  Push button");
  38.   while(digitalRead(INPUTPIN)==HIGH) {
  39.   }
  40.   lcd.setCursor(0,0);
  41.   lcd.print("waiting ...     ");
  42.   //duration=micros();  // ha pontosabban akarsz mérni, akkor a micros()-t használod
  43.   duration=millis();
  44.   while(digitalRead(INPUTPIN)==LOW) {
  45.   }
  46.   //duration=micros()-duration;
  47.   duration=millis()-duration;
  48.   Serial.println(duration);
  49.   lcd.setCursor(0,0);
  50.   lcd.print("  duration:     ");
  51.   lcd.setCursor(5,1);
  52.   lcd.print(duration);
  53. }
  54.  
  55. void meresTO() {   // Bemenetre érkező jel hosszának a mérése. Ha a timeout-ban meghatározott időtartamig nem érkezik jel, akkor visszatér nulla értékkel és a tm flag true állapotával
  56.   tm=false;
  57.   lcd.clear();
  58.   Serial.println("Push button TO");
  59.   lcd.print("  Push button");
  60.   tmp=millis();
  61.   tmp1=tmp;
  62.   Serial.println(tmp);
  63.   while(digitalRead(INPUTPIN)==HIGH and tmp+timeout>=tmp1) {
  64.     tmp1=millis();
  65.   }
  66.   //duration=micros();
  67.   lcd.setCursor(0,0);
  68.   lcd.print("waiting ...     ");
  69.   duration=millis();
  70.   while(digitalRead(INPUTPIN)==LOW) {
  71.   }
  72.   //duration=micros()-duration;
  73.   duration=millis()-duration;
  74.   if (duration==0) {
  75.     Serial.print("Time out: ");
  76.     Serial.println(timeout);
  77.     lcd.setCursor(0,0);
  78.     lcd.print("   Time out!    ");
  79.     delay(5000);
  80.     tm=true;
  81.   } else {
  82.     Serial.println(duration);
  83.     lcd.setCursor(0,0);
  84.     lcd.print("  duration:     ");
  85.     lcd.setCursor(5,1);
  86.     lcd.print(duration);
  87.   }
  88. }
  89.  
  90. //END
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top