Продолжаем публикацию решений к нашим "Задачкам по робототехнике". Давайте решим вторую задачу, в ней речь идет о работе с датчиком-кнопкой:
Давайте подумаем: что отличает короткое нажатие от длинного? Правильно - время, в течении которого удерживается нажатой кнопка. Как только кнопка отпускается будем считать что нажатие произошло и мы ждем следующего.
Раз уж мы начали изучать 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
Давайте подумаем: что отличает короткое нажатие от длинного? Правильно - время, в течении которого удерживается нажатой кнопка. Как только кнопка отпускается будем считать что нажатие произошло и мы ждем следующего.
Раз уж мы начали изучать 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
Комментариев нет:
Отправить комментарий