Led Parlaklık değiştirme

Altay06

Üye
Katılım
3 Şub 2021
Mesajlar
54
Puanları
1
Yaş
33
Merhaba arkadaşlar arduino ile pwm çıkış kullanarak bir touch buton ile bir ledin parlaklığını 5 kamede değiştireceğim ve belli bir süre basılı tutunca da kapanacak örnegin butona bastım açıldı her basışımda ledin parlaklıgı artacak 5 kademe sonrası yine en düşüğe dönecek ve belli bir süre basılı tutunca da kapanacak bununla ilgili örnek projesi olan var mı? Yani pwm ile onlarca örnek var biliyorum ben altından kalkarım ama basılı tutunca kapanması olayını yazılım olarak çözemedim. Yazılım kısmında çok eksiğim var? Basit bir şey mi ne düşünüyorsunuz bu konu hakkında :) Nerelere bakmam gerekli, Hayırlı forumlar, cevaplarınız için şimdiden teşekkürler :)
 
Kesme kullanmak zorunda değilsin ama böylesi sanki daha iyi


Kod:
const byte ledPin = 4;
const byte buttonPin = 2;
volatile int parlaklik = 0;
const int kapanmaSure = 1000;
volatile int basilanSure = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(buttonPin), led_kesme, FALLING);
}

void loop() {
  analogWrite(ledPin,map(parlaklik%6,0,5,0,255));
}

void led_kesme() {
  parlaklik++;
  while(!digitalRead(buttonPin)){
    basilanSure++;
    delay(1);
    if(basilanSure >= kapanmaSure){
      parlaklik = 0;
      analogWrite(ledPin,0);
     }
  }
  basilanSure = 0;
}
 
Son düzenleme:
Kesme kullanmak zorunda değilsin ama böylesi sanki daha iyi


Kod:
const byte ledPin = 4;
const byte buttonPin = 2;
volatile int parlaklik = 0;
const int kapanmaSure = 1000;
volatile int basilanSure = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(buttonPin), led_kesme, FALLING);
}

void loop() {
  analogWrite(ledPin,map(parlaklik%6,0,5,0,255));
}

void led_kesme() {
  parlaklik++;
  while(!digitalRead(buttonPin)){
    basilanSure++;
    delay(1);
    if(basilanSure >= kapanmaSure)
      parlaklik = 0;
  }
  basilanSure = 0;
}
çok teşekkur ederim hocam, yarin deneyecegim bunu 😊
 
Moderatör tarafında düzenlendi:
Kesme kullanmak zorunda değilsin ama böylesi sanki daha iyi


Kod:
const byte ledPin = 4;
const byte buttonPin = 2;
volatile int parlaklik = 0;
const int kapanmaSure = 1000;
volatile int basilanSure = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(buttonPin), led_kesme, FALLING);
}

void loop() {
  analogWrite(ledPin,map(parlaklik%6,0,5,0,255));
}

void led_kesme() {
  parlaklik++;
  while(!digitalRead(buttonPin)){
    basilanSure++;
    delay(1);
    if(basilanSure >= kapanmaSure){
      parlaklik = 0;
      analogWrite(ledPin,0);
     }
  }
  basilanSure = 0;
}
Günaydın hocam programı attiny85'e yüklerken şöyle bir hata alıyorum, ayrıca normal arduinoda denedim butona basınca parlaklık değişmiyor 3. basışımda açılıyor led 5 basışımda kapanıyor, 6 da açılıyor 9 da kapanıyor 11 de açılıyor 13 de kapanıyor.... bu şekilde oldu.
 

Ekli dosyalar

  • hata.jpg
    hata.jpg
    86.4 KB · Görüntüleme: 9
Son düzenleme:
Arkadaş şu foruma yazdıklarım yüzünden bi kere de yüzüm gülsün.
İlk sorunun cevabı attiny85 kitaplıkları farklı olduğu için o ifade tanımlı olmayabilir. İnternetten arat arduinoyla attiny85 interrupt nasıl verilmiş.
İkinci sorunun cevabı böyle yapması normal led belli bi voltajın altında yanmaz. Yazılım sıfır 5 volt arasını 5 e bölüyor yani üçüncü basışta 3 volta ulaşabiliyor. Yapman gereken tek şey map fonksiyonu içindeki 0,255 ifadesini 150,255 olarak değiştirmek. Böylece sıfır 5 volt arası değil 2.5 5 volt arası çalışır.
Ayrıca arduino üzerindeki led çıkışını kullanma harici bir LED tak
 
Kesme kullanmak zorunda değilsin ama böylesi sanki daha iyi


Arkadaş şu foruma yazdıklarım yüzünden bi kere de yüzüm gülsün.
İlk sorunun cevabı attiny85 kitaplıkları farklı olduğu için o ifade tanımlı olmayabilir. İnternetten arat arduinoyla attiny85 interrupt nasıl verilmiş.
İkinci sorunun cevabı böyle yapması normal led belli bi voltajın altında yanmaz. Yazılım sıfır 5 volt arasını 5 e bölüyor yani üçüncü basışta 3 volta ulaşabiliyor. Yapman gereken tek şey map fonksiyonu içindeki 0,255 ifadesini 150,255 olarak değiştirmek. Böylece sıfır 5 volt arası değil 2.5 5 volt arası çalışır.
Ayrıca arduino üzerindeki led çıkışını kullanma harici bir LED tak
hocam tşk edrim şimdi oldu fakat butona basılı tutunca kapanıyor ama butonu bıraktıgım gibi yeniden yanıyor bunun sebebi ne olabilir.
 
Arkadaş şu foruma yazdıklarım yüzünden bi kere de yüzüm gülsün.
İlk sorunun cevabı attiny85 kitaplıkları farklı olduğu için o ifade tanımlı olmayabilir. İnternetten arat arduinoyla attiny85 interrupt nasıl verilmiş.
İkinci sorunun cevabı böyle yapması normal led belli bi voltajın altında yanmaz. Yazılım sıfır 5 volt arasını 5 e bölüyor yani üçüncü basışta 3 volta ulaşabiliyor. Yapman gereken tek şey map fonksiyonu içindeki 0,255 ifadesini 150,255 olarak değiştirmek. Böylece sıfır 5 volt arası değil 2.5 5 volt arası çalışır.
Ayrıca arduino üzerindeki led çıkışını kullanma harici bir LED tak
Pwm ile gerilim mi ayarlanıyor?
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst