2014.06.22.
14:09

Írta: harsanyireka

13. /2) Kommunikációs könyvtárak: Firmata

Lektorált tananyag, ami a BKF Digitális és Kollaboratív Művészet (DIKOM) pályázatnak keretén belül valósult meg.

Szerző: Harsányi Réka, Társszerző: Juhász Márton András, Lektor: Fernezelyi Márton

A Firmata egy kommunikációs protokoll, aminek célja a számítógépes környezetekkel való adatcsere megkönnyítése.

Sok olyan gyors prototipizálásra alkalmas környezet létezik, amelyiken a firmata protokoll használata már megoldott. Ilyenek például a VVVV, Max/MSP, Processing és Flash. Létezik olyan firmata alapú program (firmware), ami az Arduino minden funkcióját elérhetővé teszi soros parancsokon keresztül, az analóg olvasástól a digitális csatornák kapcsolgatásáig, és ezeket saját számítógépen futó fejlesztőkörnyezetünkből el is tudjuk érni. A könyvtár használatával anélkül hozhatunk létre célfeladatokra kétirányú soros kommunikációs programot, hogy saját protokollt (pl. handshaking) vagy objektumokat fejlesztenénk.

 

Metódusai:

begin()

Elindítja a könyvtárat.

 

begin(long)

Elindítja a könyvtárat és felülírja az előzőleg beállított adatátviteli sebességet arra, amit megadunk.

 

printVersion()

Elküldi a protokoll verziószámát a számítógépnek.

 

blinkVersion()

Elvillogja a protokoll verziószámát a 13-as csatornára kötött LED-en keresztül.

 

printFirmwareVersion()

Elküldi a firmware nevét és verziószámát a számítógépnek.

 

setFirmwareVersion(byte major, byte minor)

Beállíthatjuk a firmware nevét és verziószámát. A firmware neve a programunk nevével fog megegyezni a (.pde) kiterjesztés nélkül.

 

 

Üzenetek küldése:

sendAnalog(byte pin, int value)

Elküldi az analóg bemenet csatornájának számát és értékét.

 

sendDigitalPorts(byte pin, byte firstPort, byte secondPort)

Elküldi a két digitális port állapotát különálló bájtokként.

 

sendDigitalPortPair(byte pin, int value)

Elküldi a két digitális port állapotát egy integer változóként.

 

sendSysex(byte command, byte bytec, byte* bytev)

Önkényesen választott bájtok tömbjeként küld parancsot.

 

sendString(const char* string)

Stringet küld a számítógépnek.

 

sendString(byte command, const char* string)

Parancsként is definiálhatunk stringet, amit elküld.

 

 

Üzenetek fogadása:

available()

Leellenőrzi, hogy van-e bejövő adat a tárolóban.

 

processInput()

Feldolgozza a tárolóban található bejövő üzeneteket és – ha vannak – átvezeti őket a megfelelő visszahívási funkciókhoz.

 

attach(byte command, callbackFunction myFunction)

Funkciót köt bizonyos típusú bejövő üzenetekhez.

 

detach(byte command)

Törli az üzenet típusához kapcsolt funkciót.

 

 

Visszahívási funkciók:

Ahhoz, hogy egy üzenettípushoz funkciót tudjunk társítani, annak valamelyik szabvány visszahívási funkcióval egyeznie kell. Három különböző visszahívási funkció létezik: 

generic

void callbackFunction(byte pin, int value);

Általános visszahívási funkció, pl. csatornák állapotának lekérdezésére.

system_reset

 

void systemResetCallbackFunction(void);

Visszaállítja a firmware-t az alapállapotba.

string

 

void stringCallbackFunction(char *myString);

Karakterláncok visszaadásához.

sysex

 

void sysexCallbackFunction(byte pin, byte byteCount, byte *arrayPointer);

pl. MIDI vezérlőjelek visszaadásához.

 

 

Üzenettípusok: 

ANALOG_MESSAGE

Egy analóg bemenethez tartozó aktuális érték.

 

DIGITAL_MESSAGE

Egy digitális port 8 bitjének értéke.

 

REPORT_ANALOG

Ki-/bekapcsolja az analóg üzeneteket.

 

REPORT_DIGITAL

Ki-/bekapcsolja a digitális üzeneteket.

 

SET_PIN_MODE

Beállít egy csatornát: INPUT/OUTPUT/PWM.

 

FIRMATA_STRING

stringCallbackFunction-nel társítható string alapú üzenettípus.

 

SYSEX_START

Általános, változó hosszúságú üzenetek (pl. MIDI SysEx protokoll)sysexCallbackFunction-nel társítható üzenettípus.

 

SYSTEM_RESET

Visszaállítja a firmware-t az alapállapotába, systemResetCallbackFunction-nel társítható üzenettípus.

 

 

 13.1. †bra Elãre elkÇsz°tett firmata alap£ firmware-ek.png

Előre elkészített firmata alapú firmware-ek

Miután firmatára támaszkodó, előre elkészített firmware-ből többféle is létezik a programcsomagban, nézzük inkább ezek gyakorlati hasznát!

 

AllInputsFirmata

Az összes analóg és digitális bemenet aktuális állapotát a lehető leggyorsabban továbbítja a számítógépnek. Létrehozását az Arduino2Max program inspirálta.

 

AnalogFirmata

A lehető legtöbb analóg portot hasznosítja, beleértve az összes analóg bemenetet, 3, 5, 6, 9, 10, 11 PWM kimeneteket, melyek közül a 9 és 10 szervo meghajtóként is használható.

 

ServoFirmata

Az összes digitális csatornát szervo meghajtóként érhetjük el.

 

I2CFirmata

I2C protokollt használó eszközökkel kommunikálhatunk az Arduinon, mint átalakítón keresztül.

 

StandardFirmata

Minden felsorolt funkciót támogat, elérhetjük a digitális és analóg ki-/bemeneteket, I2C kommunikációt, használhatunk digitális csatornákat szervo meghajtónak.

 

StandardFirmata használata Processingből

Processing kód: 59processingfirmata

Arduino.cc library letöltése: 
http://playground.arduino.cc/Interfacing/Processing 

 

StandardFirmata használata Max/MSP-vel

13.3.2. StandardFirmata haszn†lata MaxMSP-vel.png

 

- - - - - - - - - -

forrás: http://arduino.cc/en/Tutorial/HomePage

 

Szólj hozzá!

Címkék: leckék könyvtárak Firmata lektorált

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr826398097

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása