Gelecek Gelirken: Start day / Başlangıç günü

(Daha ilk cümleyi yazmaya başlarken, sanki açmış da canım Carl’s Jr.’dan  BBQ çekmiş gibi, Terminator izleyip öyle yazasım geldi 🙂 Fakat ki o kadar zaman lüksüm yok.)

Görsel


Mesele Enigma‘ya ve Alan Turing‘in “Makinalar Düşünebilir mi?” yahut “Turing Testi“‘ne kadar götürülebilir. Ancak biraz daha kitabın ortasını okuyacağım.

Önceki yazıda That Day diye adlandırdığım bir gün vardı. Benzer şekilde, isimlendirdiğim bir gün daha var:
Start Day.

 

IBM: Ne içerdi bilmiyorum ama “Eruzum’da İyigören soy isimli bir aile varmış. Çok zeki bir çocukları varmış. Bunu yurt dışından çağırmışlar, gel zaman git zaman bu çocuk IBM (“İyi gören Bilgisayar Merkezi”) isminde bir firma kurmuş”.. şeklinde bir masal anlatırdı lisedeki matematik hocalarından birisi.. )

1950‘ler..
Bilgisayarda Satranç hesapları, IBM çalışanlarının ilgisini çekmeye başlar.

Yıl 1985.
Carnegie Mellon Üniversitesinden Feng-hsiung Hsu, tez konusu olarak “Chip Test” adıyla Satranç Oynama Makinası üzerine çalışmaya başlar. Bir süre sonra sınıf arkadaşı Murray Campbell da proje üzerinde çalışmaya başlar ve Deep Thought/Derin Düşünce fikri şekillenmeye başlarlar.

Yıl 1989.
İkili IBM’in Araştırma departmanında işe başlar. Mevcut IBM kadrosundaki Joe Hoane, Jerry Brody and Chung-Jen Tan‘ın da katıldığı bir ekip kurulur. Ve yeni ekip projeyi (ve işlemleri yapacak süper bilgisayarı) Deep Blue olarak isimlendirir.

Yıl 1996.
-Youtuber’lardan çok önce- Big Challange! Deep Blue, dünya Satranç Şampiyonu Garry Kasparov’a meydan okur. Maçlar yapılır. Kasparov kazanır, Deep Blue kaybeder.

[Bu arada, bu nasıl güzel bir AR-GE mezhebidir ki; 7 Yıl boyunca “Sen yeter ki Araştır ve Geliştir” deyip, donamım ve personel imkanı sunmanın yanında üstüne her ay dolarla para veriyorlar]

Yıl 1997.
Rövanş. İzleyicilerin hazır bulunduğu küçük bir televizyon stüdyosunda, kameralar çalışmaya başlar. 500+ kişilik taşan kalabalık tiyatro koltuklarında konuşlanmıştır. İlk maçı Kasparov kazanır. Fakat toplam 6 maçlık oyunun nihayi  kazananı Deep Blue olur.

 

 

Makinaların yükselişinde, çok önemli bir kale alınmıştır. Buharlı makinaların çok ötesine geçmiş olan Dijital devrim, insanların zapt ettiği bir kaleyi fethetmiş, göndere 1 ve 0 dan oluşan bayrağını dikmiştir.

Belki de bizim kuşağımız için denilebilir ki; Gelecek, o gün başlamıştır.
11 Mayıs 1997

Gelecek Gelirken: That Day.. / O Gün..

Halen ToDo listemde bekleyen “Harari” yazıları var. Onun kadar geniş perspektifte ve hayatın farklı alanlarına, farklı açılardan bakmak için blog yazıları hayli kısıtlı bir alan sayılabilir.

Bununla birlikte, HomeDeus’un 9. Bölüm’ünde taş atılan mevzulara kendi çapımda ben de taş atmak için, ufak tartışmalar yapabilirim. Bu bağlamda henüz uzunluğunu kestiremediğim bir Gelecek Gelirken serisi güzel olabilir 😉

 

“That Day”

CGI Character  terimi ile tanıştığım gün, kafamda şimşekler çakmıştı: Bilgisayarda tasarlanmış bir karakter.

