Arduino Menu Tasarımında Sorun

Şimdi tekrar baktım da doğru gibi kodlar sadece
Case=4 ün altında
if(pwm_acik)
satırı eklenmemiş Ben eklemeye çalıştım paragraf dan yapamadım
Bu kodu sadeleştırıp
ışık değerini,PWM değerini seri monitörde görme imkanı varmıdır?
Yani koddan ışık değeri 49 verilecek PWM değerleri ve ışık değerlerini gösterecek (49 a kadar pwm 0 olacak
50 olunca seri monitörde pwm i gösterecek
Bu yapılabilirmi?
 
Kodu karta yükledim photodiyotuda bağladım fakat istediğim şekilde çalışmadı
CASE lerin altındaki satırlarda
if(pwm_acik) satırından anladığım kadarıyla karşılaştırma yanlış yapılıyor gibi
Eğer Photodiyota 50 den fazla ışık geiyorsa bu case deki pwm değerini gönder demesi gerekli den az deger gönderiyorsa seçilmiş pwm i gönderme demesi gerekiyordu
Abi o kod burada tanımlanmış. 50den büyükse pwm_acik değişkenine 1 atıyor, 50 den küçükse 0 atıyor.
Sonra o değişkeni de aşağıda if(pwm_acik) pwm_acik tanımlıysa gibi bir şey olmuş burada.

C:
 isik=analogRead(photoDiode);
    if(isik>50){
        pwm_acik=1;
    }
    else{
        pwm_acik=0;
        digitalWrite(led,LOW);
    }

Bir deneme yapıp yeni kod göndereceğim onu bir denersin.
Şimdi tekrar baktım da doğru gibi kodlar sadece
Case=4 ün altında
if(pwm_acik)
satırı eklenmemiş Ben eklemeye çalıştım paragraf dan yapamadım
Bu kodu sadeleştırıp
ışık değerini,PWM değerini seri monitörde görme imkanı varmıdır?
Yani koddan ışık değeri 49 verilecek PWM Dğerleri ve ışık değerlerini gösterecek(49 a kadar pwm 0 olacak
50 olunca seri monitörde pwm i gösterecek
Bu yapılabilirmi?
Her şey mümkün de yolunu bulmak lazım.
Bir bakacağım.
 
@Omega abi aşağıdaki kodları bir dene. Serial Monitörü açıp 9600 baud rate ayarlarsan photodiyotun değerini basacaktır ekrana.
bütün case lerin içindeki koşulları 50den büyükse yapacak, değilse hiç bir şey yapmayacak şekilde düzelttim. Umarım doğru anlamışımdır.

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 photoDiode A0 // giriş A0 pini
#define LED1 4
#define LED2 5
#define LED3 6
#define LED4 7
#define LED5 8
#define LED6 10
#define LED7 11

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

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);



  Serial.begin(9600);

  
}

