- dMoto + Arduino Nano + Mini USB kablo
- Breadboard
- LED
- Potansiyometre
- 330R direnç
- Bir tane erkek-dişi jumper kablo
- Beş tane erkek-erkek jumper kablo
Şu ana kadar buton/LED aç/kapa işlemlerini digitalRead/Write (HIGH, LOW) ile yaptık. Eğer LEDin parlaklığını ayarlamak gibi işlemler yapmak istersek analogRead/Write fonksiyonlarını kullanmamız gerekir. Digital/Analog read ile dış dünyada neler olduğunu (butona basılma, sıcaklık ölçme) anlar, write ile dış dünyada iş yapar (LEDi yakma, motoru çalıştırma). Robot yapmak isteyenin bu fonksiyonların nasıl çalıştığını anlaması önemli.
- Digital: 0V = 0 (LOW), 5V = 1 (HIGH), 2V = 0 (LOW), 3V = 1 (HIGH)
- Nanonun analog pinleriyle kullanılabilir (read: A0...A7, write: 3, 5, 6, 9, 10, 11).
Kodun kağıt üstünde çalıştırılması:
- İlk başta brightness = 0, change = 5
- brightness <= 0 doğru olduğundan bu if bloğuna girilir, Serial Monitor'e Increasing yazılır, change = 5 olur.
- brightnes >= 255 yanlış olduğundan bu if bloğuna girilmez.
- brightness = brightness + change --> brightness = 0 + 5 = 5 olur.
- analogWrite(ledPin, brightness) --> LED pinine 5 değeri yazılır, LED parlaklığı artar.
- delay(30): Nano 30ms (0.03s) bekler
- Loop'un başına dönülür. Şimdi brightness = 5, change = 5
- brightness <= 0 yanlış olduğundan bu if bloğuna girilmez.
- brightnes >= 255 yanlış olduğundan bu if bloğuna girilmez.
- brightness = brightness + change --> brightness = 5 + 5 = 10 olur.
- analogWrite(ledPin, brightness) --> LED pinine 5 değeri yazılır, LED parlaklığı artar.
- delay(30): Nano 30ms (0.03s) bekler
- Bu şekilde loop tekrar eder ve brightness 255 olana kadar artar.
- Brightness = 255 olup loop'un başına dönülür.
- Brightness = 255, change = 5.
- brightness <= 0 yanlış olduğundan bu if bloğuna girilmez.
- Brightness 255 olduğunda brightness >= 255 doğru olduğundan bu if bloğuna girilir, Serial Monitor'e Decreasing yazılır, change = -5 olur.
- brighness = brightness + change --> brightness = 255 + (-5) = 255 - 5 = 250 olur.
- analogWrite(ledPin, brightness) --> LED pinine 250 değeri yazılır, LED parlaklığı azalır.
- delay(30): Nano 30ms (0.03s) bekler
- Loop'un başına dönülür. Şimdi brightness = 250, change = -5
- brightness <= 0 yanlış olduğundan bu if bloğuna girilmez.
- brightnes >= 255 yanlış olduğundan bu if bloğuna girilmez.
- brightness = brightness + change --> brightness = 250 + (-5) = 250 - 5 = 245 olur.
- analogWrite(ledPin, brightness) --> LED pinine 245 değeri yazılır, LED parlaklığı azalır.
- delay(30): Nano 30ms (0.03s) bekler
- Bu şekilde loop tekrar eder ve brightness 0 olana kadar azalır.
- Brightness = 0 olup loop'un başına dönülür.
- Brightness = 0, change = -5.
- brightness <= 0 doğru olduğundan bu if bloğuna girilir, Serial Monitor'e Increasing yazılır, change = 5 olur.
- brightnes >= 255 yanlış olduğundan bu if bloğuna girilmez.
- brightness = brightness + change --> brightness = 0 + 5 = 5 olur. LED parlaklığı artar.
- analogWrite(ledPin, brightness) --> LED pinine 5 değeri yazılır, LED parlaklığı artar.
- delay(30): Nano 30ms (0.03s) bekler
- Bundan sonrası adım 11 ile aynı. Nano'nun eletriği kesilinceye kadar LED parlaklığı artıp azalarak böyle sürer gider...
- if (brightness <= 0) satırındaki "0" yerine "150" yazarsak ne olur?
- delay(30) satırını silersek ne olur?
- delay(200) yaparsak ne olur?
- change değerini 1 yaparsak ne olur, 20 yaparsak ne olur?
No comments:
Post a Comment