Akıllı Termostat AHMT v10.-1: Byte ve Int ile tanımlama

in #tr6 years ago


Ö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

Görsel


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/

Sort:  

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.

:))
Çıkabilecek İsyanları Sezerek Engelleme Makinası'dan mütevellit,
AHMT'in soyadını ÇİSEM mi koysak :)

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63643.10
ETH 2582.85
USDT 1.00
SBD 2.75