Raspberry Pi Raspberry Pi ile ADC ve DAC Uygulaması By Umut Kazanç Posted on 25 Temmuz 2017 4 min read 1 0 5,201 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba Arkadaşlar, Bu yazımda sizlere Raspberry Pi ile ADC ölçümünden bahsedeceğim. Bildiğiniz gibi Raspberry Pi nin ADC ölçüm için bir girişi bulunmamaktadır, bu yüzden çeşitli harici ADC modülleri ile bu işlem yapılır. Ben uygulamamda PFC8591 ADC DAC modülünü seçtim. Hatta uygulamayı daha iyi hale getirmek için Analog kanallara 2 Eksenli Joystick modülü bağladım. Pi tarafında ise QT Creator kullarak görsel bir form üzerinde değerleri bar şeklinde yansıttım. İlk olarak modüllerin bağlantılarından bahsedeyim; Şekildeki gibi PFC8591 modülün 4 adet analog girişleri ve bir adet analog çıkışı mevcuttur. Ben AN0 a üzerindeki LDR yi, AN3 e ise üzerindeki POT a jumperlardan seçtim. AN1 ve AN2 ye ise Joystick modülünün X ve Y çıkışlarını verdim. Burada dikkat etmeniz gereken nokta Joystick modülündeki 5V girişidir. Buraya mutlaka raspberry den 3V a bağlamalısınız. Uygulama programı indirmek için tıklayın. ADC1 Program oldukça basit, QT yi açıp .pro dosyası ile projemizi açıyoruz. mainwindow.cpp dosyasında kodlarımız mevcuttur. İlk olarak wiringPi ve I2C init ediliyor. wiringPiSetup(); fd = wiringPiI2CSetup(PCF8591); Daha sonra ADC işleminin sürekli okuma yapması için bir timer açıp onu bağlıyoruz. (5ms de bir okuma yapsın) timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(Timer_1())); timer->start(5); ve daha sonra ise sırası 4 kanalı belirtilen adresler ile okuyup değişkenlere yazdıktan sonra progressBar lara güncelliyoruz. Aynı zamanda horizontalSlider deki değeri alıp DAC adresine yazıyoruz. //Read AN0 LDR wiringPiI2CReadReg8(fd, PCF8591 + AN0) ; // dummy read ANOval = wiringPiI2CReadReg8(fd, PCF8591 + AN0); //Read AN1 Xpot wiringPiI2CReadReg8(fd, PCF8591 + AN1) ; // dummy read AN1val = wiringPiI2CReadReg8(fd, PCF8591 + AN1); //Read AN2 Ypot wiringPiI2CReadReg8(fd, PCF8591 + AN2) ; // dummy read AN2val = wiringPiI2CReadReg8(fd, PCF8591 + AN2); //Read AN3 POT wiringPiI2CReadReg8(fd, PCF8591 + AN3) ; // dummy read AN3val = wiringPiI2CReadReg8(fd, PCF8591 + AN3); // write to DAC reg, 0x04 wiringPiI2CWriteReg8 (fd, PCF8591 + DAC, DACval); ui->progressBar->setValue(AN1val); ui->progressBar_2->setValue(AN2val); ui->progressBar_3->setValue(AN3val); ui->progressBar_4->setValue(ANOval); Sonra programı çalıştırdığımızda ekranda sürekli güncellenen değerleri görüyoruz, pot lar ile oynayıp çalışmasını izleyebilirsiniz. https://www.youtube.com/watch?v=HyDxhZFu7rE Kolay Gelsin…