Використання акселерометра в Processing

Більшість пристроїв Android містять акселерометр Цей чіп використовується для опреленного орієнтації вашого пристрою Він буде повертати різні значення, якщо ви будете тримати пристрій вертикально, горизонтально або вгору дном У цьому прикладі ми навчимося читати відомості для гри в кулькою на екрані

Приступимо

Створіть новий скетч і збережіть його під імям accelerometerpde Відкрийте меню File | Examples, Пошукайте папку Sensors і відкрийте приклад з акселерометром Ви виявите в скетчі другу вкладку, клас AccelerometerManagerjava Скопіюйте цей файл у ваш скетч Він знадобиться нам для створення цього прикладу

Як це робиться

Почнемо з оголошення змінних і присвоєння їм значень у функції setup ():

AccelerometerManager acc float ax

float ay float az float r

PVector loc color bgcolor

void setup()

{

acc = new AccelerometerManager( this )

size( displayWidth, displayHeight ) orientation( PORTRAIT )

smooth()

loc = new PVector( width/2, height/2 ) r = 40

bgcolor = color( 255, 0, 0 )

}

Далі ми задіємо функцію accelerationEvent () Ця функція буде викликатися при кожному зміні значення акселерометра Також нам потрібно викликати функцію redraw () для перегляду змін:

public void accelerationEvent( float x, float y, float z ) { ax = x

ay = y az = z redraw()

}

У функції draw () ми використовуємо змінні ax і ay для зміни становища кульки Коли кулька вдариться об край екрана, колір фону зміниться

void draw()

{

float speedX = -(ax / 2) float speedY = ay / 2

locx += speedX locy += speedY

if ( locx &lt r ) {

bgcolor = color( 255, 128, 0, 32 )

}

f ( locx &gt width – r ) {

bgcolor = color( 128, 255, 0, 32 )

}

if ( locy &lt r ) {

bgcolor = color( 0, 225, 255, 32 )

}

if ( locy &gt height – r ) {

bgcolor = color( 255, 0, 128, 32 )

}

locx = constrain( locx, r, width – r ) locy = constrain( locy, r, height – r )

fill( bgcolor )

rect( 0, 0, width, height )

fill( 255 ) noStroke()

ellipse( locx, locy, r*2, r*2 )

}

Запустіть скетч на вашому пристрої і почніть його розгойдувати Ви побачите, що на кульку діє гравітація і він скочується в саму нижню точку Результат буде виглядати так, як на цьому скріншоті:

Як це працює

Найпростіший шлях почати працювати з акселерометром – спробувати клас AccelerometerManager, який поставляється з прикладами на Processing Функція accelerationEvent () в головному скетчі використовується для преобразанія величин акселерометра в змінні ax, ay і az

Перші чотири рядки функції draw () використовуються для кочення кульки

Я інвертуватися величину ax, щоб переконатися, що кулька котиться в потрібному напрямку Мені довелося зробити це, тому що мій кульку котився вгору, коли я нахиляв моє пристрій вліво У зісімості від вашого пристрою вам доведеться змінити ax або ay

Додатково

Якщо ви хочете більш широко використовувати сенсори в скетчах для Android, існує відмінна бібліотека під назвою Ketai Ця бібілотека підтримує акселерометр, гіроскоп, визначник місця розташування і камери Завантажити її можна на Google Code: https://codegooglecom/p/ketai/

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*