Arduino Pottan okunan değere göre led ışık şiddeti

Gokrtl

Gökhan Kartal (TeknoDay)
Staff member
Katılım
27 Şubat 2019
Mesajlar
11,210
Bir arkadaşa yardımcı olmaya çalışıyorum. 3 tane ledi var. Pottan okunan 0-350 değerine kadar led_1'i yavaştan tam yanmaya kadar ayarlayacak.
pot değeri 351 olduğunda led_1'i söndürüp 351-700 arası led_2 yi yakacak ve son kalan kısımla led_3'ü yakacak.
Kodu belli bir seviyeye getyirdim ama azdan çoğa doğru yakamıyorum.

C:
#define Pot A0
#define LED_Red 9
#define LED_Green 10
#define LED_Blue 11

int pot_okuma = 0;
void setup() {
  Serial.begin(115200);

  pinMode(A0, INPUT);
  pinMode(LED_Red, OUTPUT);
  pinMode(LED_Green, OUTPUT);
  pinMode(LED_Blue, OUTPUT);

 digitalWrite(LED_Red, LOW);
 digitalWrite(LED_Green, LOW);
 digitalWrite(LED_Blue, LOW);

}

void loop() {
pot_okuma = analogRead(Pot);
int pot =map(pot_okuma,0,350,0,255);
Serial.print("Pottan Okunan Değer");
Serial.println(pot_okuma);
digitalWrite(LED_Red, pot);
digitalWrite(LED_Green, LOW);
digitalWrite(LED_Blue, LOW);

delay(100);

}
 
Aşağıdaki kod yapısı ile çözdüm işi ama diğer lede geçtiğinde önceki led sürekli pır pır edip duruyor.
Neden öyle yaparki?

C:
#define Pot A0
#define LED_Red 9
#define LED_Green 10
#define LED_Blue 11
int pot;
int pot_okuma = 0;
void setup() {
  Serial.begin(115200);
}

void loop() {
pot_okuma = analogRead(Pot);
if(pot_okuma >= 0){
pot =map(pot_okuma,0,350,0,255);
Serial.print("Pottan Okunan Değer");
Serial.println(pot_okuma);
analogWrite(LED_Red, pot);
analogWrite(LED_Green, LOW);
analogWrite(LED_Blue, LOW);
}
if(pot_okuma >= 351){
pot =map(pot_okuma,351,700,0,255);
analogWrite(LED_Red, LOW);
analogWrite(LED_Green, pot);
analogWrite(LED_Blue, LOW);
}
if(pot_okuma >= 700){
pot =map(pot_okuma,700,1023,0,255);
analogWrite(LED_Red, LOW);
analogWrite(LED_Green, LOW);
analogWrite(LED_Blue, pot);
}
delay(100);

}
 
Testi ters sıradan yap ( >= 700 kontrolü en önce ). Ayrıca bir sonraki testi else if ile yap. Bu senin yaptığın şekilde >= 0 şartı her zaman doğru oluyor.
 
Testi ters sıradan yap ( >= 700 kontrolü en önce ). Ayrıca bir sonraki testi else if ile yap. Bu senin yaptığın şekilde >= 0 şartı her zaman doğru oluyor.
else if yapısını ekledim ve && ile ikili if blokları oluşturdum. Senin dediğin gibi ters yazınca pot ters çalıştı.


C:
#define Pot A0 // A0 anolog pinin ismini Pot yap
#define LED_Red 9 // 9 pwm pinin ismini LED_Red yap
#define LED_Green 10 // 10 pwm pinin ismini LED_Green yap
#define LED_Blue 11 // 11 pwm pinin ismini LED_Blue yap

int pot; // pot değişkeni tanımla
int pot_okuma = 0; //A0 pininden okunan değeri atamak için değişken tanımla
void setup() {
  Serial.begin(115200);
}

void loop() {
pot_okuma = analogRead(Pot); //A0 pinindeli pottan gelen değeri pot_okuma değişkenine at
if((pot_okuma >= 0) && (pot_okuma <=350)){ // Eğer pot_okuma değişkeni içindeki değer  0 dan büyük veya eşitse ve 350 den küçük veya eştse bu bloğu çalıştır.
pot =map(pot_okuma,0,350,0,255); // A0 pinden okunan 0-1023 değeri 0-255'e çevir pot değişkenine at.
Serial.print("Pottan Okunan Değer");
Serial.println(pot_okuma);
analogWrite(LED_Red, pot); // Kırmızı ledi pot değişkenindeki değere göre yak
analogWrite(LED_Green, LOW); // Yeşil ledi söndür
analogWrite(LED_Blue, LOW); // Mavi ledi söndür
}
else if((pot_okuma >= 351) && (pot_okuma <=699)){ // Öyle değilde böyle ise (pot_okumadan gelen değer 351 den büyük veya eşitse ve 699 dan küçük veya eşitse) bu bloğu çalıştır.
pot =map(pot_okuma,351,700,0,255);
analogWrite(LED_Red, LOW); // Kırmızı ledi söndür
analogWrite(LED_Green, pot); // Yeşil ledi pot değişkenindeki değere göre yak
analogWrite(LED_Blue, LOW); // Mavi ledi söndür
}
else if(pot_okuma >= 700){ // Öyle değilde böyle ise (pot_okumadan gelen değer 700 den büyük veya eşitse) bu bloğu çalıştır.
pot =map(pot_okuma,700,1023,0,255);
analogWrite(LED_Red, LOW); // Kırmızı ledi söndür
analogWrite(LED_Green, LOW); // Yeşil ledi söndür
analogWrite(LED_Blue, pot); // Mavi ledi pot değişkenindeki değere göre yak
}
delay(100); // 100ms bekle

}
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,789
Mesajlar
99,022
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top