категории | RSS

Просьба строго не судить, т.к. это моя первая, но надеюсь далеко не последняя, статья. Хотя это и есть по сути перевод статьи расположенной здесь, но перевод всё же не дословный, я постарался внести некоторые уточнения и исправления где, на мой взгляд, это требовалось. Обсуждение статьи и программирования на Python с использованием функций акселерометра на форуме. В конце статьи я приложил исходники примеров приведенных в самой статье.
Сегодня я расскажу как можно использовать функции акселерометра, а точнее его датчиков, в Ваших программах на Python, для этого мы воспользуемся модулем sensor. Акселерометр имеет сенсор, или другими словами просто датчик, поворота и сенсор ускорения.
Итак начнем..
Импортируем модули e32 и sensor:

import e32, sensor

Смотрим какие сенсоры нам доступны:
sensors=sensor.sensors()

Получаем идентификатор и категорию сенсора ускорения, например так:
#Если Вы хотите получить сенсор поворота, а не ускорения, то измените "AccSensor" на "RotSensor"
id=sensors["AccSensor"]["id"]
cat=sensors["AccSensor"]["category"]

Определим функцию которая будет вызываться при событиях сенсора. Ей будет передаваться один аргумент который мы и используем внутри функции (вместо точек поставьте пробелы) :
def printout(value):
..print value

Теперь давайте получим объект сенсора ускорения:
senobj=sensor.Sensor(id, cat)

Установим фильтр событий на фильтрацию событий сенсора ускорения (чтобы фиксировались только соответствующие события) :
#Если Вы работаете с сенсором поворота, то измените sensor.OrientationEventFilter() на sensor.RotEventFilter()
#Если Вы хотите получать данные низкого уровня, то устанавливайте sensor.EventFilter() как базовый фильтр событий для класса
senobj.set_event_filter(sensor.OrientationEventFilter())

Подключимся к сенсору:
senobj.connect(printout)

Подождем 15 секунд:
e32.ao_sleep(15)

Теперь отключимся от него:
senobj.disconnect()

На этом пока всё. Ниже приведен полный листинг кода для датчика ускорения:
import e32, sensor
sensors=sensor.sensors()
id=sensors["AccSensor"]["id"]
cat=sensors["AccSensor"]["category"]
def printout(value):
..print value#Вместо точек поставьте пробелы
senobj=sensor.Sensor(id, cat)
senobj.set_event_filter(sensor.OrientationEventFilter())
senobj.connect(printout)
e32.ao_sleep(15)
senobj.disconnect()

И код для датчика поворота:
import e32, sensor
sensors=sensor.sensors()
id=sensors["RotSensor"]["id"]
cat=sensors["RotSensor"]["category"]
def printout(value):
..print value#Вместо точек поставьте пробелы
senobj=sensor.Sensor(id, cat)
senobj.set_event_filter(sensor.RotEventFilter())
senobj.connect(printout)
e32.ao_sleep(15)
senobj.disconnect()

Продолжение следует..

Прикрепленный файл: 2570_ac_samples.zip

DimonVideo
2009-04-17T02:16:04Z

Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 12

#2   Leyser    

ничего не понял.Можно тоже самое, только на мешках и ящиках


0 ответить

Яндекс.Метрика