Arduino Menu Tasarımında Sorun

@taydin @Gokrtl bu konu ile ilgili video çektim.Bu tür videoları hızlıca yükleyebildiğimiz bi site vardı.Adı neydi ?
 
@taydin videoyu ekledim .Çalışan bir devre sadece programda eklemelere ihtiyacım var
 
Fotodiyodu nasıl bağladığını ben hala anlamadım. Ama eğer devre çalışıyorsa o zaman değişik ışık şiddetleri için çok değişik değerler okuyabiliyor olman lazım. Okuyabiliyorsan da bir sorun yok ortada :bilmem3:
 
Timur benim amacım en basit haliyle ,kodda CASE yapılarının içindeki farklı PWM lerin hemen üstüne if ısık>50 then bu pwm değeri pin 9 dan gönder eğer 50 den küçükse bir sinyal algılamadığın için bekle diyebilmek.
Hepsi bu
Yani 8.mesajımdaki programı ,"yüksek" ışık algıladığında git çıkışdaki led i yak örneği yerine git seçtiğim PWM i 9.pinden çıkart
Yani uzun programa Photo diyodun bağlantısı ve yazılımını eklemek ışık değeri 50 den büyükse LED lerle seçilmiş bu değeri 9.pinden göndersin demek istiyorum.
Uzun programda farklı PWM ler ve ledlerin durumu düzgün çalışıyor .8.Mesajımda ise Photodiyot tan çıkan değer 50 den yukarı ise bu örnekte 3.pine bağlanmış LED i yakıyor bu da çalışıyor Amacım ikisini birleştirebilmek

Tıpkı bir cihaza menüden 1-6 arasında bir değer seçtireceğim örneğin 3 ü seçtim ."Seçim menüsünden " çıkacak Photodiyoddan 50 nin üzerinde bir değer geldiği zaman 3 ü seçtiği için onun PWM değeri neymiş:
1 mesajımdaki eklediğim kodun 99.satırında ne yazıyor

Kod:
pwmWrite(led, 76);

bende bir tablodan yada bir değişkenken aldığım bu 76 PWM değerini
pwmWrite(led, PWMDEGERI );
diye göndereceğim.
 

Ekler

  • BPW 34.png
    BPW 34.png
    139.2 KB · Görüntüleme: 130
Anladığım kadarıyla Led1-7 sistem durumu temsil etmek için açık, bunların pwm olarak yanmasını istiyorsunuz, pwm çıkış verdiğiniz pin "9". durum ledlerinizin her biri pin 9'a mı bağlı? Bir led yandığında foto diyota düşen ışık da değişiyorsa sisteme geri besleme yapıyordur, durağan bir sonuç çıkmaz gibi. Devre şemanız var mı? yazdığınız kod tarif ettiğiniz işi yapacak gibi duruyor.
 
Nanonun üzerine taktığım kendi yaptığım bir shild

Buton D3 pininde
LED ler D5,D6,D7,D8,D10,D11 de
D9 PWM çıkışı (Aslında D9 a da bir LED vardı pwm çıkışı başka yok diye oradan pwm çıkışı aldım.Eğer Başka bilmediğim pwm pini varsa oradan alırsam çok iyi olur .Çünkü LED lerin sayısını 7 adet yapmam da gerekiyor
Devrede 6 tane 330 ohm direnç var,6 tane kılıfını bilmediğim SMD led var,D3 pinine bağlı 10Kohm buton için direnç var
Buton D3 pinine bağlı.Zaten arduino da kod yazanlar nereye ne bağlı anlayabiliyordur.


A0 pinine ise BPW 34 ü bağlayacağız Hayırlısıyla :)

Bu kodları ben tam olarak anlayarak yazmadım .İlk mesajlarımda da dediğim gibi bu 4-5 kere kod yazdığım bir ortam
 
Konuyu en basit olarak şöyle izah edeyim
Diyelimki bir LDR sensörümüz var.
Bunun üzerine 200 lux ışık gelince çıkış ucundan (D9Pininden )
1.Ledi yanmış olarak ayarlarsak 10 volt
2.Ledi yanmış olarak ayarlarsak 20 volt
3.Ledi yanmış olarak ayarlarsak 30 volt
..........
..........
böyle 6 tane seçeneğimiz var
istenen hangi led seçilmişse o değerde voltaj çıksın istiyoruzHikaye bu
 
