You are on page 1of 23

PROCESSING

Prof. Dr. Demir Bayka


FONKSİYON VE
PROSEDÜRLERLE
İLERLEMEDEN ÖNCE YAPTIĞIMIZ GİBİ GENEL
DEKLERASYONLARI DA
AYRI BİR SAYFADA
TOPLAYALIM
< global >

PROGRAMIN ANA
SAYFASINDAN
DEKLERASYONLARI

copy / paste

İLE TAŞIYALIM
TİP BAZINDA
GURUPLANDIRMA
YAPALIM

AYRICA
ControlP5 KÜTÜPHANESİ
ÇEŞİTLİ ELEMANLAR
BARINDIRIYOR

BU YÜZDEN ControlP5
KÜTÜPHANESİNİ
TEK DEĞİŞKENLE
PROGRAMIMIZA
YANSITABİLİRİZ
Küçük harfle
Büyük harfle başlıyor
başlıyor

ControlP5 TİPİ controlP5


DEĞİŞKENİ İLE
PROGRAMA YANSITILDI.

SETUP İÇİNDE
controlP5 DEĞİŞKENİ
new
İLE AKTİFLEŞTİRİLİR

controlP5 = new ControlP5(this)


KENDİ İÇİNDE DİĞER ELEMANLARI
BARINDIRAN OBJELER
new
İLE LOKAL BİR DEĞİŞKEN VASITASIYLA
HAFIZAYA YERLEŞİR
örnek :
ConrolP5....elemanları olan kütüphane
Table..........KOLON VE SIRA KOLEKSİYONU
Array..........String[ ] titles, Float[ ] values,

table = new Table();


titles = new String[16];
values = new Float[16];
units = new String[16];
DENEY VERİLERİ
ARDUINO MEGA VEYA UNO
KART İLE ELDE EDİLECEKTİR

ARDUINO KART İLE SERİ PORT


ÜZERİNDEN VERİ ALIŞ / VERİŞİ
YAPILACAKTIR

VERİ AKIŞI MESAJLAŞMA İLE


KONTROL EDİLMEKTEDİR
processing.serial
İLAVE EDİLMİŞTİ
Serial TİPİNDE MySerial
DEĞİŞKENİ DEKLARE EDİLİR

Serial MySerial;
MySerial <new> İLE AKTİF
DURUMA GELDİ
VERİ ALIŞ / VERİŞİ boolean
TİPİNDE StartTest == true
OLUNCA BAŞLAYACAK.
BU KISIMDAKİ
if (...)
{
}
İŞLEMLERİ FARENİN TUŞUNA BASILINCA ÇAĞRILAN
<void mousePressed()> PROSEDÜRÜ İÇİNDE ÇALIŞIYOR.

FARENİN OKU Aheatmenu_Test


ÜZERİNDEYSE
Aheatmenu_Test.isPressed() == true
VE
StartTest = false;

BUNDAN SONRASI SÜREKLİ (loop)


TEKRARLANAN
void draw()
{

}
İÇİNDE OLUŞUYOR.
SETUP()
Draw() SONSUZ ÇEVRİM HALİNDE
BİR DEFA ÇALIŞACAKTIR
ÇALIŞIRKEN PROGRAMI
SONRA SONSUZ DEFA
DURDURMAK İÇİN ÖZEL
Draw()
MÜDAHALE GEREKMEKTEDİR
ÇALIŞACAKTIR
StartTest == true OLANA
KADAR draw() ÇALIŞACAK
ANCAK İŞLEVSİZ OLACAK.

ARDUINO İÇİNE YAZILAN PROGRAMIN DA


<SetUp()> VE <draw()> PROSEDÜRLERİ VAR

draw() PROSEDÜRÜ SÜREKLİ MESAJ


BEKLER. BU MESAJLAR BELİRLEYİCİ
OLMAK İÇİN BAŞLARKEN “<“ VE BİTERKEN
“>” İŞARETLERİ KULLANIR.

“<“ İŞARETİ OKUNUNCA KONTROL MESAJI


GELDİĞİ ANLAŞILIR VE “>” İŞARETİ
OKUNUNCAYA KADAR DEĞERLENDİRİLİR.
USB ÜZERİNDEN
MySerial.write("<RA>");
“<RA>”
MESAJI GÖNDERİLECEKTİR.
BU MESAJ ALININCA ARDUINO 16 VEYA
8 ANALOG KANALI OKUR, DEĞERLERİ
YAZIYA ÇEVİRİP BİR SATIR OLARAK
GERİ YOLLAR.

ARDUINO İÇİNDEKİ PROGRAM


VERİLERİ İÇEREN SATIRI GÖNDERDİKTEN
SONRA DİNLEMEYE GEÇER VE YENİDEN
“<RA>” MESAJI GELİNCE AYNI ŞEYİ
TEKRARLAR.

BU DURUMDA VERİ AKIŞ HIZINI KONTROL


EDEBİLMEK İÇİN BİLGİSAYARDAKİ
PROGRAMIN ARDUINODAKİ PROGRAM
SÜRESİNİN ÜZERİNDE ZAMAN ARALIKLARI
OLMALIDIR.
PROGRAM “<RA>” MESAJINI GÖNDERDİKTEN SONRA
110 ms BEKLEYİP while DÖNGÜSÜNE GİRER

MySerial.write("<RA>");
delay(110);
while (MySerial.available() > 0)
{

NELER OLUP BİTTİĞİNİ


ANLAYABİLMEK İÇİN
<< Help >>
MENÜSÜNDEN
<< Reference >>
SEÇELİM VE ARAMA KUTUSUNA
“serial” YAZALIM
TARAMA SAYFASINDAKİ
İLK SEÇENEĞE
TIKLAYALIM
PROCESSING İÇİNDEKİ Serial
SINIFININ BÜTÜN FONKSİYON,
PROSEDÜR VE DİĞER DIŞARIYA
AÇIK DEKLERASYONLARI
BURADA LİSTELENMEKTEDİR.

while (MySerial.available() > 0)


DÖNGÜSÜNÜN ŞARTI OLAN
available() ÜZERİNE TIKLAYALIM
int TİPİNDE BİR DEĞER
GERİ DÖNÜYOR
BU DEĞER ARDUINO
TARAFINDAN SERİ
PORT ÜZERİNDEN
GÖNDERİLEN BYTE
SAYISINI VERİYOR
BÖYLECE ARDUINO
TARAFINDAN SERİ PORT
ÜZERİNDEN 1 VEYA DAHA
FAZLA BYTE GÖNDERİLİNCE
while DÖNGÜSÜNE GİRİLİYOR

ŞİMDİ DE
myString = MySerial.readStringUntil(nl);
NEDİR ? ONA BAKALIM.

readStringUntil(nl) KENDİ İÇİNDE


OLDUKÇA AÇIKLAYICI YİNE DE
ARAŞTIRALIM
String TİPİNDE
DEĞERLE GERİ
DÖNÜYOR

OKUMA, İSTENEN BYTE


DEĞERİNE
ULAŞINCAYA KADAR
SÜRÜYOR

İSTENEN BYTE DEĞERİ


10 (SATIR SONU) İSE
BİR SATIR OKUNUYOR
VE İŞLEM BİTİYOR
global
İÇİNDE
int nl = 10
OLARAK DEKLARE EDİLDİ

BU DURUMDA ARDUINO,
SONUNDAKİ BYTE DEĞERİ 10 OLAN BİR SERİ BYTE
GÖNDERİNCE BUNLARIN HEPSİ BİR ARAYA GETİRİLİYOR
VE DIŞARIYA String OLARAK GÖNDERİLİYOR.

BÖYLECE String TİPİNDEKİ myString OLUŞUYOR.

myString BİR SERİ BYTE DAN


OLUŞUYOR BUNLAR VERİLERİ
OLUŞTURAN RAKKAMLAR,
VE VERİLERİ AYIRAN
<< ; >> VEYA << \t >> GİBİ
KARAKTERLER OLUR.
PROGRAMI
ÇALIŞTIRALIM VE
<< DENEY >> MENÜSÜNE
TIKLAYALIM

myString = MySerial.readStringUntil(nl);
println("myString = " + myString);......İLAVE EDİLDİ

ARKA ARKAYA myString


OKUNUYOR VE GÖRÜLDÜĞÜ
GİBİ BUNLARDAN BAZILARI DA
<< null >> OLARAK YANİ BOŞ
SATIR OLARAK OKUNUYOR.
BEKLEME SÜRESİNİ 110 ms
DEN 400 ms YE ÇIKARINCA
SORUN ÇÖZÜLÜYOR
myString BAŞARILI BİR ŞEKİLDE
OLUŞUNCA DEŞİFRE EDİLMESİ İÇİN
int ierror = parseString(myString);
FONKSİYONU ÇAĞRILIYOR

BU FONKSİYON BAŞARILI OLUNCA


ierror == 0 OLARAK GERİ DÖNÜYOR
int parseString(String s)
{
int result = 0;
int i, j;
String s1,s2,s3;
j = s.indexOf('<');
s1 = s.substring(1);
if (j == 0)
{
while (s1.indexOf('/') > 0)
{
i = s1.indexOf('/');
s2 = s1.substring(0, i);
values[j] = float(s2) * 5.0 * (4.67 / 4.72) / 1023.0;
s3 =s1.substring(i+1);
s1 = s3;
j++;
}
}
else
{
result = 1;
}
return result;

You might also like