Bkz 1. Bölüm: Dijital Ay Çiçeği #1 // 8000$ Değerinde post
Önceki bölümde, olayın genel mantığından bahsetmiş ve kodlarda kullanacağımız değişkenleri tanımlamıştık.
Ardından, sadece ilk seferinde çalışacak olan setup kodlarımızı yazmıştık.
Son duruma toplu halde bakalım:
#include
Servo xMotor;
const byte ldrSag=A1;
const byte ldrSol=A3;
byte aci=90;
int gunesSag, gunesSol;
void setup() { Serial.begin(9600);
// servo için PWM pinleri 3-5-6-9-10-11 olabilir
xMotor.attach(6); // Tek motor için
xMotor.write(aci);
}
Burada void Setup içinde, Serial.begin ile seri portu ekranda görme işlemini başlatmış oluyoruz.
Isim.attach(6) ile de 2. satırdaki xMotor adıyla oluşturduğumuz Servo nesnesine PİN numarasını bildiriyoruz.
Yani fiziksel olarak Servo Motor’u bağlayacak olduğumuz pin 6 nolu dijital pin. 6 yerine yukarıda PWM olarak belirtilen diğer pinler de olabilir.
İşin icraat kısmında ise İLK eylem olarak yaptığımız şey, Servo Motor’a SIFIR açısına gitmesini söylemek:
Ancak görüleceği üzere xMotor.write(0) yazmak yerine xMotor.write(aci) yazdık.. Neden?
Çünkü ilk bölümdeki tanımlamalar kısmında aci=0 değerini vermiştik.
x, y, aci ve benzeri değişken kullanmak bize “aci+15” örneğinde,
60+15 gibi sabit bir sonuç vermek yerine “daima mevcut açının 15 fazlası” şeklinde esneklik sunacak.
:)) ünlü düşürler
Sürekli dönecek olacak loop() fonksiyonumuzu yazalım:
Temel amacımız: Güneşe Dik olmak.
O halde şöyle bir kurgu yapabiliriz;
Bir elim pencereye bir elim odanın içine doğru olacak şekilde iki kolumu açsam.. Camdan taraftaki elime daha çok ışık düşecektir. Kollarımı bozmadan yüzümü pencereye doğru dönsem.. iki elimi birleştiren eksen, pencerenin olduğu duvar ile paralel konuma geldiğinde.. İki elime düşen ışık miktarı eşit olacaktır.
O halde, güneşe dik olmak demek, İki elime de düşen ışık miktarının eşit olması demek.
Peki ışık miktarını nasıl ölçeceğiz?
LDR: Işığa duyarlı direnç ile.
Aslında en temelde ilköğretim gördüğümüz Direnç ölçümü yapacağız. Sadece elimizdeki direnç, üzeri renkli çizgilerle kaplı olan direnç olmayacak da, üzerine düşen ışığa göre direnç (ohm) değeri değişen bir direnç olacak.
Hani karanlıkta yanan küçük gece lambalarının yanmasını sağlayan minik şey.
Teoriden pratiğe gelirsek; Güneş panelimizin ön yüzünde, karşılıklı iki ayrı kenara birer tane LDR koyacağız.
Bunlara düşen ışık miktarını okuyacağız ve bunların eşit olmasını sağlamak için Servo Motor’un dönmesini (paneli döndürmesini) tetikleyeceğiz 😉