пятница, 4 декабря 2015 г.

Решение задачи №2. Длинные и короткие нажатия

Продолжаем публикацию решений к нашим "Задачкам по робототехнике". Давайте решим вторую задачу, в ней речь идет о работе с датчиком-кнопкой:

Давайте подумаем: что отличает короткое нажатие от длинного? Правильно - время, в течении которого удерживается нажатой кнопка. Как только кнопка отпускается будем считать что нажатие произошло и мы ждем следующего.



Раз уж мы начали изучать EV3 Basic, давайте решим вторую задачу с его помощью. Алгоритм легко перенести на любой язык программирования.

' Устанавливаем режим работы датчика касания
Sensor.SetMode(1,0)

' Переменные K и D - количество длинных и коротких нажатий
K = 0
D = 0

' Далее начинаем бесконечный цикл
While "True"
  ' Ждем пока датчик не будет нажат
  While Sensor.ReadPercent(1) = 0
  EndWhile

  ' Запоминаем в переменной А время когда нажали кнопку
  A = EV3.Time

  'Ждем пока датчик не отпустят
  While Sensor.ReadPercent(1) = 100
  EndWhile

  ' Запоминаем в переменной В время отпускания кнопки
  B = EV3.Time

  ' Вычисляем время удерживания кнопки нажатой
  X = B - A
  
  ' Если удерживаали долее 500мс - нажатие длинное
  If X > 500 Then
    D = D + 1
  Else
    K = K + 1
  EndIf

  ' Выводим данные на экран
  LCD.Clear()
  LCD.Write(0, 0, "short:")
  LCD.Write(0, 32, K)
  LCD.Write(0, 64, "long:")
  LCD.Write(0, 96, D)

EndWhile

Комментариев нет:

Отправить комментарий

Самое популярное