— E ne var ki bunda? Street Fighter zamanından bu yana, bilgisayar ortamlarında insan çiziliyor ve hareketi sağlanıyor. Hatta konsolu elimize alıp, o karakteri biz bile yönetiyoruz.

Evet. Ama biraz daha abartsak 😉

Hatta “biraz”dan çok çok fazla abartsak. Mesela 3D karakter uzmanları, CGI artistleri öyle bir karakter tasarlasınlar ki, başta Göz ve mikro mimikler olmak üzere karakterin hareketleri müthiş gerçekçi olsun.

 

Ve dahi, bu karakter bir filmde oynasın. Dünyanın değişik coğrafyalarında aylarca gösterimde kalsın, CD’leri çıksın (şimşek düştüğü zaman CD’ler vardı), aradan 2 yıl geçtikten sonra, filmin yönetmeni bir basın toplantısı yapsın ve oyunculardan birinin tamamen bilgisayar grafikleri ile oluşturulmuş bir karakter olduğunu açıklasın.

// Bu düşüncelerden çok sonra öğrendim ki benimle aynı şeyleri düşünen başkaları da varmış. Ve hatta bunu film yapmışlar: S1m0ne 

O günü, yıllardır kendi çapımda “That Day” olarak adlandırıyorum.

Zira O Gün’den sonra, sinema sektörü bir daha eskisi gibi olmayacak. Şimdilerde -özellikle ILM ve Marvel aşkınlıkları sonrası- çok fazla efekt yapılıyor. Ve giderek daha fazla saniyede, CGI yer alıyor. Ama TAM manasıyla “O Gün”ü henüz yaşamadık.

Böyle bir gün sonrası yapımcılar;  Tom Cruise’a her film için 75 milyon$ vermek yerine, çok daha az maliyetle üretip, mülkiyetine sahip oldukları Digital Oyunculara yönelecektir.

 

 

Yapay zekanın hiç var olmayan ancak uzmanları bile ikna edecek derecede Rembrant çizdiği düşünülürse, harika mimikleri olan bir Dijital Oyuncu demek, bol bol film izlemiş bir yapay zekanın, 3D karakterin kaslarını (pixellerini) yönetmesi demek.

“O Gün”ü hatırlatan yeni şeyler karşıma çıktığında, sağda solda paylaşırken “That Day coming.. / O Gün geliyor” başlığı ile paylaşıyorum.

Onlardan bazıları..

 

“Eye Piece” by Chris Jones

 

“E” by Chris Jones

 

“Someone” by Dexter Studios (Konu görseli de buradan)

 

“Project Vincent” by GiantStep

 

Animatrix serisinde de çok güzel bi örnek var ama şimdi oraya girersem çıkamam 🙂
O zaman, -şimdilik- kapanışı şununla yapayım:

“Siren” by Next Studios, 3Lateral Epic Games, Tencent, Vicon and Cubic Motion.

 

Bitcoin’de Altın Çanak Formasyonu

Öncelikle: Literatürde “Altın Çanak” diye bir terim yok.

Ama “Çanak Formasyonu” var. Ve de formasyonlardan bağımsız Altın Kesişme / Golden Cross var.

Golden Cross: 50 günlük ortalamanın 200 günlük ortalamayı geçmesi demek. Ve bugün itibariyle, Bitcoin’de Golden Cross gerçekleşmiş durumda 😉
// Ortalamalarla ilgili daha fazla yazı için şuralarda turlayabilirsiniz 😉

Çanak Formasyonu ise; oluşan grafiklerde görsel olarak ortaya çıkan şeklin bir çanağa ya da bir fincana benzemesi. Görsel birkaç örnek eşliğinde biraz açalım.

 

 

Beyoncé ne alaka di mi?
Google’a göre Bowl Formation demek bu demekmiş
Komik ama gerçek. ABD’nin EN çok aranan, en çok rekorların kırıldığı zamanlardan birisi Süper Bowl. Yani Bowl kelimesini arayan birisinin “Süper Bowl”u arıyor olma ihtimali feci halde yüksek.

E bir de Beyoncé bacımız, Formation ismindeki parçasını Süper Bowl da söyledi ise.. daha ne olabilir ki.

Bu arada, Ezici olasılıkların, olası farklı sonuçları için bakınız: I Robot Filmi.


