Tamam Sabah Söndü ama Akşam Olunca da Yansın

Önceki konular:
26 Satırda İsrafı Önleme
26 Satır Bahanesiyle, Ucundan Bit-Byte, MBit/s Meali
void loop() ve analogRead açıklaması
“Cihazın Algılaması” Dediğimiz Şey
Evdeki Hesap Döngüye Uymazsa


Yukarıda linki verilen önceki bölümlerde, kısaca “Gün ağardığında sokak lambalarının otomatik sönmesi” şeklindeki amacımızdan, değişken atama ve bit/byte kavramlarından, arduino özelinde loop() fonksiyonundan, sensörlerden çevresel veri okumak için analogRead() fonksiyonundan bahsetmiştik.

Ardından daha çok algoritma tarafının konusu olan IF/Şayet deyiminden/operatöründen bahsetmiştik.

Sonrasında, yazdığımız kod ilk seferinde çalışmış, ancak devamında Lambalar sönük kalmıştı.

Ve bunun sebebi cihazda mekanik, kodlarda yazım hatası olması değildi. Aksine hata vermeden ne söylediysek yapıyordu. Ancak bir robota “Bir bardak su getirmesini” söylediyseniz ve robot da bunu getirdiyse “iyi de bu neden soğuk değil” veya “Su dediysem meyve suyu anlasana işte..” diyemezsiniz.

Zira o, sizin söylediğiniz şeyi yaptı, söylemediğiniz bir şeyi yapmadı.

Bizim yaptığımız şeyde de buna benzer bir Cümleyi eksik/yanlış kurma durumu var:

Loop döngüsü var.. sonsuza kadar dönecek..
içinde LDR/ışık/x için bir sına var: 200’den büyükse, lambalara giden hattı kesecek..

Ok. Sorun da yok gibi..

mi? acaba?

Gün ağardı.. lambalar söndü.. tamam.

Peki akşam olunca?

Koda bakalım.. akşam için bir şey söylemiş miyiz? Hayır. 
“`
Işık çoksa, sön
Işık çoksa, sön
Işık çoksa, sön
..
..
“`

Tek söylediğimiz bu. Akşam yanması için herhangi bir şey söylemedik.

Şimdi yapmasını istediğimiz şey aslında yine bir Algılama.

Cihazdan “Akşam olduğunu algılamasını” istiyoruz. Yani -linkte de geçtiği üzere- efsanevi IF‘i kullanma zamanı 😉

Kodlarını yazalım..

“`
if (x < 500) {
digitalWrite(3, HIGH);
}
“`

Şimdi Arduino ile Empati zamanı  Kendinizi cihazın yerine koyun ve ADIM ADIM hatta gerektiğinde virgül virgül harf harf yazılmış olan kodları işlediğinizi düşünün. A=15, b$ = “Robbie” 😉 gibi değer atanan değişkenler fazla ise, elinize kağıt kalem de alabilirsiniz.

Bakalım..

int x;

void setup() {
  Serial.begin(9600);
  pinMode(A0, INPUT);
  pinMode(3, OUTPUT);}

void loop() { 
  x = analogRead(A0);
  if (x > 200) {
      digitalWrite(3, LOW); }

  if (x < 500) {
    digitalWrite(3, HIGH); }

}

Bu kodlar işimizi görecek.. Söylediğimiz cümleyi de düzelttiğimiz için, artık olması gerektiği gibi..
Ancak 🙂
Sabahın ve akşamın ilk saatlerinde lambaların korku filmlerindeki gibi yanıp söndüğünü göreceğiz..
?

 

Evdeki Hesap Döngüye Uymazsa

Önceki konular:
26 Satırda İsrafı Önleme
26 Satır Bahanesiyle, Ucundan Bit-Byte, MBit/s Meali
void loop() ve analogRead açıklaması
“Cihazın Algılaması” Dediğimiz Şey


Hatırlarsanız

// Sürekli çalışan fonksiyonumuz.

diye bir şeyden bahsetmiştik.

Bir nevi cihazda elektrik olduğu süre zarfında daima çalışan ana fonksiyondu. Ve alışageldiğimiz, program sonlarına adeta “bitmesin bu güzel hikaye” der gibi, her defasında başa alarak, sürekli dönmesini sağlıyordu.

Ve yine hatırlarsanız, bir önceki yazıda

‘ten bahsetmiştik.

Hatta bunun programcılığın iki harflik özeti olabileceğinden ve Algılama/Tetiklenme dediğimiz şeyin özündeki sihirli algoritma olabileceği mealinde şeyler söylemiştik.

Bu yüzden, “Gün ağardığında Sokak lambaları sönsün” şeklindeki amacımız doğrultusunda şöyle bir kurgu yapmıştık..

Yani,

x bir tam sayı olsun, (2 byte)
A0 pini Giriş modunda olsun
ve
X eşittir = A0 pinine bağlı ışık Sensöründen okuduğumuz değerler olsun.

Şayet ışık-x, 200’den fazla ise
3 nolu pin kapansın.. ki bu pine bağlı röle kapansın.. ki sokak lambaları sönsün..


Her şey güzel..

Ama!
Bu kodları çalıştırdığınızda, şaşıracaksınız.. Zira lamba bir kere söndükten sonra geri yanmayacak.
Hatta faklı kurguda hazırlanmış akış içerisinde, beklentinizin aksine bağladığınız cihazın hiç sönmediğini de görebilirsiniz.

Neler oluyor? Neden çalışmıyor?

Çalışıyor.
Hem de tam olarak cihaza söylediğimiz şekilde çalışıyor.
// aksi durumlar için bkz: makinaların ayaklanması 🙂

Yazının başına dönelim..

loop() fonksiyonumuz, elektrik olduğu sürece kendini çalışmaya adamış sonsuz romantik bir arkadaşımızdı. Ve kodlar bittiğinde her seferinde filmi başa sarıp yeniden oynatıyordu..

Arduino ve benzer cihazlar kodlarken, ilk başlarda karşımıza çıkabilecek Error’suz Mantık hatası bu olsa gerek.

Sürekli bir döngünün içinde olduğumuzu daima akılda tutmak gerekiyor.

Yani aslında cihazın içinde gerçekleşen olay şu;
tanımlar
setup: tek seferlik ayarlar { .. }
loop: sonsuza kadar yapılacaklar { .. }

ve biz şöyle yazmıştık

görüleceği üzere sonsuza kadar dönecek olacak olan loop içinde;
Işık sensöründen gelen değeri okuyoruz,
bu değer 200’den büyükse
3 nolu pini kapatmasını söylüyoruz

cihazda bunu yapıyor.

Sonra ne oluyor?

