Önceki bölümler için bkz:
Akıllı Termostat AHMT v10.-2 W ve Ultrasonic HC SR04
Isı, hareket ve zamana duyarlı termostat yapalım: AHMT
Eksi 1)
Önceki yazının sonunda, netteki örneklerin çoğunun aksine, int yerine const byte kullandığımızdan bahsetmiştik. Şimdi o kısmı bi tık açmaya çalışalım.
malum bir bit 0 ya da 1 olabilir. Bunları farklı kombinasyonlarda kullanarak 4 farklı şey/harf ifade edebiliriz.
00 = Mavi = A
01 = Gökyüzü = B
10 = Bulut = C
11 = Güneş = D
elbetteki bu 4 seçenek yeterli değil.
büyük harf, küçük harf, rakam, nokta, virgül derken bunları ifade edebilmek bizi ancak 7-8 hane paklar.
yoksa? Evet BYTE.
Yani elimizde 8 hane var: |0|1|0|1|0|1|0|1|
Modüler artimatikten hatırlayacak olursak, ikilik tabanda sekiz basamaklı yazabileceğimiz en büyük sayı 11111111 bunu 10'luk tabana çevirelim bakalım neymiş: 127 126 125 124 123 122 121 120
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
Hmm.. demek ki 8 bit = 1 BYTE içine 255'e kadar olan sayıları tanımlayabiliyorum..
Peki 1 byte değil de 2 byte içine yazabileceğimiz en büyük sayı ne acaba?
1 + 2 + 4 + 8 + 16 + 32 + 64 +128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 = 32768
Hani o sağda solda Ezbere gördüğümüz rakam buradan geliyormuş demek ki ;)
1 BYTE içindeki her bit'in değeri 1 olsa, bununla yazabileceğimiz en büyük sayı:
|1|1|1|1|1|1|1|1| yani Onluk tabanda 255
2 BYTE içindeki her bit'in değeri 1 olsa, bununla yazabileceğimiz en büyük sayı:
|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1| yani Onluk tabanda 32768
Geçen yazıdan bir alıntı yaparak Arduino kodlarımıza dönelim;
int sesver = 3;yerine
cost byte sesver =3;
kullanmış olduğumuza dikkat edin ;)
Tercih etmediğimiz ilk haliyle kullanmış olursak;
"int sesver = 3;" dediğimizde SRAM'de 2 Byte yer tutacak demek. Ki örneğin mevcut Arduino Nano'daki SRAM'in toplam kapasitesi 2 KB.
Şu an için Hiç bir sorun olmaz elbet ama kodlar ve değişkenler arttıkça Metrobüsteki "Bir adım ilerler misiniz" meselesine dönerse olay, bu bilgi aklınızda olursa ;)
Bu arada 32768'den daha büyük sayılar da lazım olacak. Böyle durumlarda negatif işaretli -32768 gibi sayılara yer ayırmaktansa, pozitif tarafta 65536'da kadar gidilebilir.
Bunun için unsigned int kullanmak faydalı olabilir.
Yok bu da kesmedi ise; unsigned long ile çitayı 4,294,967,295 kadar çıkarabilirsiniz ;)
Böyle büyük sayılarla işim olmaz demeyin. Diyelim bi yerde Mili Saniye saydırmanız gerekti;
byte i ile tanımlanmış i'nin değeri ,neredeyse başlamadan 255'e ulaşacak ve oradan Geri saymaya başlayacağı için curcuna çıkacaktır.
Benzer şekilde int j ile tanımlanmış j'nin değeri, 33. saniyeden itibaren Halil Sezai + Linet moduna geçecektir ;)
Müziğe dönüşmek!
Posted from my blog with SteemPress :
https://murattatar.xyz/akilli-termostat-ahmt-v10-1-byte-ve-int-ile-tanimlama/
Anladım ki; metrobüste halil sezai yi görürsem ve bir adım ilerlemesini rica edersem, Linet buna isyan edecek. Ama Ahmet in doğru kodlanmasıyla tüm bu isyanların önüne geçilmiş olacak😊😁 Ayrıca mili saniye deyip geçmemeli, milli mili saniyelerimize sahip de çıkmalıyız.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
:))
Çıkabilecek İsyanları Sezerek Engelleme Makinası'dan mütevellit,
AHMT'in soyadını ÇİSEM mi koysak :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit