Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************
- * Ultratimer Short-track
- * Authors:
- * Lugovcov Gleb
- * Pahomov Daniil
- * Kolpakov Vladimir
- * http://ut60.ru
- * 30.04.2016
- ************************/
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <Ultrasonic.h>
- Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
- LiquidCrystal_I2C lcd(0x3f,16,2);
- // Если ваш экран не работает, возможно у него другой адрес
- // Попробуйте вместо lcd(0x3f,16,2) написать lcd(0x27,16,2)
- int start = 0;
- long startTime = 0;
- long endTime1, endTime2, fullTime;
- void setup(){
- lcd.init();
- lcd.backlight();
- lcd.setCursor(1,0);
- lcd.print("UltraTimer ShT");
- lcd.setCursor(4,1);
- lcd.print("ver. 2.0");
- delay(3000);
- lcd.clear();
- lcd.setCursor(5,0);
- lcd.print("Ready!");
- }
- void loop(){
- if (ultrasonic.Ranging(CM) < 20) { //на каком расстоянии датчик
- //будет видеть робота
- switch (start) {
- case 0:
- startTime = millis();
- lcd.clear();
- lcd.setCursor(5,0);
- lcd.print("Start!");
- start = start+1;
- delay(3000); //чтобы робот успел уехать от датчика
- break;
- case 1:
- endTime1 = millis() - startTime; //начинаем отсчёт
- lcd.setCursor(0,0);
- lcd.print("Lap1: ");
- //разбиваем время (считаемое в мс) для вывода в виде "3.345 с"
- lcd.print(endTime1/1000); //выводим кол-во секунд 1 круга
- lcd.print(".");
- lcd.print(endTime1%1000); //выводим количество мс 1 круга
- lcd.print(" s");
- start = start+1;
- delay(3000);
- break;
- case 2:
- lcd.clear();
- endTime2 = (millis() - startTime - endTime1);
- lcd.setCursor(0,0);
- //разбиваем время (считаемое в мс) для вывода в виде "3.345 с"
- lcd.print(endTime1/1000); //выводим кол-во секунд 1 круга
- lcd.print(".");
- lcd.print(endTime1%1000); //выводим количество мс 1 круга
- lcd.print(" / ");
- lcd.print(endTime2/1000); //выводим кол-во секунд 2 круга
- lcd.print(".");
- lcd.print(endTime2%1000); //выводим количество мс 2 круга
- fullTime = endTime1+endTime2; //общее время двух кругов
- lcd.setCursor(0,1);
- lcd.print("Time: ");
- //разбиваем время (считаемое в мс) для вывода в виде "3.345 с"
- lcd.print(fullTime/1000);
- lcd.print(".");
- lcd.print(fullTime%1000);
- lcd.print(" s");
- start = 0;
- startTime = 0;
- fullTime = 0;
- endTime1 = 0;
- endTime2 = 0;
- delay(5000);
- lcd.setCursor(15,0);
- lcd.print("*"); //сигнализируем о готовности к новому отсчёту
- break;
- }
- }
- else if (ultrasonic.Ranging(CM) > 20 && start > 0){
- //если таймер запущен, выводим на экран время попытки
- //чтобы примерно можно было отслеживать время
- lcd.setCursor(0,1);
- lcd.print((millis()-startTime)/1000);
- lcd.print(".");
- lcd.print((millis()-startTime)%1000);
- lcd.print(" s");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement