Merhaba Arkadaşlar;

Bu uygulamada sizlere ADS1115 de 4 kanal adc okumasını QT de form da nasıl göstereceğiz onu anlatacağım.

Öncelikle normal konsol ekranından ziyade formda göstermek bu tür uygulamalarda yani sürekli ekrana veri tazeleme olayında konsol yetersiz kalabiliyor. O yüzden görsel form üzerinden daha akıcı oluyor.

Daha önceki yazılarımda QT kurulumunu anlatmıştım inceleyebilirsiniz.
Yeni proje açarak isim verip cihazı seçip projemizi oluşturalım.

İlk önce wiringPi kütüphanesini QT ye ekleyelim.

LIBS += -L/usr/local/lib -lwiringPi
LIBS += -L/usr/local/lib -lwiringPiDev
INCLUDEPATH += /usr/local/include

 

Daha sonra mainwindow.h dosyasına wiringPi ve Qtimer ı ekliyoruz.

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QTimer>
#include <wiringPiI2C.h>
#include <ads1115.h>
#include <wiringPi.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QTimer *timer;

private slots:

void Timer_1();

private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

Şimdi gelelim ui dosyamızı yani formu hazırlamaya;
Ekrana;

  • 4 adet Progress bar
  • 8 adet LCD Number
  • 5 Adet Label

ekliyoruz. Uğraşmak istemeyenler için proje dosyasını indirebilirler. ADS1015

mainwidow.cpp yi açıp aşağıdaki kodu ekliyoruz

int AN[4];
float Volt[4];

void InitHW()
{
   wiringPiSetup();
   ads1115Setup(100,0×48);
}

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
   InitHW();
   timer = new QTimer(this);
   connect(timer, SIGNAL(timeout()), this, SLOT(Timer_1()));
   timer->start(50);
}

MainWindow::~MainWindow()
{
 timer->stop();
delete ui;
}

void MainWindow::Timer_1()
{
   for(int i=0;i<4;i++)
   {
      AN[i] = (int16_t) analogRead(100+i);
      Volt[i] = AN[i] * (4.096 / 32768);
   }
   ui->progressBar->setValue(AN[0]);
   ui->progressBar_2->setValue(AN[1]);
   ui->progressBar_3->setValue(AN[2]);
   ui->progressBar_4->setValue(AN[3]);

   ui->lcdNumber_2->display(Volt[0]);
   ui->lcdNumber_4->display(Volt[1]);
   ui->lcdNumber_6->display(Volt[2]);
   ui->lcdNumber_8->display(Volt[3]);
}

Kodu incelersek, ilk önce wiringPi setup ve ADS setup yaparak ADS nin adresini belirtiyoruz. Daha sonra timer i hazırlayıp 50ms için başlatıyoruz.

Timer ın içerisine ise analog değerleri okuyup onları hesapladıktan sonra progressbar a ve lcd number a yazıyoruz. işlem bu kadar kodu derleyip çalıştırdığımızda ise değerleri okumuş olacağız.

Bir başka uygulamada görüşmek üzere,
Kolay gelsin…

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Umut Kazanç
Daha Fazla Göster -  Raspberry Pi

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

NodeMCU : DS18B20 ile Sıcaklık Web Server

Merhaba Arkadaşlar, Bu uygulamada sizlere ESP8266 da LUA ile DS18b20 yi okuyacağım.. Bunun…