artificial-intelligence.blog


Çanak formasyonu için grafik örnek verecektim, Arif’in Manchester’a attığı gole döndü.. 

Anyway..

Aşağıdaki grafikte, ilk olarak Ters Omuz Baş ya da Üçlü dip gibi formlar dikkat çekse de, gözlerimizi biraz daha yukarı kaydırdığımızda fark ediyoruz ki;
Net bir düşüş hareketi başlamış, ardından bir kaç dip ile bu düşüş frenlenmiş (hatta kısmen alt taraflarda yatay bir bant oluşmuş),
sonrasında da adeta bir fincanın kulbu gibi bir kulp oluşmuş.


investopedia

Burada Teyit aramamız gereken nokta şu:
Bir, Fincanın Sol üst tarafı ile, Sağ üst tarafı hemen hemen aynı seviyede mi?
İki, Kulp hareketinin sonlandığı nokta, Fincanın üst seviyesi ile aynı mı?

Bir örnek daha bakalım:


altin.in

Özellikle bir nolu çanakta, Fincan ve Kulp kısmı gayet net bir şekilde görülebiliyor.


Gelelim, artık Altın Kesişmesini gerçekleştirmiş haldeki Bitcoin’e..

Bana göre, -Limitless filmindeki ilgili sahnedeki gibi (ya da dizisi den de hatırlıyor olabilirim) rakamlar, kendine has iniş çıkışlarıyla adeta resim çizmiş durumda ve çizmeye de devam ediyor.

Ama kendi gözüme kestirdiğim yerleri hiç işaretlemeden yorumları size bırakayım 😉


tradingview screen shot / Kapak Görseli

Umursasak da mı saklasak, umursamasak da mı saklasak

Bir süredir etliye, sütlüye, devlete, topluma, aileye, eğitime ve benzerlerine çok daha az kafa yoruyorum.

Bunun başat iki sebebi var:

  1.  Son zamanlar için…
     
  2. Mazoşizm’in de özgürlüğe dahil olması.


Görsel

Önce biraz Grafik, biraz Matematik..

Her şey o kadar NET ortadaki, açıklama yapmak okuyana hakaret bile sayılabilir. Ama “hayatım boyunca sözelci idim, grafiklerden hiç anlamam” diyenler için 2 satır yazayım:

Dolar, Hep artmış ve Hep Artacak. // Geleceği biliyorum evet 🙂
[Ne zamana kadar? “Pişt ABD, Kanada’ya koyduğum ambargoyu delersen, ben de Beyaz Saray’ın çatısını delerim” diyebileceğimiz zamana kadar]

Cehennem, Damat’ı ve kayın pederini havada kapacak..
Emek emek çalışanından, emeklisine, çoğundan ayrı çalışmak zorunda kalan anneden, annesiz öksüze.. herkes fakirleşti. Damat’ın ülkeye verdiği zarar Darbenin yaklaşık 3 Katı büyüklüğünde. İnanmayan eline cetvel alıp yukarıdaki rakamların arasını ölçebilir.

Hal böyle ayna gibiyken iken, Neden %çoğunluk,  30 liraya aldığı ürün 50 lira olmuşken, 80 liraya da gitmesinin önünü açacak şekilde oy verdi diye sorulabilir..

Bunun sosyolojik, siyasal ve psikolojik pek çok açıklaması olabilir ancak şu anda Reel-Matematik-Gerçeklerden, yorumlara açık konulara geçme niyetim yok.

Zira;
Göbeğini kaşımak da, Bile bile lades demek de demokrasiye dahil..
30 yıldır CHP’den / Milliyetçilerden / Sağdan / Soldan başkasına oy verdim diye safiyane böbürlenmek de.

Oysa gelişimi sağlayan dönekliktir. Hengameli bir tartışmadayken, elimizi güçlendirmek için “İyi de kardeşim Bilimsel olarak kanıtlanmış…” cümlesini, savımıza garnitür yaparken gözden kaçırdığımız bir şey var: Bilim, dönek ve kaypaktır. [Bkz: Yıllarca ülser, “bilimsel olarak” psikosomatik bir hastalık iken, sonradan bir tür bakterinin sebep olduğu mikrobiyal bir hastalık olabilir ve yine bilimsel olarak elbette. Kaldı ki önümüzdeki hafta, yine bilimsel olarak genetik bir hastalık olarak tanımlanabilir]