Son düzenleme:
Son mesajınıza istinaden tekrar düzenledim.
C:
switch (state){
    case 1:
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
//eğer fotodiyot aşağıdaki aralıktaysa pwm çıkış
    if((analogRead(fotodiyot)>altdeger)||(analogRead(fotodiyot)<ustdeger))
    {
        pwmWrite(led, 27);    
    }
    else // değilse led kapalı
    {
        digitalWrite(LED,LOW);
    }
    old=state;
    break;

gibi diğer kodları "state"ler için de düzenlenebilir. yanlış anlamadıysam.
 
Semih bey son mesajımı okursanız orada konuyu anlattım
 
Aslında switch döngüsünün dışında foto diyotu okuyup, buna isabet eden pwm değerini bir değişkene atasak daha iyi olur gibi.
 
@semih_s sanırım 6 case içine bu satırları ekleyeceğim değilmi?
Ama tanımlama kısmını nasıl ayarlayacağım
 
Ben başlangıçta A0 pininden gelecek ışık alt değerini koda yazacağım .Yani ışık değeri örneğin 50 den yukarı olunca ,LEDlerler seviyesini belirlediğim PWM i çıkaracak

Yani ne kadar ışık geliyorsa o kadar çok LED yansın istemiyorum
Koda bakarsanız 1 LED yanık diğer 5 LED sönükken en düşük PWM e ayarlı
Böyle böyle 6.LED yanık kaldığında D9 pininden en yüksek PWM çıkıyor

@semih_s 8.mesajımdaki küçük programı ilk mesajdaki koda ekleyeceğim
Yani uzun programa

if(isik>50){
digitalWrite(led,HIGH);
}
if(isik<50){
digitalWrite(led,LOW);

gibi kodları ekleyeceğim
 
Öyleyse d9'un açık olup olmamasını switch döngüsünün dışında belirleyeceksiniz. switch döngüsünde de eğer ışığı açacaksanız ilgili pwm değeri atanacak.
"pwm_acik" diye bir kontrol değişkeni tanımlayıp buna switch döngüsünden önce değer atayalım 0 kapalı 1 açık olsun
Kod:
switch (state){
    case 1:
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
// 1 için çalışır, 0 yani kapalıysa döngü dışında pwm_acik değerini atarken
// pwm çıkışı kapatılabilir, b
    if(pwm_acik)   
    {
        pwmWrite(led, 27);   
    }
    
    old=state;
    break;
 
Ben başlangıçta A0 pininden gelecek ışık alt değerini koda yazacağım .Yani ışık değeri örneğin 50 den yukarı olunca ,LEDlerler seviyesini belirlediğim PWM i çıkaracak

Yani ne kadar ışık geliyorsa o kadar çok LED yansın istemiyorum
Koda bakarsanız 1 LED yanık diğer 5 LED sönükken en düşük PWM e ayarlı
Böyle böyle 6.LED yanık kaldığında D9 pininden en yüksek PWM çıkıyor

Kod:
if(isik>50){

  pwm_acik=1;

}

else {    // else kullanalım 50 değeri için ikisi de çalışmıyor yoksa

pwm_acik=0;
digitalWrite(led,LOW);
}

bir uygulayın, çalışması lazım, tabii "int pwm_acik=0;" diye değişkeni tanımlamayı unutmayın setup'da.
 
@semih_s yardımlarınız için teşekkür ederim.
Rica etsem 1.mesajımdaki kod ları 8.mesajımdaki koda göre satırlarına copy paste yaparak güncellemeniz mümkünmü?
Hemen test edebilirim
 
C:
// Dosya adı: LDR.ino
#include <PWM.h>//eklendi

int led = 9;   // eklendi
int32_t frequency = 50; //eklendi frequency (in Hz)

#define button 3
#define inPin0// giriş A0 pini
#define LED1 4
#define LED2 5
#define LED3 6
#define LED4 7
#define LED5 8
#define LED6 10
#define LED7 11

void setup() {

pinMode(led,OUTPUT);
pinMode (button,INPUT);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);   
pinMode (LED1,OUTPUT);
pinMode (LED2,OUTPUT);
pinMode (LED3,OUTPUT);
pinMode (LED4,OUTPUT);
pinMode (LED5,OUTPUT);
pinMode (LED6,OUTPUT);
pinMode (LED7,OUTPUT);



digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
digitalWrite(LED6,LOW);
digitalWrite(LED6,LOW);

int state = 0;
int old=0;
int buttonPoll=0;
int pwm_acik=0;
int isik=analogRead(A0);

Serial.begin(9600);
Serial.println(isik);
}

void loop() {
buttonPoll =digitalRead(button);
if (buttonPoll ==1){

  delay(50);
  buttonPoll=digitalRead(button);
  if (buttonPoll ==0){
    state =old+1;
  }
}
  else{
    delay(100);
  }
    isik=analogRead(A0);
    if(isik>50){
        pwm_acik=1;
    }
    else{
        pwm_acik=0;
        digitalWrite(led,LOW);
    }
switch (state){
case 1:
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    if(pwm_acik)   
    {
        pwmWrite(led, 26);   
    }
    old=state;
    break;
case 2:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,HIGH);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    //pwmWrite(led, 44);
    if(pwm_acik)   
    {
        pwmWrite(led, 51);   
    }
    old=state;
    break;
case 3:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,HIGH);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
//pwmWrite(led, 48);
    if(pwm_acik)   
    {
        pwmWrite(led, 76);   
    }
    pwmWrite(led, 76);
    old=state;
    break;
case 4:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,HIGH);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    //pwmWrite(led, 52);
    pwmWrite(led, 102);
    old=state;
    break;
case 5:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,HIGH);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    //pwmWrite(led, 58);
    if(pwm_acik)   
    {
        pwmWrite(led, 127);   
    }
    old=state;
    break;
case 6:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,HIGH);
    digitalWrite(LED7,LOW);
    //pwmWrite(led, 62);
    if(pwm_acik)   
    {
        pwmWrite(led, 153);   
    }   
    old=state;
    break;
case 7:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,HIGH);
    //pwmWrite(led, 78);
    if(pwm_acik)   
    {
        pwmWrite(led, 179);   
    }
    old=state;
    break;
default:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    old=0;
    break;
  }
}
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,833
Mesajlar
99,481
Üyeler
2,477
Son üye
krmz

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
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)
Back
Top