Sonra başa dönüyor. Yeniden değeri okuyor. 200’den büyükse 3. pini kapatıyor..
sonra yeniden başa dönüyor.. ..

Cihaz hatasız çalışıyor ama sistemimiz hatalı: Yeniden yanmasına fırsat vermiyoruz 🙂


Görsel: shutterstock

 

 

“Cihazın Algılaması” Dediğimiz Şey

Bkz: Önceki konular:
26 Satırda İsrafı Önleme
26 Satır Bahanesiyle, Ucundan Bit-Byte, MBit/s Meali
void loop() ve analogRead açıklaması


Hiç öyle bir niyetim yoktu ama ufak açıklama ve eklemeler yapayım derken, bunun aynı konu üzerindeki 4. yazı olduğu düşünülürse, bu yazılar da bir Seri’ye dönecekmiş havası seziliyor sanki 😉

Son yazıda, analogRead() hakkında yazmışım.. Sonrasından devam edelim..

Bizi karşılayan kod:

-Denilmez ve belki iddialı bir laf olur ama- Denilse ki; Şu programlama dilini hatta ve hatta BÜTÜN Programlama dillerini ve programcılık mantığını tek KELİME ile nasıl özetlersin?

Bu sorunun o tek kelimelik cevabı

olurdu sanırım.

Ve başlıktan da anlaşılacağı üzere, herhangi bir programın ya da cihazın, “algılamasından”, “sınama-doğrulama yapmasından”, “değişikliği fark etmesinden”, “belli bir koşulun gerçeklemesi ile belirli şeyler yapmasından” vb.. bahsediyorsak temelde IF’ten bahsediyoruz demektir.

“`Eğer (şifre yanlışsa)  { Ekrana hata mesajı yazdır. Yanlış şifre denemesi yapıldığın dair mail at. }“`
“`IF (Steem fiyatı 1 USDT’nin altına düşerse) {  100 Steem Sat. 50 SBD Al. EOS’a %10 aşağıdan AL emri gir. }“`

“`IF (evi su basmaya başladıysa) { telefona bildirim gönder. }“`

Ve gelelim üzerinde çalıştığımız örneğe, “`Şayet (gün ağardıysa ){ Sokak lambalarını söndür }“`

Bir önceki bölümden hatırlayacak olursak;

kodu ile A0 pinine bağlamış olduğumuz Işık Sensörü’nden (LDR) gelen değerleri okuyor ve bunu x’e atıyorduk.

Şimdi bi kere daha düşünelim;

Ne istiyoruz?

Margot Robbie ile akşam yemeği yemek 🙂

Gün ağarınca, sokak lambaları sönsün..
Yani? LDR-Sensör üzerine düşen ışık miktarı artınca.. lambalar sönsün..
Yani LDR’den okuduğumuz değer artında..
Yani x değeri artınca

Algılama dediğimiz şey işte tam burası..

// Aydınlık artınca x de artacağı için, x 200’den büyük ise, süslü parantez içindeki yap
// Programlama dilleri arasında ufak tefek imla farkları olabilir ama genel mantık budur.
// Şöyle ise, şöyle değilse, büyükse, küçükse, büyük eşit değilse vb..
// Dilerseniz iki koşulu birlikte de verebilirsiniz. Ali gelmişse ama Zeynep gelmemişse, şunları yap gibi..
// So..

Ok. Ortam aydınlık ve x 200’den büyük. Şimdi lambaları kapatalım.

// Yukarıda A0 pininden değer okumuştuk.
// Bu kez herhangi bir pine bir değer gönderdiğimiz için READ yerine WRITE kullanıyoruz.
// Geniş bir yelpazede veriler/değerler değil de sadece Aç-Kapa , 1-0 gibi bir değer göndereceğimiz için
// yani Dijital bir işlem yapacağımız için digitalWrite() kullanıyoruz.
// burada Sokak lambalarımızın ana hattını kontrol eden Röle, 3 nolu pine bağlı olduğu için
// 3 nolu pine LOW gönderiyoruz. Yani sokak lambalarımızı kapatıyoruz.


Görsel: hdwallsourceshutterstock

void loop() ve analogRead açıklaması

Bkz: Önceki konular;
26 Satırda İsrafı Önleme
26 Satır Bahanesiyle, Ucundan Bit-Byte, MBit/s Meali


Kaldığımız yerden devam edelim..

// Sürekli çalışan fonksiyonumuz.
// Başlarda biraz kafa karıştırıcı olabilir.
// Zira normalde bir program akışı içinde, yazdığınız akış sona geldiğinde
// programın durmasını bekleriz.
// Ancak burada bazı dillerdeki _main_ fonksiyonları gibi,
// loop fonksiyonu sürekli çalışmaktadır.
// bu da bize “program sonu” olarak adlandıranbileceğimiz bir yer olmadığını gösterir.

// bi yerlerde başlayıp, bi yerlerde bitmesi, zihimizin çalışma mantığına daha uygun olduğu için
// şöyle denilebilir.. şu oluyor, bu oluyor.. sonra şu çalışıyor, bunu tektilliyor vs..
// en SON olarak buradaki WHILE döngüsü çalışıyor denilebilir.
// ki bu SON WHILE’ın çalışma şekli şekli şöyledir:
// while (elektrikler_var_mi) {}

 


// Cihazların üzerindeki A0, A1, A2.. şeklindeki pinlere gelen değerleri okumak için
// analogRead kullanıyoruz.
// hatırlayalım; Dijital demek 0-1 demekti.
// eğer alacağımız değerler 0-1 değilde 3 86 156 325 874 sadece var-yok sıfır-bir olmaktan
// öte değerler ifade ediyorsa lazım olan şey Analog işlemdir.
// bir ortamdaki “ışığın şiddeti” dediğimizde de böyle bir durumdan bahsediyoruz.
// sabah öğle akşam üstü gece yarısı sürekli değişecektir.
// ya da şu ayaklı, ışığı ayarlanabilir lamlarını düşünün.
// böyle bir ortamda ışık şiddetini 0-1’in ötesinde geniş bir sıkalada ifade edilecektir.

// LDR sensörü ise, ışığa duyarlı bir dirençtir. Üzerine düşen ışık değiştiğinde
// ldr’den okduğumuz direnç değerleri de değişir.

// O halde, LDR’yi dijital pinlere değil, analog pinlere bağlamak daha sağlıklı olacaktır
// ayrıca gelecek olan değer geniş bir aralıkta olduğu için biz de
// 0-300 arasındaysa şunu yap, 301 – 600 arasında bunu, 601-900 arasında şunu yap
// gibi farklı işlemler yapabileceğimiz gibi

// gelecek olan ışık şiddetini, bir servo motorun açısına eşitlemek gibi
// ışık şiddetinin az ya da çok değişimine dağlı olarak
// motorun açısını da orantılı ve anlık şekilde değiştirebiliriz.

// bu projede sabah olduğunda, sokak lambalarının sönmesi için, ışık şiddettine bağlı olarak
// çalışacak aşağıdaki kodları yazacağız.

// aşağıdaki linkten murattatar.xyz üzerinde daha okunur ve renkli olarak görebilirsiniz.

void loop() { 
  x = analogRead(A0);  
  if (x > 200) {
    while (1) {
      digitalWrite(3, LOW);
      x = analogRead(A0);
      if (x < 200) {
        break;
      }
    }
  }



  x = analogRead(A0);
  if (x < 200) {
    digitalWrite(3, HIGH);
    while (1) {
      x = analogRead(A0);
      if (x > 200) {
        break;
      }
    }
  }


}



Devam açıklamalar gelecek..
Görsel: shutterstock

26 Satır Bahanesiyle, Ucundan Bit-Byte, MBit/s Meali

Previously on around here: 26 Satırda İsrafı Önleme


// Işık sensöründen gelecek değerleri x değişkeni içinde tutacağız.
// Gelecek olan veriler 0 ile 1023 arasında olacağından, yani 255’ten büyük olacağı için int x; diyoruz. Küçük olacak olsa idi byte x; yazmak daha verimli olurdu.
// x = 15 , y= 200 vb.. makismum 255’e kadar değer alacaklarsa bunları int yerine byte olarak atamak daha sağlıklı.

// Öncelikle byte tercih etmeye çalışmamızın sebebi; 8 bitlik bir alan düşünelim _ _ _ _ _ _ _ _
// her bir değer elektrik var/yok = 0/1 gibi 2 değer alabileceği için -lise permutasyon konularundan hatırlayalım-
// her bir alana 2 yazarız. 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 = 256
// böylece elimizde 256 adet değer olabilir. Ve dikkat edilirse bu 8 bit = 1 byte ‘lık bir yer tutar.

// O halde kullanacağımız bir değişkeni örneğin x’i byte olarak tanımlarsak,
// x işlem gördüğü her yerde, RAM/Bellek/İşlemci/Denetleyici/Trafik.. 1 byte’lık bir maliyeti olacakır.

// Başa dönecek olursak, LDR/sensör’den gelecek olan veriler 255’ten büyük olduğu için int yani integer kullanıyoruz.
// ATmega tabanlı işlemcilerde, int için 2 byte yer ayırdığı için, int’in sınırları -32,768 ile 32,767 arasında olacaktır.
// 2 byte = 16 bit = 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 😉
// https://www.arduino.cc/reference/en/language/variables/data-types/int/

 

// Serial haberleşmeyi başlatıyoruz.
//  Baud rate hızımız ise 9600

// Baud rate?
// İnenete bağlantı hızımı söylerken ne diyoruz? 16 Mbit/s gibi değil mi.
// Yani, saniye 16 x 1,048,576 adet 0 ya da 1 alabiliyoruz demek.
// Saniye ilettiğimiz bit sayısına BitRate diyoruz.

// Baud ise, saniye ilettiğimiz şey bit değil de başka semboller olabildiğinde karşımıza çıkıyor.
// Ki adını mucidi olan Fransız mühendis Émile Baudot’tan alıyor.

// Örneğin 0 derece 45 derece 135 derece 275 derece gibi açı bilgisini iletmek istediğimizi düşünelim
// yukarıda da geçtiği üzere “275” değeri için byte yeterli olmadığı için interger kullanmamız gerekir
// yani 16 bit kullanacağız. Oysa 275 yazıp göndermek yerine, şöyle demiş olsak
// 00 = 0
// 01 = 30
// 10 = 135
// 11 = 275
// Görüldüğü gibi olay 16 bit yerine _ _ iki bitte olay çözülmüş oldu.
// bu sistemi kullanan kablolu tv yayını, 8 kat daha kapasiteli olabilir gibi sanki 😉
// https://www.electronicdesign.com/communications/what-s-difference-between-bit-rate-and-baud-rate

 

// Işık sensörü dijital olmadığı için,
// bize 0 ya da 1 göndermek yerine, 0 ile 1023 arasında değerler gönderecek
// yani 0-1 olmadığına göre Analog. Bu yüzden Işık sensörünü A0 /Analog Sıfır pinine bağlıyoruz.
// Arduinoya dışardan bilgiler bu pinden giriş yapacağı için pin modunu Giriş/INPUT yapıyoruz.
// (parantez içinde; Analog pinler varsayılan olarak zaten Giriş/INPUT durumundadır.)
// bu örnek için boşuna yazmışız ama genel olarak, giriş istediğimiz durumlardaki kullanımı şekilde.

 

// Arduino gibi bir MikroDenetleyici’den dışarı yönde çıkış almak istediğimiz için
// 3 Nolu pinini Çıkış/OUTPUT olarak ayarlıyoruz.
// Böylece, bu pine HIGH ya da LOW gönderdiğimizde, buraya bağlı olan cihazı kontrol etmiş olacağız.
// Burada basit bir LED olduğunda, led yakıp söndürme yapabileceğimiz gibi
// Bir bacağı bu pine bağlı bir Röle ile, röleye bağlı olan bir anahtar ile koca bir nükleer tesisi de açıp kapatabilirsiniz.
// Arduino ile nükleer reaktör çalıştırmak .. // click bate başlık olur bundan 🙂

 


Görsel: shutterstock

26 Satırda İsrafı Önleme

Farkında olmanın yükü.. Madem Gezegen İsrafı almış başını gidiyor ve ben bunun farkında olduğumu iddia ediyorum ve başkalarını yargılıyorum. O halde bu konuda Ben ne yapabilirim?

Elbetteki hemen yakın çevremden başlayarak önerilerde bulunabilirim. (Ki yüklemi, birinci tekil şahış ve-di’li geçmiş kipinde olan cümleler kurmam gerektiği için; aşağıda “gönder”dim” kelimesinin ekran görüntüsünü de bulabilirsiniz.

Evin yakınlarında bolca sokak lambası var. Güneş doğmadan zaten ayakta olduğum için, yalancı şafaktan, tan yerinin aydınlanmasına, güneşin doğmasına kadar olan süreci gözlemleyebiliyorum.

Belli bir vakitten sonra ortalık sokak lambalarına ihtiyaç duymayacak kadar, gayet güzel aydınlanmış oluyor. Ancak lambalar 2-3 daha yanmaya devam ediyor. Bu hem kullanılacak elektriğin  (dolaylı olarak doğal gazın da) israfı demek. Elbetteki bunların ekonomik ve çevresel karşılıklarının da israfı yapılmış oluyor.

Bu israfı engellemenin, hepimizin bildiği pratik bir yolu var: LDR = Işık sensörü.

Işık fazla olduğunda, sokak lamları sönsün. Az olduğunda yansın. Bu kadar!

Olayın güzel tarafı yapılacak donanım masrafı da çok çok az, yazılacak kod da çok az: 26 Satır!

  1. int x;
  2. void setup() {
  3. Serial.begin(9600);
  4. pinMode(A0, INPUT);
  5. pinMode(3, OUTPUT);}
  6. void loop() {
  7. x = analogRead(A0);
  8. if (x > 200) { while (1) {
  9. digitalWrite(3, LOW);
  10. x = analogRead(A0);
  11. if (x < 200) { break; }
  12. }
  13. }
  14. x = analogRead(A0);
  15. if (x < 200) { digitalWrite(3, HIGH);
  16. while (1) {
  17. x = analogRead(A0);
  18. if (x > 200) { break; }
  19. }
  20. }
  21. }

 

Belediye’ye gönderdiğim mail:

Merhaba,
Sabahları erken saatlerde ayakta oluyorum. Ve sokak lambalarının ortalık ağardıktan yaklaşık 2-3 saat sonra kapandığını görüyorum.
Kodlama ve Elektronikle uğraştığım için, bu işin OTOMATİK olarak ve tam gerekli olduğu zaman yanıp/sönmesinin mümkün olduğunu biliyorum.
Bunun için, Sokak lambalarının bağlı olduğu ana hatta/hatlara,
Çok düşük maliyeti olan sadece 3 parça donanım (Arduino + LDR + Röle) bağlanması
ve aşağıdaki kodların yüklemesiyle, şehir milyonlarca liralık tasarruf sağlayabilir.
…kodlar…
Evet, hepsi bu kadar. Ama karşılığı harika 😉


Görsel: adiyamandaisikgazetesi

100 Satırda ŞeyterNET

IoT: Internet of Things; Şeylerin interneti demek. Yani hemen her şeyin internete bağlandığı ağın adı. Bildiğimiz internet,  bunun bir alt kümesi.

Bu tabir kullanılmaya başladığında, zannediyorum(?) ilk Intel Türkiye’nin karşılık bulma çabasıyla, herŞEYin inTERNETi sözünden yola çıkarak, Türkçeye “Şeyternet” olarak çevirmişlerdi.

Kulağa eğlenceli geldiği için şahsen ben sevmiştim. Ancak zamanla yaşan dil içinde Nesnelerin İnterneti tabiri daha çok kullanılmaya başladı ve  artık oturmuş karşılığı da sanırım bu olacak.

Bir süredir beklediğimiz siparişlerimiz geldi. Ve minik de olsa ilk Nesnelerin İnterneti projemizi yaptık.

Hem kendimi pekiştirmek için hem de Türkçe olarak açıklamalı kaynak zenginliği olması için, mevcut kaynaktaki açıklama kısımlarını genişlettim ve yeni açıklamalar ekledim.

Açık söylemek gerekirse ancak 2 Kilobayt‘lık paketlerle iletişim kurabilen bozuk para kadar cihazın, Node.js’ye 10 bastığını söyleyebilirim. // Harbiden.

Steemit’in kafası karışacak uzunlukta olduğu için, Steempress’te bu kodlara yer verince Steemit’e bozulur mu kestiremiyorum. Okuma zorluğu olursa aşağıdaki linkten murattatar.xyz üzerinden göz atabilirsiniz.

 

#define ag_adi "Telekom_Zyxel_HG13W" // wifi ağınızın adı
#define ag_sifresi "34ist1453" // wifi şifreniz 

#include <Stepper.h>  //  standart Arduino Adım Motor kütüphanesi eklenir. 

byte m; // Mototun kaç defa döneceğini m değeri ile söylüyoruz. 256'dan küçük olduğu için byte olarak
const int birTuruKacAdimlaDonecek = 360;
Stepper stepMotorumuz(birTuruKacAdimlaDonecek, 8, 9, 10, 11);


void setup()
{
  stepMotorumuz.setSpeed(100); // motor hizi

  Serial.begin(115200); // Seriport'u açıyoruz.
  // ESP modülünün baudRate değeri 115200 olduğu için bizde Seriport'u 115200 şeklinde seçiyoruz
  Serial.println("AT"); // ESP modülümüz ile bağlantı kurulup kurulmadığını kontrol ediyoruz.
  pinMode(13, OUTPUT);
  delay(3000); //ESP ile iletişim için 3 saniye bekliyoruz.

  if (Serial.find("OK")) {       // esp modülü ile bağlantıyı kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş yapıyor.
    Serial.println("AT+CWMODE=1"); // esp modülümüzün WiFi modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka ağlara bağlanabilecek.
    delay(2000);
    String baglantiKomutu = String("AT+CWJAP=\"") + ag_ismi + "\",\"" + ag_sifresi + "\"";
    Serial.println(baglantiKomutu);
    delay(5000);
  }

  Serial.print("AT+CIPMUX=1\r\n");
  delay(200);
  Serial.print("AT+CIPSERVER=1,80\r\n");
  delay(1000);
}


void loop() {
  if (Serial.available() > 0) {
    if (Serial.find("+IPD,")) {
      String icerik = "<head> Wifi ile Kablosuz Motor ve Led Kontrolu </head>";
      icerik += "<br><a href=\" ?led=ac\"><button type='button'>LED AC</button></a> ";
      icerik += " <a href=\" ?led=kapat\"><button type='button'>LED KAPAT</button></a>";
      icerik += "<br><br><a href=\" ?aksiyon=motor\"><button type='button'>MOTOR</button></a>";

      String gonder = "AT+CIPSEND=0," + icerik.length() + "\r\n";
      Serial.print(gonder);
      delay(500);
      // CIPSEND ile ESP Sunucumuza data gönderimini başlatıyoruz.
      // AT+CIPSEND=0, 140
      // 0. iletim, 140 karekter gibi..

      Serial.println(icerik);
      // yukarıdaki HTML sayfamızı gönderiyoruz.
      // Tarayıcıda adres satına 192.168.42.13 yazdıdığımızda, ESP karşımıza bu sayfayı sunacak.

      atraksiyonlar();
      // Loop'un içinde olduğu için, Emirlerinizi bekliyoruz merkez ;) modunda sürekli çalışıyor olacak

      Serial.println("AT+CIPCLOSE=0"); // Bağlantıyı kapat

    }
  }
}


void atraksiyonlar() {

  String gelen_istek = "";
  char okunan;
  while (Serial.available() > 0) {
    okunan = Serial.read();
    gelen_istek += okunan;
  }
  // Serialden bir şey okunana kadar While dönecek, okunan değeri "gelen_istek" değişkenine atayacak

  Serial.println(gelen_istek);
  if ((gelen_istek.indexOf(":GET /?led=ac") > 1)) {
    digitalWrite(13, HIGH);
    // LED AC butonuna basıldığında adres satırı 192.168.42.13/?led=ac şeklinde olacak, yani severa GET isteği gelecek
    // bunun içinde led=ac varsa ilgili pine elektrik gönderecek, bağlı olan bileşene (bu örnekte lede) güç verecek.
  }


  if ((gelen_istek.indexOf(":GET /?led=kapat") > 1)) {
    digitalWrite(13, LOW);
    // LED AC butonuna basıldığında adres satırı 192.168.42.13/?led=kapat şeklinde olacak, yani severa GET isteği gelecek
    // bunun içinde led=ac varsa ilgili pine elektrik gönderecek, bağlı olan bileşene (bu örnekte lede) güç verecek.
  }


  if ((gelen.indexOf(":GET /?aksiyon=motor") > 1)) {
    for (m = 0; m < 20; m++) {
      stepMotorumuz.step(1 * (birTuruKacAdimlaDonecek));
      // MOTOR butonuna basıldığında adres satırı 192.168.42.13/?aksiyon=motor şeklinde olacak, yani severa GET isteği gelecek
      // bunun içinde aksiyon=motor varsa step motorumuz 20 tur dönecek.
      // ters yönde dönmesi için -1 ile çarpabilirsiniz
    }
  }


}

 


Kaynak: sametsavas55 , instructables, coeleveld
Görsel: viktak

Node.js Sevememe

Bayram öncesinde yeğenimle bir proje başlamıştık.

Bir zaman sonra önümüze çıkan kütüphanelerin bazıları Node.js işaret ediyordu.  Bilgisayarım Sunucu Olsun – Python & Bottle yazısında bahsettiğim üzere daha önce Python & Bottle ikilisi kısa araştırmalar sonucunda

“`adresim.com/isteksayfa“` ve / veya duruma göre “`adresim.com/sonucsayfa“`

şeklindeki sunucu isteklerine kolayca yanıt verilebildiğini görmüştüm.

Örneğin,

python kurumu sonrası, consolda (başlat>cmd)
“`
pip install bottle

“`

yaparak bootle kütüphanesi kurmak ve ardından

“`
from bottle import route, run, request
import os; import requests

@route(‘/’, method=’GET’)
def homepage():
return ‘ana sayfadasiniz’

“`

şeklinde kısa bir kodla, localhost çalışmaya başlamıştı.

 

Kendine göre işlemleri sonrası, Node.js’in için de benzer şekilde localhost’u görmek kolay.

Ancak işin için biraz daha detay girince Node.js’in çok da kullanıcı dostu olduğunu söyleyemeyeceğim. Ya da şöyle demek belki daha doğru sanki. “El yordamıyla, basit çıkarımlarla, bu şöyleyse şu da böyledir” diyerek tahminlerde bulunarak işlem yapmak Python Bottle/Flask ile gayet mümkünken, Node.js biraz daha nazlı sanki.

 

Mesela daha önceki

“`

@route(‘/:username’, method=’GET’)
def get_event(username):
kullanici = username.replace(‘:’,”)
yol = “https://steemitimages.com/u/” + kullanici +”/avatar/large”
# os.startfile(yol);
#url =”; #getir = requests.get(url); #gelen = getir.content ; print gelen

htm = ”'<!DOCTYPE html>
<html lang=”en”>
<head>
<script src=”https://code.jquery.com/jquery-3.2.1.min.js”></script>
<script src=”https://cdn.steemjs.com/lib/latest/steem.min.js”></script>
<script type=”text/javascript”>
function fillBlogEntries(username)
{
steem.api.getDiscussionsByBlog({tag: username, limit: 10}, function(err, blog)
{
var blogContainer = $(‘#blog’);
for (var i = 0; i < blog.length; i++)
{
blogContainer.append(‘<div><a target=”_blank” href=”https://steemit.com’ +
blog[i].url + ‘”>’+ blog[i].created + ‘ ‘ + blog[i].title + ‘</div></a>’);
}
});
} </script>
</head>
<body>
<img src=””’+yol+”'”><h3>Merhaba ”’+kullanici+ ”'</h3>
<div id=”blog”></div>
<script>fillBlogEntries(“”’+kullanici+ ”'”);</script>
</body>
</html>
”’
print htm
return htm

“`

kodlarıyla ulaşılan sonuca Node.js ile ulaşmak pek pratik olmuyor.

-Belki hiç yapılamıyor da olabilir bilemiyorum ama- Şu an bir dayanağım ve bilgim olmadan ÖNyargılı olarak kanaatim;
Arka planda bir video’dan kareler alıp, bunu siyah beyaz yaparak kullanıcıya döndürmek gibi bir işlemi Node.js ile yapmak ya da Node.js destekli bir web sayfasından robotik/elektronik bir devreye ulaşmak  için Python‘un 2-3 katı efor sarf etmek gerekir gibime geliyor.

İlerde ne olur bilmem ama hala Node.js’den elektrik alamıyorum 

[Spoiler İçerir] İnsan Programlanabilir mi #3 : WestWorld II’den Bilinç Üzerine Notlar #2

Previously on around here:

[Spoiler İçerir] İnsan Programlanabilir mi #2 : WestWorld II’den Bilinç Üzerine Notlar


Birinci sezonda Maeve‘in nasıl estiğini, bağımsızlığa ve özgürlüğe bu kadar düşkün bir karakterin, çekip gidebilecekken, çocuğu için geri döndüğünü de görmüştük.

(
 Yıllar önce bir şarkıyı yanlışlıkla farklı ama güzel bir manaya gelecek şekilde Türkçeye çevirmiştik 🙂

 



Aklından Gitmek Geçiyorsa,
Kalmanın Hiçbir Önemi Yok.

Sonra bu sözü, evlilikten yakınan arkadaşlarım için güncellemiştim;
Hiç bir resmi bağlayıcılık yokken ve her gün gidebilecekken beraber yaşamak için kalmak mı?
Yoksa
Her gün ayrılmak/çekip gitmek isterken, resmi evlilik yüzüğüne bakıp, kalmak mı?
)

Maeve‘in yaptığı da böyle. Bütün host’ları kendine çıkışa kadar koruması için yönlendirebilir ve adeta elini sallayarak çıkıp gidebilir ancak böyle yapmıyor. Sezon boyunca çocuğu için uğraşıyor.

 

Çocuk ve Sevgi gibi kavramların da programlanabileceği konusu Matrix’te de konu edilmiş ve Hint’li arkadaşımız gayet net bir şekilde olayı açıklamıştı:

 

 

İlk sezonda, acının program çıktılarını bolca görmüştük. WestWorld, bu sezon Sevgi hatta Anne-Çocuk sevgisinin bile programlanabileceğini işleyerek çitayı biraz daha yükseltmiş. Ki Maeve eksenindeki hikaye tamamen bunun üzerinde akıyorAyrıca kafa derisi yüzenlerin bile bir çocuğu nasıl sevip koruyabileceğini de işliyor.

Dizi bu konuyu işlerken önümüze bir dualite daha sunuyor. Dolares’in sevgileri.

Babası ve Teddy’e olan sevgileri çok güçlü. Bununla birlikte, bu sevgilerin, kendi yazılımı içindeki kod satırları olduğunun bilincinde. Hem seviyor, hem üzülüyor hem de farkında olarak yapılması gerekeni yapıyor.

Ve alt yazısız olarak bize diyor ki;

  • Bir ben vardır bende, benden içeri //hem içerideki kod, hem içerideki resim(?) 😉 
  • Mal da yalan mülk de yalan, var biraz da sen oyalan //sahip olmak istediğin o telefon/pc.. sevgilin baban çocuğun devletin.. hepsi bir kaç satır kod, bir kaç mısra yalan.. ama gelmişsin madem, biraz sen de oyalan.

[Spoiler İçerir] İnsan Programlanabilir mi #2 : WestWorld II’den Bilinç Üzerine Notlar

Previously on around here:

~Tam bir ay önce İnsan Programlanabilir mi? Bilinç Nedir? yazısı yazmıştım. Aşağıdaki yazıyı okumadan önce hem yazıya hem de yorumlara göz atmak daha güzel olacaktır. Zira başlık altına twitter’da zor, face’de çok daha zor görülecek çok güzel yorumlar geldi. Sonrasında bu konulara taş atan Altered Carbon dizisine de değinmiştim. (malesef bu dizi hakkındaki uzlaşı görüşü şu mealde sanırım: “Ellerinde Ferrari var ama traktör 😉 yarışına katılıyorlar”)

Now:

Son günler;  Uşak’ta geçirdiğim en güzel Kurban Bayramıydı:  Yazın ortasında hasta oldum. 1. ve 2. günü dünya yüzeyine 180 derecelik açı ile geçirebildim. 3. gün ara ara 90 derece olabilsem de virüs solumaya devam ettim ama bu haller bile güzeldi. Zira, Kurban’ın kendisinin ne derece gerekli olduğu bi tarafa, dini vecibe olmayan ama ayetten daha kesin gereksizliklerden uzak olmak “buradaki en güzel kurban bayramım” sözünü hak ediyor. BlockChain huzurunda emeği geçen tüm virüs kardeşlerime teşekkürü borç bilirim 🙂

Hastalık dolayısıyla daldığım için bazı yerleri bir kaç defa geri almak zorunda kalsam da, hastalığı faydalı hale dönüştürdüm sanırım:

WestWorld’ün 2. sezonunu izledim.
Yeah. Nihayet.

24 Haziran, seçim gecesi tercihler yapıldı, Westworld de bitti 😉 diyeceksiniz belki. Haklı olabilirsiniz ancak dizi biraz ağdalı  hem de toplu izlemek daha keyifli olduğu için, sezonun bitmesini özellikle beklemiştim. Kısmet bu zamanaymış.

Öncelikle;
Büyük harflerle Rica ediyorum; Sadece fragman ve duyduklarından yola çıkarak, dizi hakkında “İzleMEdim ama… … sadece 2 bölüm izledim ama..” diye cümle kuracaklar lütfen yorum yapmasınlar, bunun için belki TV daha uygun olabilir 🙂

 

 

WestWorld I, finali “Özgürleşme”(?) ile yapmıştı. Aynı zamanda kucağımıza şöyle sorular da bırakıp gitmişti:

  • “Dolores gerçekten özgür olarak mı bu son seçimi yapmıştı yoksa Ford’un son oyunun başlama sahnesini mi oynuyordu?”
  • Bilinçli Tercih” dediğimiz şey, zaman içinde kayıt ettiklerimizin topluca bir denklemde kullanılmasından çıkan sonuç muydu?
  • Tanrı, Beyin ve Bilinç arasındaki ilişki neydi?

 

WestWorld II, adeta

“güzele spoiler işlemez”

ata sözünü 🙂 doğrular nitelikte kendi spoilerını vererek başlıyor.  Son bölümden bir spoiler.. üstelik 1. sezonun açılışına da atıf yaparak bir rüya(?) sorgulamasıyla..

Ardından içindeki gerçek insanlar + bütün host’lardan yani toplamda bildiğimiz WestWorld’den daha değerli tutulan bir şeylerin olduğuna dair ip uçları alıyoruz.

Sonradan Bernard‘ın hatırla(yama)ma düzenine göre izlediğimizi anladığımız kesitlerde WestWorld’ün aslında Robotların İnsana benzerliğinin sınırlarında değil İnsanların Robota benzeme isteğinin sınırlarında dolaştığını anlıyoruz. Buna pek ala Ray Kurzweil vari bir Singularity olgusunun WestWorld üslubuyla yorumlanması diyebiliriz.

Delos şiketinin WestWorld‘ü paravan yaparak milyonlarca insanın beyninden data okuduğunu, bu datalar ile hareketlerini bileştirerek, kişinin bilincini yakalamaya çalıştığını görüyoruz.

Ancak işler ilerledikçe bilinç/özgür irade kavramlarının dışarıdan buz gibi görünse de inceledikçe incelip sıvılaştığını görüyoruz. Hatta buharlaşıp kaybolduğu için, Delos şirketinin hedefini güncellediğine tanık oluyoruz.

 

Hayli süredir iddia ettiğim şekilde, tüm karmaşıklığına rağmen ENNEAGRAM bazlı (temel 9 çekirdek motivasyonu ve yan kanatların kombinasyonu şeklinde) bir algoritmayla insan kodlarının yazılabileceğine kapı aralaması bakımından WestWorld II, fikri tartışmalar çantamdaki destek setlerimden biri oldu 🙂

Şimdi ukalaca, Kişiliğin DNA’sını oku, WestWorld izle, ondan sonra devam edelim” diyebilirim 🙂

Yazı uzadıkça uzuyor farkındayım, burada bölüp yeni bir yazıyla devam etsem sanırım daha iyi olacak..
//unutmadan son şunu yazayım ki ben unutursam siz hatırlatın: WestWorld & Matrix 😉 

 


Görseller: WestWorld

“Türkçe”, Konuşur Gibi Kod Yazmak #4: Harf Harf Didikleme & Karakter Meselesi

Önceki Bölümlerde: #1: Giriş#2: İlk adımlar#3: Dosya Çağırma, adımlarına bakmıştk. Kaldığımız yerden devam ediyoruz.. Next.. Sonraki.. 😉


İlk, kodlamasını Türkçe olarak yazacağımız dosyamızı oluşturalım. Bunun için

Not Defterini açın.

“`
Hey! Selam, nasılsın?

““

..yazın. Ve uzantısını otomatik .txt yapmaması için Kayıt Türü: Tüm Dosyalar olarak seçin, kaydedin.

 

Kullanım kolaylığı açısından,
Başlat > Cmd >
Cd şu klasör > cd bu klasör.. şeklinde uğraşmamak için, tar.py ve ornek.tr dosyalarının bulunduğu klasör seviyesine çıkın ve Shift’e basarken bu klasör üzerinde Sağ tıklayın.

Böyle yaptığımızda explorer menüsünde “Komut penceresini burada aç” seçeneği de gelecek 😉

Görüleceği üzere,
E:
cd Equinox
cd _Python
cd KendiDilim
cd v1
gibi tek tek yazmak durumunda kalmadık. Direk ilgili klasörde başladık.

O halde “` tar “` yazıp enterlayalım ve bizden dosya ismi beklesin

peki..
TaR az önce içine “Hey! Selam, nasılsın?” yazdığımız, ornek.tr dosyamızı çağırsın.

hadi bakalım..

What?! Bu da ne?

Hemen her yerde karşımıza çıkan, bazen saç baş yolduran Türkçeye karakterlerle ilgili hatalardan birisi. Bu tip hatalara genel olarak “ığşü hatası” diye bir isim mi versek acaba 🙂

Neyse ki UTF-8 olarak kaydetme şansımız var.

–UTF-8 derken?
Unicode Transformation Format’ın kısaltılmışı yani Unicode Dönüşüm Biçimi.
–Himm.. Unicode? Üniversal kod? galiba. Da nasıl?
Unicode: (Evrensel Kod) Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir endüstri standartıdır.

 

–İyi de her karakteri neden sayı ile ifade edelim ki? A harfi, A olsun işte.
–Olsun da şekerim, sen Google’a A yazıp aradığında, kablonun içinden A harfi mi gidiyor 

–Elektrik/Elektron falandır herhalde giden.

–Elektrik gibi bir şeye “bak bu A harfi bu da B” diye nasıl anlatırsın.

–Anladığı dilden 🙂 Elektrik var, Elektrik yok. 1-0. Mesela;
VarVar-Yok-Var: 1 1 01 : A harfi
Var-Yok-Yok-Var: 1 0 0 1 : B harfi
olursa ortak anlaşma yolunu bulmuş oluruz 😉

Fakat ben B için böyle değil de daha farklı bir Var-Yok sıralaması seçebilirim. Keyif benim değil mi,
Var-Yok-VarVar : 1 0 1 1 : B olsun diyebilirim.
Evet diyebilirim. Ama atıyorum Tukcell’in Avea’nın sunucuları bu sıralamayı Z olarak yorumluyorsa, yazdığım SMS karşı tarafa başka bir şey olarak gidebilir..

Operatörle anlaşıp şöyle diyebiliriz, bundan hepimiz şu sıralama şeklini esas alalım:

1 1 1 1 : A
1 1 1 0 : B
1 1 0 1 : C
1 1 0 1 : Ç
1 0 1 1 : D
1 0 1 0 : E
1 0 0 1 : F
1 0 0 0 : G

0 1 1 1 : Ğ
0 1 1 0 : H
0 1 0 1 : I
0 1 0 1 : İ
0 0 1 1 : J
0 0 1 0 : K
0 0 0 1 : L
0 0 0 0 : M

Ee.. Var-Yok seçeneklerimiz bitti 🙂

–“O halde bize 4 bit yetmeyecek.. bunun küçük harfi, boşluğu, virgülü sayısı sayısı var, biz en iyisi bunu 8 bit yapalım ki M’de tıkanıp kalmadan 256 seçeneğimiz olsun” denilmiş.

Yani ASCII tablosu.
Sağ solda karşımıza çıkan ASCII dediğimiz şey; aslında çocukken 13121 yazarak, ACABA ‘yı kast ettiğimiz şifreli   haberleşme şeklimizin, karşılıklar tablosundan çok farklı değil aslında.

Amma Velakin

Şu tabloya bir bakın hele..
Dünya toplamında kullanılan BAYA bi harf var.

Oysa bizim elimizde M‘ye kadar kesmiyor deyip kullanmaya başladığımız ASCII içinde bile 256 karaktere yer var. Böyle olmaz. En iyisi Dünya üzerinde kullanılan bütün dillerin, bütün harfleri için bir tablo yapalım, kökten çözüm bulalım denilmiş.

Unicode Organizasyonu toplanmış. Yukarıdaki liste gibi bir standart çıkarmış.
–İyi de o zaman bu 8 bit [1 0 1 0 1 0 1 0] olamaz ki.
–Evet değil. Unicode bir saklama biçiminde her bir karakter için ayırmanız gereken yer 32 bit.

Eh 32 bit ama herkes için sorun çözüldü.

İnternet

Elektronik devreleri ve karakter setleri, kendi aralarında top çevirirken İnternet diye bir çıkar ve hayli popüler olur. Böyle olunca, bir karakter için 8 bit yerine 32 bit yani 8 GB yerine 32 GB veri birilerinin canını sıkar, hem harddiskte çok yer demek, hem yoğun ve yavaş bir trafik..

Bu kişiler; şimdilerde Google’ın kendi yeni programlama dili GO‘yu geliştiren Rob Pike ve Ken Thompson‘dır. Gayet zekice bir yöntemle, hem yine tonlarca harfle eşleşecek hem de 32 bit’lik Unicodu’u 8 bit’e dönüştürecek bir yöntem icat ederler:
Unicode Transformation Format : Unicode Dönüşüm Biçimi: UTF.

Sanırım biraz yukarıdaki kısa açıklama, şimdi daha yerli yerine oturdu 😉
İyi de nasıl yapıyorlar? diye merak edenler buradan dalışa geçebilir.
//SEO açısından, Google’ın neden utf-8 siteleri bir tık daha fazla sevdiği de anlaşılabilir 😉

Soo..
TaR’ımıza dönelim.
Madem Türkçe Karakter sorunu için Unicode veya UTF-8 çözüm sunuyor. Onların formatında kayıt yapalım.


ornek.tr
‘yi açın ve Dosya>Fark Kaydet menüsü altından, yine Kayıt Türü: Tüm Dosyalar seçili iken,
Alt taraftan Kodlama: UTF-8 seçip öyle kayıt edin.

 

Ok. Şimdi yeniden konsola geçelim.

 

.. ve Nihayet!

diyecektik ama diyemeden kursağımızda kaldı.

 

–Şimdi ne oldu?

Daha içeriden bakalım…

Not ve Sub diye iki klasör oluşturun.
Not Defteri açın, yeni bir dosya içinde sadece “`ğ“` yazıp, Not klasörü içine ğ.txt adıyla kayıt edin.
SublimeText açın, yeni bir dosya içinde sadece “`ğ“` yazıp, Sub klasörü içine ğ.txt adıyla kayıt edin.

Text dosyası olmalarına rağmen, bunları Sağ tıklayıp, Birlikte Aç diyerek  IrfanView ile açalım. (ilk defa irfanview kuracaksanız, resim görüntüleme programı olduğunu, kurarken seçtiğiniz ayarlara, kendini varsayılan resim gösterici olarak atayabileceğini akılda tutun)

Ardından View > Show HEX view seçelim.

 

 

Görüleceği üzere, Note pad bizim istediğimiz şekilde kayıt yapmamış. Bize doğru gösteren SublimeText ile yaptığımız kayıt lazım.

SublimeText açalım, yeni bir dosya içine
“`Hey! Selam, Nasılsın?“`
yazıp, kayıt edelim.

ve yine konsola geçelim.

..vee

Yey!
İki tane I harfi içeren bir dosyayı TaR ile çağırdık ve tüm harflerini elden geçirip, çıktı olarak sunduk.

En başta, “SublimeText ile ornek.tr oluştur” deseydin, bu kadar uğraşmazdık” demiyorsunuzdur umarım.

Kendi Programlama Dilimizi yazacaksak, Hele ki bu TÜRKÇE olacaksa, ASCII, UTF vb Karakter Setleri ve Karakter  Kodlamaları hatta RAM‘da kaç byte veri tutulacağı gibi bilgileri de öğrenmek sanki hiç fena değil 😉

İnsan Programlanabilir mi? Bilinç Nedir?

Bugün Uşak’ın IQ ortalaması yükselten bir arkadaşım geldi. Çayla ülke kurtarmadık. Siyasetle germedik.  Yaklaşık 6 saat boyunca beyin hakkında beyin fırtınası yaptık.

Beynin ne olduğundan, ne olmadığından, nasıl evrimleştiğinden bahsettik. Evrim karşıtlarının “evrim Göz’ü açıklasın” salvolarına “ışığa duyarlı bir sürü protein var ki ” dedik, gülüp geçtik. Tv’de, youtube’da saatlerce zaman kaybı yaşatan Biyokimsal süreçler, garnitür tadında cümle aralarında geçti.  Ama tahmin edileceği üzere beyin için en büyük kırılma noktası Us’lanma ve Bilinç’lenme aşaması olduğu için düşünür/konuşurken kortekslerimiz ısınmaya başladı 🙂

 

İnsan Programlama

Bir önceki konuşmamızda, uzaya çıkıyor olmamıza rağmen ilkelliğimizde ve orangutanlardan ya da primatlardan hallice olduğumuzda mutabık kalmıştık. Hatta ukalaca algılanabilecek olsa da gerçeklik payı olan şöyle:

Bazen öyle insanlarla konuşuyorum ki;
Ağaçların, ormanların güzelliğinden bahsederken, “içinde yeşilin her tonu var, siyaha kayan yeşil, sarıya kayan yeşil, sonbaharda ise kırmızı, kahve, yeşil ve sarı bir arada çok hoş bir manzara oluyor” diyorum. Karşımdaki kişi yeşil-sarı renklerin Brezila formasında da olduğundan bahsedip, futbol konuşmaya başlıyor.

ya da

“Askeri eylemler kalıcı çözüm olsaydı Roma-Osmanlı-Hititler-Cengiz gibi imparatorluklar hala devam ediyor olurdu” diyorum. Karşımdaki kişi Askerlik anılarını anlatmaya başlıyor.

Abartmıyorum, böyle insanlar programlayabilirim.

 

bir söz sarf etmiştim. Şimdi bir adım daha ileri gideceğim:
Sadece yukarı bahsi geçen kişiler değil, hemen herkesi kapsayan bir programlama yapılabilir.

Oylar karşısında öyle davranışlar sergiler ki, gördüğünüzde “Aynı kaynım. Kayınım öyle, aynısı”  🙂 dersiniz. Bu kadar utopik duran bir konuda bu kadar keskin konuşuyorum zira bugün ülkemizde de bulabileceğimiz “Enneagram” kitapları mevcut. Daha önceki bir yazımda da ucundan değindim üzere, Ennegram = İnsan Algoritması diyebiliriz.

 

 

Örneğin; Mükemmeliyetçi bir mizaç: Sorunun sonunda birimini yazmadın diye bütün soruya sıfır veren veren hoca. Bildin sen onu. Ya da 98 aldığında ağlayan arkadaşın (ya da sen).

Şayet bir kişinin Mükemmelliyetçi bir yapıda olduğunu anlarsanız, Ennegram vasıtasıyla, neden makyajının diğer kızlardan çok daha uzun sürdüğünü, hatta gelecekte Aklından GEÇECEK olan, Nx düşünce kalıpları nedeniyle, o jilet gömlek arkadaşı neden mağaradan çıkmış bir halde bulabileceğinizi öngörebilirsiniz.

Ya da “Araba dediğin rahat olacak” diyen arkadaşınızın, alakasız gibi görünse de, hiç “1” kimseye haber vermeden neden ortadan kaybolduğunu bilirsiniz.

So.. Ortada bir algoritma varsa, elbetteki programlanabilir demek 😉

Bilinç?

A olduğunda B ya da F olduğunda G tepkisi vereceğimiz bu derece öngörülebilir bir sistematik akış içindeyse, Bilinçli hareket ettiğimiz söylenebilir mi? Ya da aslında Bilinç nedir?
Sarı-Yeşil’den Brezilya maçına atlayan formu geçtim, bir kişinin kendi “özgür iradesiyle” ortadan kaybolmayı seçtiğini söylemesi aslında arabada rahat koltukları seçmesi ile direk bağlantı bir sistem içinde gerçekleşiyorsa; “kendisi” demek ne demektir?


Görsel: estanbulbestnootropicsnow