void loop() {
  Serial.print("PhotoDiyot Değeri: ");
  Serial.println(isik);
  buttonPoll = digitalRead(button);
  if (buttonPoll == 1) {

    delay(50);
    buttonPoll = digitalRead(button);
    if (buttonPoll == 0) {
      state = old + 1;
    }
  }
  else {
    delay(100);
  }

  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 (isik >= 50)
      {
        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 (isik >= 50)
      {
        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 (isik >= 50)
      {
        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);
      if (isik >= 50)
      {
        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 (isik >= 50)
      {
        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 (isik >= 50)
      {
        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 (isik >= 50)
      {
        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;
  }
}
 
Gökhan sağol yükledim programı Ama photodiode değeri:0 diye devamlı yazıyor
Kodda kacıncı satıra ısık=51 gibi bir değer yazacağım
 
@Gokrtl input alıyormuş süper benden ışık değerini ve case değerlerini alsın
pwm değerlerini bassın

 
@Gokrtl input alıyormuş süper benden ışık değerini ve case değerlerini alsın
pwm değerlerini bassın

Abi şu koda göre pwm değerini zaten basıyor olması lazım.
Bu kod senin case 1 in içindeki kod.
Burada diyor ki ışık değeri 50den büyükse "led'e" , "26" pwm değerini gönder.
Yani bu şekilde basıyor olması lazım.

C:
if (isik >= 50)
      {
        pwmWrite(led, 26);
      }
 
Yeni güncellenen kod da kesinlikle fotodiyot dan değer gelmiyor hep sıfır değeri dönüyor.Aynı pinlerde takılı olan (A0 ve GND) foto diyota 8.mesajdaki kodu yükleyince düzgün değerler görüyorum.Yani yanlış pine takılma yada hatalı fotodiyot bağlantısı yok
 
Son düzenleme:
Void loop() bölümüne
60.satıra
int isik=analogRead(A0);
ekledim düzeldi
 
Void loop() bölümüne
60.satıra
int isik=analogRead(A0);
ekledim düzeldi

Kodu derledim, seri monitöre sistem durumunu da yazdırdım. Fotodiyotu nasıl bağlandığınıza göre bir kaç seçenek var.
C:
// Dosya adı: LDR.ino

#include <PWM.h>//eklendi

int led = 9;   // eklendi
int32_t frequency = 50; //eklendi frequency (in Hz)
int state = 0;
int old=0;
int buttonPoll=0;
int pwm_acik=0;
int isik=0;
int pwm_test=0;
int isik_esik=840;


#define esik_ayar A1
#define button 3
#define inPin0  A0 // 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() {
Serial.begin(9600);

InitTimersSafe();
  //sets the frequency for the specified pin
  bool success = SetPinFrequencySafe(led, frequency);
  if (!success) {
    Serial.println("Failed to set frequency!");
  }
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);
// fotodiyot için giriş pininde Pull_up etkinleştirdim.
// fotodiyotu pullup ile kullanmalısınız, Eğer okuduğunuz değer düşükse ve
// çözünürlük yetmiyorsa ADC için referansı değiştirebilirsiniz
// adc'den 50 okuduğunuza göre daha uygun olacaktır
pinMode (inPin0,INPUT);

analogReference(INTERNAL); //1.1V ADC referansı

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

//GetPinResolution(uint8_t pin);

isik=analogRead(inPin0);


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_esik=100+analogRead(esik_ayar)/4;
isik=analogRead(inPin0);
// aşağıdaki kod seri monitörden durumu okumak içindir
Serial.println("isik  state   pwm   esik");
Serial.print(isik);Serial.print("    ");
Serial.print(state);Serial.print("     ");
Serial.print(pwm_test);Serial.print("     ");
Serial.println(isik_esik);
if(isik>=isik_esik){
    pwm_acik=1;
}
else{
    pwm_acik=0;
    pwmWrite(led, 0);
}

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)   
    {
        pwm_test=26; 
        pwmWrite(led,pwm_test);  
    }
    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)   
    {
        pwm_test=51;
        pwmWrite(led, pwm_test);   
    }
    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)   
    {
        pwm_test=76; 
        pwmWrite(led, pwm_test);
        
    }
    
    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);
    if(pwm_acik)   
    {
        pwm_test=102;
        pwmWrite(led, pwm_test);
          
    }
    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)   
    {
        pwm_test=127;
        pwmWrite(led, pwm_test);  
    }
    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);
    if(pwm_acik)   
    {
        pwm_test=153;
        pwmWrite(led, pwm_test);
    }    
    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)   
    {
        pwm_test=179;   
        pwmWrite(led, pwm_test);
    }
    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);
    
    pwm_test=0;
    pwmWrite(led, pwm_test);
    old=0;
    break;
  }
}

setup kısmını kontrol edin
Düzenleme: kodda değişiklik
 
Son düzenleme:
Semih bey ,
İçten ve mükemmel yardımlarınız için çok teşekkür ederim.Sayenizde program düzgün çalıştı.
Bir işi sonuçlandırmaya verdiğiniz önem ne kadar profesyonel olduğunuzun göstergesi.

@Gokrtl Gökhancım sanada çok teşekkür ederim
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,659
Mesajlar
97,341
Üyeler
2,438
Son üye
İbrahimSönmez

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