Şimdi Ara

Arduino IR sensör algılayıcı kod hatası

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
4
Cevap
0
Favori
707
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba,

    Ders projesi olarak bir Arduino ile kontrol edilen IR sensör alıcılarının olduğu bir devre kurdum. Devreyi kısaca özetlemek gerekirse 2 adet sensör IR LED'den sürekli olarak sinyal alıyor. Herhangi bir cisim bu LED ile IR sensör arasına girdiğinde sinyal kesiliyor ve Arduino'ya sinyal gidiyor. Arduino "0" sinyali aldığında bağlantı kesilmemiş (gol yok) durumda "1" sinyali aldığında ise bağlantı kesilmiş (gol oldu) durumda oluyor. Arduino'dan bu sinyal işlenip 2x16 LCD displayde skor tutuluyor.

    Devre sorunsuz çalışıyor ancak Arduino ya attığım kod ile LCD ekranda skoru tutamıyorum. Bir sensörden algılıyor ancak diğerinde sapıtıyor. Yazdığım kod herhangi bir hata vermeden Arduino'ya yükleniyor. Kodu aşağıda paylaşıyorum. Eğer sorunu görebilen ve yardımcı olabilecek birileri varsa çok sevinirim. Şimdiden teşekkürler.

    Sinyal gelen pinler 6 ve 7.

    KOD:


    #include <LiquidCrystal.h>

    #define irSensorPin1 7
    #define irSensorPin2 6

    int score1 = 0 ;
    int score2 = 0 ;


    // Orjinal LCD Ornegindeki kısım bu sekilde degistirilmeli:
    LiquidCrystal lcd(13, 12, 11, 10, 9, 8);



    void setup(){
    pinMode(irSensorPin1, INPUT);
    pinMode(irSensorPin2, INPUT);
    Serial.begin(9600);
    lcd.begin(16, 2);

    }

    void loop(){

    lcd.setCursor(0,0);
    lcd.print("TEAM 1 = ");
    lcd.print( score1);
    lcd.setCursor(0,1);
    lcd.print("TEAM 2 = ");
    lcd.print(score2);
    if ( digitalRead(irSensorPin1) == 1 ){
    score1 = score1 +1 ;
    }
    delay(500);
    if ( digitalRead(irSensorPin2) == 1 ){
    score2 = score2 +1;
    }
    delay(500);
    Serial.println(digitalRead(irSensorPin2));
    }







  • #include <LiquidCrystal.h>  

    #define irSensorPin1 7
    #define irSensorPin2 6

    int score1 = 0 ;
    int score2 = 0 ;


    // Orjinal lcd Ornegindeki kısım bu sekilde degistirilmeli:
    LiquidCrystal lcd(13, 12, 11, 10, 9, 8);



    void setup(){
    pinMode(irSensorPin1, INPUT);
    pinMode(irSensorPin2, INPUT);
    Serial.begin(9600);
    lcd.begin(16, 2);

    void loop(){
    lcd.setCursor(0,0);
    lcd.print("TEAM 1 = ");
    lcd.setCursor(0,1);
    lcd.print("TEAM 2 = ");

    if ( digitalRead(irSensorPin1) == 1 && digitalRead(irSensorPin2) == 0 )
    {
    score1 = score1 +1 ;
    lcd.setCursor(9,0);
    lcd.print( score1);
    }
    if ( digitalRead(irSensorPin2) == 1 && digitalRead(irSensorPin1) == 0 )
    {
    score2 = score2 +1;
    lcd.setCursor(9,1);
    lcd.print(score2);
    }
    }


    Dener misin? Ayrıca LCD shield mı?



    < Bu mesaj bu kişi tarafından değiştirildi AnotherPlanet -- 12 Haziran 2015; 13:41:55 >




  • quote:

    Orijinalden alıntı: AnotherPlanet

    #include <LiquidCrystal.h>  

    #define irSensorPin1 7
    #define irSensorPin2 6

    int score1 = 0 ;
    int score2 = 0 ;


    // Orjinal lcd Ornegindeki kısım bu sekilde degistirilmeli:
    LiquidCrystal lcd(13, 12, 11, 10, 9, 8);



    void setup(){
    pinMode(irSensorPin1, INPUT);
    pinMode(irSensorPin2, INPUT);
    Serial.begin(9600);
    lcd.begin(16, 2);

    void loop(){
    lcd.setCursor(0,0);
    lcd.print("TEAM 1 = ");
    lcd.setCursor(0,1);
    lcd.print("TEAM 2 = ");

    if ( digitalRead(irSensorPin1) == 1 && digitalRead(irSensorPin2) == 0 )
    {
    score1 = score1 +1 ;
    lcd.setCursor(9,0);
    lcd.print( score1);
    }
    if ( digitalRead(irSensorPin2) == 1 && digitalRead(irSensorPin1) == 0 )
    {
    score2 = score2 +1;
    lcd.setCursor(9,1);
    lcd.print(score2);
    }
    }


    Dener misin? Ayrıca LCD shield mı?

    LCD Shield değil. Kodu çalıştırdığımda Team1 skoru başlar başlamaz çok hızlı şekilde artıyor (bağlatının kesilip kesilmemesinden bağımsız olarak). Team 2'de ise herhangi bir değişiklik olmuyor(sensör bağlantısı kesilse bile).

    Daha sonra güç sistemin güç kaynağını kesip tekrar bağladığımda Team1 aynı şekilde sorunlu ancak Team2 gayet düzgün şekilde çalışıyordu. Bu dengesizliğin nedeni ne olabilir sizce?




  • quote:

    #include <LiquidCrystal.h> 

    LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
    int irSensorPin1 = 7 ;
    int irSensorPin2 = 6 ;
    int value1 ;
    int value2 ;

    int score1 ;
    int score2 ;

    void setup(){

    lcd.begin(16, 2);

    pinMode(irSensorPin1, INPUT);
    pinMode(irSensorPin2, INPUT);

    }
    void loop()
    {

    score1 = 0;
    score2 = 0;

    value1 = digitalRead(irSensorPin1);
    value2 = digitalRead(irSensorPin2);

    lcd.setCursor(0,0);
    lcd.print("TEAM 1 = ");
    lcd.setCursor(9,0);
    lcd.print(score1);
    lcd.setCursor(0,1);
    lcd.print("TEAM 2 = ");
    lcd.setCursor(9,1);
    lcd.print(score2);

    if (value1 == LOW && value2 == LOW)
    {
    score1 = score1 ;
    score2 = score2 ;
    }
    else if (value1 == HIGH && value2 == LOW)
    {
    score1 = score1 +1;
    }
    else if (value1 == LOW && value2 == HIGH)
    {
    score2 = score2 +1;
    }
    else
    {
    score1= score1 +1;
    score2= score2 +1;
    }
    }


    Bir de şunu dener misin?
    Ben makina müh. öğrencisiyim.Şimdilik kodlamayla pek iyi değilim.2 buton , mesafe sensörü ve potansiyometre ile DC motor yön, güç ve pwm kontrol yaptım.LCD'de %'lik güç ve yön yazıyordu,mesafe sensörü bir şey algıladığında motor calısmıyordu ve LCD'de de danger yazdırıyordum,butonlara basılmadıgında da motor hazır gibisinden şeyler yazdırdım.Anladığım kadarıyla ile arduinoda IF döngüsü sıkıntı.Hatta ve hatta LCD'yi belirli pinlere takmadıgım için başta hiç bir şey alamamıştım.Shield mı diye soruşum o yüzden.



    < Bu mesaj bu kişi tarafından değiştirildi AnotherPlanet -- 12 Haziran 2015; 19:40:05 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.