категории | 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

#12   dimuska139    

А что такое "сенсор ускорения"?


0 ответить

#12   Bir91    

Интересная инфа, приберу пожалуй в свой архив


0 ответить

#12   AJSmart    

Жаль сенсора нет, а то прям сейчас бы прогу пошел делатьsmile


0 ответить

#12   Benoarmerevan    

О может лучше написать мануал(аpi) с обьяснениями всех функций этого модуля?
Статья что то не очень понятно написанно но для первого раза можно и так.smile


0 ответить

#12   Stim777    

Цитата: wwassatt
мне ненужно это

а зачем тогда каментишь? проходи мимо


0 ответить

#12   wwassatt    

мне ненужно это


0 ответить

#12   Nikit3230i    

Leyser, для программистов на питоне smile


0 ответить

#12   Leyser    

это всё понятно, но для чего это нужно


0 ответить

#12   WoolF    

Leyser, на каких мешках и ящиках?? =)
Stim777, например, сравнивая полученное значие (value) в функции, с sensor.Orientation.LEFT мы можем узнать повернут-ли телефон влево, а с sensor.Orientation.RIGHT, повернут-ли телефон вправо. Еще возможны значения: BACK, BOTTOM, FRONT, LEFT, RIGHT, TOP.
-------------
Добавлено в 12.12: А вообще конечно с такими вопросами пишите лучше в соответствующую тему на форуме https://www.dimonvideo.ru/smart/forum/topic_1728144293/50/0, буду рад.. =)


-------------
Добавлено в 12.41: А вообще конечно с такими вопросами пишите лучше в соответствующую тему на форуме https://www.dimonvideo.ru/smart/forum/topic_1728144293/50/0, буду рад.. =)


0 ответить

#12   Stim777    

так как из этого определить, когда телефон наклоняется вперед (вертикальное положение), а когда назад (вверх клавиатурой)?


0 ответить

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