Şimdi Ara

Arduino Due PWM pin ayarları

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
40
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arduino due ile dijital kumbara için bir yazılım var. PWM pinlerinden aldığım çıkışlarda 1. ve 4. pinler düzgün çalışıyor ama diğer pinler kendi kendine değer arttıyor. Neden bilmiyorum. Ne zaman LOW olursa o zaman değeri arttır diyorum ama o pinden jumper veya bir kabloyla çıkış alınca kendi kendine okumaya başlıyor. Kablo sabit kalınca sıkıntı olmuyor. Ne şekilde pinlere ayar yapabilirim? 1. pinle 4. pin normalken diğerleri neden farklı çalışıyor anlamıyorum


    #include <Wire.h>

    #include <LiquidCrystal_I2C.h>


    LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);


    #define PIN_1_TL 1

    #define PIN_50_KR 2

    #define PIN_25_KR 3

    #define PIN_10_KR 4


    bool tl_1;

    bool kr_50;

    bool kr_25;

    bool kr_10;


    int cnt_1_tl;

    int cnt_50_kr;

    int cnt_25_kr;

    int cnt_10_kr;


    double total;


    void setup() {

    Serial.begin(9600);

    pinMode(PIN_1_TL, INPUT);

    pinMode(PIN_50_KR, INPUT);

    pinMode(PIN_25_KR, INPUT);

    pinMode(PIN_10_KR, INPUT);


    lcd.init();

    lcd.setBacklight(1);


    lcd.setCursor(0, 0);

    lcd.print("Kumbara");

    }


    void loop() {


    if (digitalRead(PIN_1_TL) == LOW && tl_1) cnt_1_tl++;

    if (digitalRead(PIN_50_KR) == LOW && kr_50) cnt_50_kr++;

    if (digitalRead(PIN_25_KR) == LOW && kr_25) cnt_25_kr++;

    if (digitalRead(PIN_10_KR) == LOW && kr_10) cnt_10_kr++;


    total = cnt_1_tl + 0.5 * cnt_50_kr + 0.25 * cnt_25_kr + 0.1 * cnt_10_kr;


    tl_1 = digitalRead(PIN_1_TL) == HIGH;

    kr_50 = digitalRead(PIN_50_KR) == HIGH;

    kr_25 = digitalRead(PIN_25_KR) == HIGH;

    kr_10 = digitalRead(PIN_10_KR) == HIGH;


    printMoney();

    }


    void printMoney() {

    lcd.setCursor(0, 1);

    lcd.print("Para : ");

    lcd.print(total);

    lcd.print(" tl ");

    }








  • tl_1 = digitalRead(PIN_1_TL) == HIGH;


    kr_50 = digitalRead(PIN_50_KR) == HIGH;


    kr_25 = digitalRead(PIN_25_KR) == HIGH;


    kr_10 = digitalRead(PIN_10_KR) == HIGH;


    Bu satırları biraz daha açıklayabilir misin ? Benim anladığım:


    tl_1 değişkenini HIGH'a çek, eğer 1TL pininden High okunursa. Bu satırdaki mantığı anlamadım.




    Düzeltme:

    Paranın geliş sinyalini kesme (interrupt) ile alırsanız daha sağlıklı olur. Yükselen kenar tetiklemesi o pin için kesmeniz olabilir. Arduino Due bunu yapabiliyor mu bilmiyorum ama ARM işlemcili bir geliştirme kartında böyle bişey olduğunu biliyorum. Paranın geliş sinyalini alacağınız pine toprağa paralel bir şekilde ufak (nF) da kutupsuz kondansatör koyun, yoksa sonuçlarınız doğru çıkmaz. Bknz: Debouncing (Buton Arkı)




    < Bu mesaj bu kişi tarafından değiştirildi scapegoat111 -- 22 Haziran 2022; 19:19:28 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.