İkinci hazırlık deneyi de iyot çözeltisiyle C vitamini (askorbik asit) tepkimesi. Aşağıdaki videoda da görüldüğü gibi önce erlende iyot çözeltisini hazırladım. Ardından daha önceden hazırladığım C vitamini çözeltisinden birazını erlendeki çözeltiye ekledim. C vitamini çözeltisi için marketten aldığım 1000 mg’lık C vitamini tabletlerinden iki tanesini bir kapta metal kaşık yardımıyla ezerek (evet, havan daha iyi bir çözüm olabilirdi) suda çözdüm. Tabii ki tamamı çözünmüyor. Artıkları kahve filtresi yardımıyla süzdüm. C vitamini ile iyot çözeltisi bir araya gelince iyot çözeltisi birden rengini kaybetti. Bu tepkime de oldukça hızlıydı.
Uzun zamandır yapmayı planladığım bir gösteri deneyi için gereken malzemeleri sonunda tedarik ettim ve düşünmeye başladım. İnternette bu deneyin bir sürü filmi var nasıl olsa. Bu durumda deneyde meydana gelen olayları parça parça göstermeye karar verdim.
Bu yazı dizisinde hikayeye bu parçalarla başlayacağım ve en sonunda da yapmak istediğim deneyi yapacağım.
Serinin ilk deneyi ilkokuldan beri yapılan iyot ile nişastanın tepkimesi. Malzeme olarak eczaneden alınan tentürdiyot ve marketten alınan nişasta yeterli. Bunları çözmek için de tepkimeleri etkilemesin diye damıtılmış su kullandım. Aşağıdaki videoda bu deneyi nasıl yaptığımı görebilirsiniz.
Deney erlene iyot çözeltisi koymamla başlıyor. Görüldüğü gibi kırmızıya yakın renkli bir sıvı. Biraz damıtılmış su ekleyerek sıvı miktarını arttırdım. Sonra bir deney kabında nişasta çözeltisi hazırladım.Bu sıvı biraz bulanık oldu çünkü nişasta suda iyi çözünmüyor ama deney için sorun değil. Sonra da iyot çözeltisini nişasta çözeltisine döktüm. Görüldüğü gibi renk çok çabuk bir şekilde koyu laciverde hatta siyaha dönüştü. Bu deneyde göstermek istediğim şey, renk değişiminin ne kadar hızlı olduğuydu. Son deneyde de bu renk değişimini kullanacağız.
Bu sefer robotu üçüncü çizgide durdurma problemine bakayım dedim. Temel Lego programlama derslerinde işlenen bir problem. Robot zeminden farklı renkte çizgilerin üzerinden geçerken üçüncü çizgide durmalı. En basit çözümlerden biri heralde şöyle olabilirdi:
Yavaşça kısa süre hareket et.
Çizgi görene kadar ilerle.
Çizgiyi görünce dur.
Bu üç adımı üç kere tekrarlayan bir program bu problemi çözer.
Yeni şeyler öğrenebileceğim bir çözüm aradım ve aşağıdaki programı yaptım. Bu programda birbirine paralel (yani aynı anda) çalışan iki program akışı var. Başlangıç bloğundan çıkan iki ayrı yol bu program parçalarını belirliyor. Önce programa iki tane başlangıç bloğu koyup yaptım bunu ama nedense ikisini de tek tek çalıştırmam gerekti. Bu şekilde iki program parçası da tek bir tuşla başlatılabiliyor.
Alt taraftaki program parçası sadece robotu sürekli ileri doğru hareket ettiriyor ve sonsuz bir döngüye giriyor, yani bu program hiçbir şeye bakmadan sürekli ierliyor. Bu döngüden sonra ise robotu durdurma bloğu var. Demek ki bu döngü o kadar da sonsuz değilmiş. Evet, bu döngünün ömrünü üst taraftaki program parçası belirliyor.
Üstteki program parçası temelde şunu yapıyor. Renk değişimi olana kadar bekliyor. Değişiklik olunca yeni rengi bir değişkene yazıyor. Eğer yeni renk siyah ise (kullandığım çizgilerin rengi siyahtı) o ana kadar görülmüş çizgi sayısı değişkenini bir arttırıyor. Eğer toplam 3 olmuşsa alt taraftaki sonsuz döngüyü bitiriyor ve böylece motor duruyor.
Programda iki tane değişken var. Bunlar biri ‘color’ adında diğeri de ‘line’ adında kırmızı bloklar şeklinde tanımlanmış. Bu blok programlama dilinde beni en rahatsız eden şey değişken kullanımı oldu. Bir değişkenin değerini arttırmak için önce bir değişken okuma bloğu kullanıyoruz. Sonra bu değişkenin çıktısını toplama bloğuna sokuyoruz. Çıkan sonucu da tekrar değişken yazma bloğuna gönderiyoruz. Basit bir işlem için üç blok gerekiyor yani. Bu blokları bir araya getirip kendi bloklarımıza yapabiliriz ama bu işi henüz o kadar öğrenmedim.
Üstteki program parçasının alt kısmında toplama bloğunun girişlerinin biri çizgi sayısı değişkeninin değeriyken diğeri de renk değişkeninin siyah olup olmadığını kontrol eden karşılaştırma bloğunun çıkışıdır. Eğer renk değişkeninin yeni değeri siyah ise karşılaştırma bloğunun çıkışı 1 değerine, aksi durumlarda ise 0 değerine sahip oluyor. Bu nedenle aşağıdaki toplama bloğu sadece renk geçisi siyaha olursa çizgi değişkenini 1 arttırıyor, diğer durumlarda ise 0 arttırıyor, yani sabit tutuyor.
Sonraki blok ise çizgi sayısı değişkeninin değerinin 3 olup olmadığını kontrol ediyor. Eğer 3 ise çıktı doğru oluyor ve bir sonraki döngü bloğu bitiyor. Eğer 3 değilse çıktı yanlış oluyor ve döngü devam ediyor. Bu döngü bitince de döngü durdurma bloğu çalışıyor ve bu blokta kullanılan numara bitirmek istediğimiz döngüye verdiğimiz numarayla aynı olmalı (Programda 02). Dikkat edersek üstteki program parçası 01 numaralı döngüye, alttaki program parçası ise 02 numaralı döngüye sahip. Biz de 02 numaralı döngüyü bitirmek istiyoruz, çünkü böylece motor duracak.
Aiağıdaki kısa filmde programı çalışırken görebilirsiniz.