Sadece siyasi konularda değil Her konuda, doğruyu fark ettiğinde; onlarca yıllık geçmişiyle/kendisiyle ve çevresiyle çatışmak pahasına bile olsa, Doğruya yönelmek bir Erdemdir.

Bununla birlikte çok ne yazık ki, özellikle TR’de günlük hayat dinamikleri böyle işlemiyor.

“Fenerbahçe’nin borçlarından devlete ne arkadaş, halk nasıl ödüyorsa onlar da ödesin borcunu” demesini beklediğin asgari ücretli bir çalışan, bundan memnunluk duyup, “helal olsun” çekebiliyor.

Yahut, sanki kendisi de hastaneler-eczaneler arasında zincir dokurken, önce doktordan sonra eczacıdan sonra yeniden doktorlardan hat-trick zulüm görmüş bi kişi, akla zarar bir şekilde “hastane de yapmasalardı” diyebiliyor.  Ya da bir başkası sırf rakipleri yaptığı için hızlı trene karşı çıkabiliyor.

Kürtlük, Türklük, Din ve Atatürk mevzuları var ki, siyasetine bunları alet etmeyene siyasetçi,
bu zokaları her seferinde yemeyene seçmen denilmiyor neredeyse, o derece..

Atalarımız,
her görüş için üstelik her ülkede geçerli bir söz icat etmiş:
Öyle saça böyle tarak..

Uzun süredir ülke gündeminden kopmuştum ama arkadaş sohbetlerinde ara ara kendimce iyi olabilecek fikirlerimi beyan ediyordum. Lakin havanda su dövmekten öte gitmeyen KOCAMAN bir zaman kaybından ibaret her şey. Acı ama böyle.

Her şeyi geçtim, Çocuklara ve Kadınlara yapılan şiddet ÇIĞ gibi büyürken, HİÇ BİR Siyasi lider bunu kendine DERT edinmiyor. ÇIĞLIK Çığlık meydanları, TV ekranlarını inletmiyor. Koltuk mücadelesi yaptığı rakibini anlatırken boyun damarları şişe şişe haykıranlar, sümbül kokulu bir çocuğa yapılan zulüm karşısında Kıyameti koparmıyorlar.
Bir caninin 13 kez serbest bırakılıp ardından katliam yapması karşısında, 13 gün Açlık Grevi yapmak ya da kravat taktı diye serbest bırakan hakimler hakkında suç duyurusu yapmak şöyle dursun, içtenlikle 13 DAKİKA bile gündemine almıyor HİÇ BİRİ!

Düşündükçe o kadar deli oluyorum ki, affınıza sığınarak küfredeceğim.
Başta Çocuklar ve Kadınlar olmak üzere, güçsüzleri ve ezilenleri dert etmeyen güç sahiplerinin Hepsinin Allah Belasını Versin!

Madem gündemle(?) ve siyasilerle ilgilenmiyorum, bunca şeyi neden yazdım?
Siz de onları umursamayın, onların hiç birinden bir şey beklemeyin diye.

Herkes kendini geliştirse ve çevresinden bir iki kişiye örnek olsa, ülke ve gezegen mertebe atlar.
Biz kendi işimize, eşimize, çocuğumuza, çevremize; siyasileri ve tepedekileri umursamadan, öyle bi odaklanalım ki,  her şeyi öyle güzel yapalım ki, onlar bizi takip etsin biz onları değil.

 

Dijital Ay Çiçeği #3 Dön Bebeğim

Tarkan’ın Mavi Ceketli olduğu zamanlar vardı.. Efendi, uslu, musikişinas bir topluluğun seveceği Türk Sanat Müziği söylediği zamanlar..

Sonra parladıkça parladı..

Dön Bebeğim parçası önceki ve sonraki iki dönem arasında bir yerlere tekabül ediyor sanırım. Zira klipten anlıyoruz ki, artık çekimler yurt dışında yapılıyor, Mavi ceket hala var ama bir yandan da muzırlıklar başlamış..

 


 

Klipteki müzik kutusu balerini nasıl dönüyorsa bizim de elimizdeki güneş panelini döndürmemiz lazım 😉

Birinci yazında hazırlık yapmış, ikinci yazıda da cihaza elektrik geldiğinde ilk defa -ve bir defa- çalışacak olan Setup() fonksiyonumuzu yazmıştık.

Toplu ve sadeleşmiş hayliyle şöyle:

Burada, sadelik açısından kodların sadece tek ekseni kapsadığını hatırlatmak isterim. Güneşi doğudan batıya takip etmek elbetteki güzel. Ancak İDEAL bir sistem için yeterli değil. Panel, doğu-batı ekseninde dönerken aynı zamanda panelin yüzeyini yukarıya ve aşağıya bakacak şekilde de hareket ettirmemiz lazım.

Öğlen vakti sadece güney dönmüş bir paneldense, güneye ve yüzeyi yukarı bakan bir panel çok daha verimli olacaktır. Bu yüzden ideal bir sistemde aşağıdaki xMotor.attach(6); // Tek motor için
xMotor.write(aci); 
 kısımlarından birer tane daha olmalı 😉


#include
Servo xMotor;
const byte ldrSag=A1;
const byte ldrSol=A3;
byte aci=90;
int gunesSag, gunesSol;
void setup() { Serial.begin(9600);
// servo için PWM pinleri 3-5-6-9-10-11 olabilir
xMotor.attach(6); // Tek motor için
xMotor.write(aci);
}

 


Güneş (dünya) sürekli hareket halinde olduğuna göre, bizim de sürekli güneşin yerini bulmamız gerekiyor.

Bu yüzden iki ayrı koldaki IŞIK Şiddeti değerlerini karşılaştıracağız ve Sonsuz bir döngü içinde olacak.

 

Şimdii..
Diyelimdeki Sağ taraftaki ışık soldakinden fazla.

Motorun Sağa dönmesi lazım değil mi.. //ki Ay çiçeği olsun 😉

O zaman şöyle bir şeyler yazalım:

if (gunesSag > gunesSol) {
gunesSag = analogRead(ldrSag); gunesSol = analogRead(ldrSol);
Serial.print("sag"); Serial.print(gunesSag);
Serial.print(" Sol"); Serial.println(gunesSol);
aci = aci + 1;
xMotor.write(aci); delay(100);
}

Görüleceği üzere
güneşSağ>güneşSol İSE,
AÇI değerimizi bir arttırıyor ve Motor’a bu açıyı gönderiyoruz.

Motor o esnada atıyorum 27 derecelik konumda ise 28 dereceye dönüyor.

–E ama 1 dereceden ne olacak ki? 

Evet. İşte bu yüzden Loop() içinde, yani;
100 mili saniye sonra diğer IF‘e geçecek, ( delay(100) )
ve kabaca yarım saniye içinde Işık değerlerini yeniden okuyacak ve gerekiyorsa 1 derece daha dönecek.


Pek tabi iki taraftaki ışık değeri eşit ise, güneşi bulduk demektir. Dilerseniz burada bir süre (10 saniye 10 dakika..)  bekleyebilirsiniz.

1 dakika beklesin / dakika da bir kontrol edip o zaman dönsün derseniz; delay(1000*60) 
5 dakikada bir kontrol etsin derseniz;  delay(1000*60*5) kullanabilirsiniz 😉

 


Görsel

 

Dijital Ay Çiçeği: Güneşe Dik

Bkz 1. Bölüm:  Dijital Ay Çiçeği #1 // 8000$ Değerinde post


Önceki bölümde, olayın genel mantığından bahsetmiş ve kodlarda kullanacağımız değişkenleri tanımlamıştık.

Ardından, sadece ilk seferinde çalışacak olan setup kodlarımızı yazmıştık.

Son duruma toplu halde bakalım:

#include
Servo xMotor;
const byte ldrSag=A1;
const byte ldrSol=A3;
byte aci=90;
int gunesSag, gunesSol;
void setup() { Serial.begin(9600);
// servo için PWM pinleri 3-5-6-9-10-11 olabilir
xMotor.attach(6); // Tek motor için
xMotor.write(aci);
}

