SHARE
TWEET

UltraTimer

Al_Ninyo Apr 21st, 2016 (edited) 76 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************************
  2.  * Ultratimer
  3.  * Authors:
  4.  * Lugovcov Gleb
  5.  * Pahomov Daniil
  6.  * Kolpakov Vladimir
  7.  * http://ut60.ru
  8.  * 21.04.2016
  9.  ************************/
  10.  
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>
  13. #include <Ultrasonic.h>
  14.  
  15. Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
  16. LiquidCrystal_I2C lcd(0x3f,16,2);
  17. // Если ваш экран не работает, возможно у него другой адрес
  18. // Попробуйте вместо lcd(0x3f,16,2) написать lcd(0x27,16,2)
  19.  
  20. boolean start = 0;
  21. long startTime = 0;
  22. long endTime = 0;
  23. int prevTime1, prevTime2;
  24.  
  25. void setup(){
  26.   lcd.init();
  27.   lcd.backlight();
  28.   lcd.setCursor(3,0);
  29.   lcd.print("UltraTimer");
  30.   lcd.setCursor(4,1);
  31.   lcd.print("ver. 1.0");
  32.   delay(3000);
  33.   lcd.clear();
  34.   lcd.setCursor(5,0);
  35.   lcd.print("Ready!");
  36. }
  37.  
  38. void loop(){
  39.   if (ultrasonic.Ranging(CM) < 30) { //на каком расстоянии датчик
  40.                                      //будет видеть робота
  41.     if (start == 0) {
  42.       startTime = millis();
  43.       lcd.clear();
  44.       lcd.setCursor(5,0);
  45.       lcd.print("Start!");
  46.       start = !start;
  47.       delay(3000);  //чтобы робот успел уехать от датчика
  48.     }
  49.     else if (start == 1 && startTime != endTime) {
  50.       endTime = millis() - startTime; //начинаем отсчёт
  51.       lcd.setCursor(0,0);
  52.       lcd.print("Time: ");
  53.       //разбиваем время (считаемое в мс) для вывода в виде "3.345 с"
  54.       lcd.print(endTime/1000);  //выводим кол-во секунд
  55.       lcd.print(".");
  56.       lcd.print(endTime%1000);  //выводим количество мс
  57.       lcd.print(" s");
  58.       lcd.setCursor(0,1);
  59.       lcd.print("Pr time: "); //выводим предыдущий результат
  60.       lcd.print(prevTime1);
  61.       lcd.print(".");
  62.       lcd.print(prevTime2);
  63.       lcd.print(" s");
  64.       prevTime1 = endTime/1000;
  65.       prevTime2 = endTime%1000;
  66.       start = !start;
  67.       startTime = endTime;
  68.       delay(5000);
  69.       lcd.setCursor(15,0);
  70.       lcd.print("*");
  71.     }
  72.   }
  73.     else if (ultrasonic.Ranging(CM) > 20 && start == 1){
  74.       //если таймер запущен, выводим на экран время попытки
  75.       //чтобы примерно можно было отслеживать время
  76.       lcd.setCursor(0,1);
  77.       lcd.print((millis()-startTime)/1000);
  78.       lcd.print(".");
  79.       lcd.print((millis()-startTime)%1000);
  80.       lcd.print(" s");
  81.   }
  82. }
RAW Paste Data
Want to get better at C++?
Learn to code C++ in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top