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

in tr •  6 years ago 


Ö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.. ?

 


Posted from my blog with SteemPress :

https://murattatar.xyz/tamam-sabah-sondu-ama-aksam-olunca-da-yansin/

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

"Arduino ile Empati zamanı".. satırının üstündeki kodda,
X büyüktür 500 kısmında
Steemite geçerken bi değişim olmuş..
&lt; değil
> olacak..

Murat bey bilgiler için teşekkür ederim. Kullandığınız Arduino seti hangisidir ben şu siteden biraz baktım. Burdan baktım.


Birde kullanılan programlama dili C midir acaba bana sanki tanıdık geldi de?

İyi çalışmalar

Kısıtlı ve dar alanlarda da kullanılabilmesi için biz Nano üzerinde denemeler yaptık.
Bi ara Regülatör'ü yaktık mı diye şüphelenmiştik, aynı kodu hiç sorun yaşamadan Uno üzerinde de çalıştırdık. Ki teorik olarak promini, nano, uno .. hepsinde çalışması lazım.


Evet dil C++
tanıdık geliyorsa, çok keyifli şeyler yapılabilir demektir ;)

evet size rastlayınca anılarım tazelendi ben de yapmak istedim. teşekkür ederim :)