Burada void Setup içinde, Serial.begin ile seri portu ekranda görme işlemini başlatmış oluyoruz.

Isim.attach(6) ile de 2. satırdaki xMotor adıyla oluşturduğumuz Servo nesnesine PİN numarasını bildiriyoruz.

Yani fiziksel olarak Servo Motor’u bağlayacak olduğumuz pin 6 nolu dijital pin. 6 yerine yukarıda PWM olarak belirtilen diğer pinler de olabilir.

İşin icraat kısmında ise İLK eylem olarak yaptığımız şey, Servo Motor’a SIFIR açısına gitmesini söylemek:

Ancak görüleceği üzere xMotor.write(0) yazmak yerine xMotor.write(aci) yazdık.. Neden?
Çünkü ilk bölümdeki tanımlamalar kısmında aci=0 değerini vermiştik.

x, y, aci ve benzeri değişken kullanmak bize “aci+15” örneğinde,
60+15 gibi sabit bir sonuç vermek yerine “daima mevcut açının 15 fazlası” şeklinde esneklik sunacak.


:)) ünlü düşürler


Sürekli dönecek olacak loop() fonksiyonumuzu yazalım:

Temel amacımız: Güneşe Dik olmak.

O halde şöyle bir kurgu yapabiliriz;
Bir elim pencereye bir elim odanın içine doğru olacak şekilde iki kolumu açsam.. Camdan taraftaki elime daha çok ışık düşecektir. Kollarımı bozmadan yüzümü pencereye doğru dönsem.. iki elimi birleştiren eksen, pencerenin olduğu duvar ile paralel konuma geldiğinde.. İki elime düşen ışık miktarı eşit olacaktır.

O halde, güneşe dik olmak demek, İki elime de düşen ışık miktarının eşit olması demek.

Peki ışık miktarını nasıl ölçeceğiz?

LDR: Işığa duyarlı direnç ile.

Aslında en temelde ilköğretim gördüğümüz Direnç ölçümü yapacağız. Sadece elimizdeki direnç, üzeri renkli çizgilerle kaplı olan direnç olmayacak da, üzerine düşen ışığa göre direnç (ohm) değeri değişen bir direnç olacak.

Hani karanlıkta yanan küçük gece lambalarının yanmasını sağlayan minik şey.


roboturka

Teoriden pratiğe gelirsek; Güneş panelimizin ön yüzünde, karşılıklı iki ayrı kenara birer tane LDR koyacağız.

Bunlara düşen ışık miktarını okuyacağız ve bunların eşit olmasını sağlamak için Servo Motor’un dönmesini (paneli döndürmesini) tetikleyeceğiz 😉


Görsel

Dijital Ay Çiçeği #1 // 8000$ Değerinde post :)

İtiraf: Güneş takip sistemini tarif etmek için Digital Ay Çiçeği tabiri çok hoşuma gidiyor. Yazının kapak resmi olması için bununla ilgili bir şeyler ararken, karşıma görseldeki Robotic Sunflower Umbrella diye bir şey çıktı. Ve değeri 8000$ mış. Ben de başlığa bunu ilave ettim 

Biz güneş panellerini daha verimli kullanmak için, güneşi takip ettireceğiz. Onlar da güneşi takip ettirmiş ancak şemsiye yön vermek amacıyla. Bu da çok güzel fikirmiş! Alkışlıyorum.

Malumunuz Dünya, Güneşin etrafında dönerken “mükemmel çember” yerine Elips bir yörüngede dolanıyor.


wikipedia 0

Ve bu yüzden küçükken kışların; dünyanın güneşe uzak olduğu zamanlar,
yazların ise dünyanın güneşe yakın olduğu zamanlar gerçekleştiğini sanırdım.

Yukarıda görselde de görüleceği üzere: Asıl etkili mesele bu değil. En uzak olduğundaki aylardan biri Temmuz, en yakın olduğu tarih ise 3 Ocak.

— Ee? O zaman -40°C ile +40°C gibi 80 dereceye varan farklar nasıl oluşuyor?

— AÇI.

Güneş’in açısı ne kadar DİK AÇI ile gelirse o kadar sıcak oluyor.

Özetle;
27 derecelik açı, 5 milyon kilometre mesafeden daha etkili.

[Bu arada “dünya güneşe 10 cm daha uzak/yakın olsa, hayat olmazdı” sözünün ne kadar Hurafe olduğu aşikar.]

Bu durumda, öylesine güneye bakan güneş panelleri yerine, gün içinde güneşle birlikte hareket ederek daima dik açıyı yakalamaya çalışmak, yazla kış farkı kadar önemli.

Let’s do it

NŞA’da paneller çift eksende hareket etmeli. Ama karışık olmaması için tek motorla gidelim..

Burada sadece xMotor kullanacağız.

Benzer şekilde daha iyi anlaşılması için aşağı yukarı eksenlerini şimdilik pas geçeceğiz ama mantığın aynı olduğunu sanırım söylememe gerek yok. Sağdan sola doğru dönen, elimize alıp motoru çevirdiğimizi düşünün. Bu kez de yukarıdan aşağıya yahut çapraz dönecektir.

Sadeleşmiş halleri şöyle;

#include <Servo.h>
Servo xMotor;
const byte ldrSag=A1;
const byte ldrSol=A3;

#include Servo.h kısmı, Servo motorun sürücüsünü içeri çağırdığımız kısım.

ldrSag, Güneş Panelimizin sağ tarafına yerleştireceğimiz Işık Sönsörü (LDR) ‘yi bağlayacağımız Analog Pin

ldrSol da diğer taraftaki için.

Şimdi de panelin Dönüş Açısı ve bunu hesaplamak için kullanacağımız değişken tanımlarını ilave edelim.

Ok.
Cihazımıza ilk elektrik geldiğinde BİR sefer çalışacak olacak, Setup() fonksiyonumuzu yazalım.

Sade bir kullanım isteyenler dikey-yatay eksen kodlarını kullanmayabilir. Yani sadece tek eksen için şunlar yeterli:

void setup() { Serial.begin(9600);
// servo için PWM pinleri 3-5-6-9-10-11 olabilir
xMotor.attach(6); // Tek motor için
xMotor.write(aci);
}

Burada dikkat edilmesi gereken bir nüans var: Servo motorun bağlanacağı pinler, PWM özelliğine sahip pinler olmalı. Kullandığınız karta göre göre bu değişebilir. Bizim örneğimizde yukarıda açıklama kısmında geçen pinler kullanılabildiği için bunlardan bi tanesini (6 nolu pini) seçtik.

Hazırlıklarımız hazır.

Devam eden yazıda,
Ay Çiçeği mantığının nasıl işlediğini buna benzer bir algoritmayı bizim nasıl kurgulayabileceğimize bakacağız ve bakmakla kalmayıp panelimizi ay çiçeği gibi güneşe döndürecek kodlarımızı da yazacağız.

 

NodeJS’de Pixel Pixel Resim Oluşturma

Bilen biliyor ki NodeJS ısınılası bir bir şey değil. “Şifre yanlış olunca sayfayı yenilemeden, inputbox’a renk vermek ne demek, Javascript ile web sayfası üzerinde koşan oyun yapıyorum, websoket üzerinden Coin borsaları arasında Asenkron arbitraj yaptırttırıyorum” diyecek birisi için güzel olabilir. Ama ortalama bir sunucu için Python ve Flask/Boiler/Django gibi sade ve işlevsel aksiyonlar varken node biraz maliyetli bir araç.

Hem Callback de bi nevi Senkrona zorlama değil mi sonuçta.
Netflix yapıyorsan, aynı ada 100’lerce kişi makinana bağlanıyor ve her biri uzun işlem öbekleri çalıştırıyorsa eyvallah, çok güzel. Ama orta halli ihtiyaçlar için callback cehennemlerinde beyin yakmanın alemi yok 

Node için hislerimi bi kez daha anlattığıma göre devam edebiliriz 😉

Geçen gün etasarim hocamla yorumlaşırken bir site geçmişti: Coolors.co

Çok tatlı ve güzel bir site. Klasik renk paletleri yerine Hue, Saturation ya da tek tıkla ana rengi kaybetmeden tonlarını veriyor olması da hayli kullanışlı.

 

Sitede hayli vakit geçirince, ister istemez üzerinde çalıştığım işe de bir şeyler sirayet etti 🙂

Şöyle Coolors.co tasında, öndeki her bir Rakamın değerine göre Otomatik Arka Plan Resmi oluştursak?

OMG! Çok güzel olabilir! Ama yine bir hafta+ daha atabilir :/S

Ne demişler;

Önemli olan, delin aklına taşı getirmek 🙂

Her bir Pixel’i kontrol edebileceğim bir şeyler lazımdı. Bolca ve bolca npm paketleri baktım.. Çoğunu denedim ve çoğu daha read.me sayfasındaki kodlarda bile hata verdi. Bazıları fazla lüx, bazıları da komplike geldi. Her şey göz önünde,  sade ve kullanışlı bir şey arayışıma en yakın cevabı pngjs-image kütüphanesi verdi.

Node ve nmp kurulu olduğunu varsayarsak,

npm install pngjs-image --save 
yazarak paketi indiriyoruz.

Ve başlayalım

Open’a aslında gerek yok ama biraz fantazi yapıp, resim oluştuğunda hemen bunu göstermesi için bunu da indirelim ve çağıralım.

npm install open --save 

İşin mantığında gelince, çok tatlı bir şekilde şöyle yazıyoruz:

Resmin X olarak 1. ve Y olarak 1. koordinatındaki Pixel’i
şu renk RGB(118,182,77)  yap.

Data Array’lar, Rowlar, satır sonu kontrolleri.. olmadan gayet anlaşılır ve kullanışlı.

Elimde şöyle noktalar var:

∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙

Bunların her birinin yerini ve rengini söylersek istediğimiz resmi pixel pixel oluşturabiliriz 😉

∙ ∙ ∙   ∙ ∙ ∙

       

∙ ∙ ∙   ∙ ∙ ∙ 

Her pixelin (daha doğrusu pixel gurubunun) Rengini de  bahsi geçen Rakam’lara göre ayarladık mı tamamdır, hedefe gidebiliriz 😉

Mesela yukarıdaki gibi Kahve – Su yeşili – Mavi kombini yapmak istiyorsak; pixelleri şöyle ayarlayabiliriz:

Kahve Kahve Kahve Su yeşili Su yeşili Su yeşili Su yeşili  Mavi Mavi Mavi
Kahve Kahve Kahve Su yeşili Su yeşili Su yeşili Su yeşili  Mavi Mavi Mavi
Kahve Kahve Kahve Su yeşili Su yeşili Su yeşili Su yeşili  Mavi Mavi Mavi
Kahve Kahve Kahve Su yeşili Su yeşili Su yeşili Su yeşili  Mavi Mavi Mavi

yani X koordinarlarından yan yana 3-4 tane Kahve, ardından 4-5 tane Su yeşili ve 3-4 Mavi

image.setAt(1, 1, { red:214, green:189, blue:167, alpha:1000 });
image.setAt(2, 1, { red:214, green:189, blue:167, alpha:1000 });
image.setAt(3, 1, { red:214, green:189, blue:167, alpha:1000 });
image.setAt(4, 1, { red:214, green:189, blue:167, alpha:1000 });

sonra 4 defa Su Yeşili  yani: rgb(211,255,244)
image.setAt(5, 1, { red:214, green:189, blue:167, alpha:1000 });
image.setAt(6, 1, { red:211, green:255, blue:244 , alpha:1000 });
image.setAt(7, 1, { red:211, green:255, blue:244 , alpha:1000 });
image.setAt(8, 1, { red:211, green:255, blue:244 , alpha:1000 });

Dikkat:  X koordinatı 5,6,7,8 olurken Y koordinatı hala 1
yani incecik yatay bir çizgi çiziyoruz.

sonra bu yatay çizgilerden 100 tane alt alta koyarsak 100 pixel yüksekliğinde bir resim elde etmiş olacağız 😉

600×600’lük bir resimde 360.000 pixel olduğunu sanırım söylememe gerek yok ve elbette tek tek elle yazmak yerine hayalimizdeki resme göre Döngüler oluşturabilir, içine otomatik artan X değerini ve Y değerini koyabiliriz.

Benim ilk denemelerim şöyle oldu 


Görsel