码迷,mamicode.com
首页 > 其他好文 > 详细

beaglebone led控制。

时间:2015-08-04 20:41:58      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

子曾经曰过,点灯,是embedded领域的“hello world”

最近开始入手beaglebone……

原文地址:

 http://www.cnblogs.com/hebaichuanyeah/p/4702802.html

默默地EEer

关于linux环境下编写字符设备驱动:

 http://www.cnblogs.com/hebaichuanyeah/p/3460498.html

 

C艹/QT,beaglebone的LED控制。

技术分享

 

led控制部分,打开文件,设置方向/电平。

#include "led.h"

beagleboneLed ::beagleboneLed()
{
    fileLed.open("/sys/class/gpio/export");
    fileLed<<44;
    fileLed.close();
    fileLed.open("/sys/class/gpio/export");
    fileLed<<86;
    fileLed.close();  
    fileLed.open("/sys/class/gpio/export");
    fileLed<<87;
    fileLed.close();
    fileLed.open("/sys/class/gpio/export");
    fileLed<<88;
    fileLed.close();
}

beagleboneLed :: ~beagleboneLed()
{
}

void beagleboneLed :: init()
{

    fileLed.open("/sys/class/gpio/gpio44/direction");
    fileLed<<"out";
    fileLed.close();
    fileLed.open("/sys/class/gpio/gpio86/direction");
    fileLed<<"out";
    fileLed.close();
    fileLed.open("/sys/class/gpio/gpio87/direction");
    fileLed<<"out";
    fileLed.close();
    fileLed.open("/sys/class/gpio/gpio88/direction");
    fileLed<<"out";
    fileLed.close();


}


void beagleboneLed :: turnOn(int ledNum)
{
    switch(ledNum)
    {
        case 1:
            fileLed.open("/sys/class/gpio/gpio44/value");
            fileLed<<"1";
            fileLed.close();
            break;
        case 2:
            fileLed.open("/sys/class/gpio/gpio86/value");
            fileLed<<"1";
            fileLed.close();
            break;
        case 3:
            fileLed.open("/sys/class/gpio/gpio87/value");
            fileLed<<"1";
            fileLed.close();
            break;
        case 4:
            fileLed.open("/sys/class/gpio/gpio88/value");
            fileLed<<"1";
            fileLed.close();
            break;
        default:
            break;
    }
}

void beagleboneLed :: turnOff(int ledNum)
{
    switch(ledNum)
    {
        case 1:
            fileLed.open("/sys/class/gpio/gpio44/value");
            fileLed<<"0";
            fileLed.close();
            break;
        case 2:
            fileLed.open("/sys/class/gpio/gpio86/value");
            fileLed<<"0";
            fileLed.close();
            break;
        case 3:
            fileLed.open("/sys/class/gpio/gpio87/value");
            fileLed<<"0";
            fileLed.close();
            break;
        case 4:
            fileLed.open("/sys/class/gpio/gpio88/value");
            fileLed<<"0";
            fileLed.close();
            break;
        default:
            break;
    }

} 

QT界面

#include "mainwindow.h"
#include "QPainter"


MainWindow :: MainWindow()
{
    mainWindow = new QWidget;
    this->setCentralWidget(mainWindow);
   

    labelLed1 = new QLabel("   LED 1");
    labelLed2 = new QLabel("   LED 2");
    labelLed3 = new QLabel("   LED 3");
    labelLed4 = new QLabel("   LED 4");

    labelWocao = new QLabel("");

    buttonLed1 = new QPushButton("OFF");
    buttonLed2 = new QPushButton("OFF");
    buttonLed3 = new QPushButton("OFF");
    buttonLed4 = new QPushButton("OFF");


    mainLayout = new QGridLayout;
    mainLayout->addWidget(labelLed1,0,0,1,1);
    mainLayout->addWidget(labelLed2,0,1,1,1);
    mainLayout->addWidget(labelLed3,0,2,1,1);
    mainLayout->addWidget(labelLed4,0,3,1,4);
    mainLayout->addWidget(labelWocao,1,0,2,1);
    mainLayout->addWidget(buttonLed1,3,0,1,1);
    mainLayout->addWidget(buttonLed2,3,1,1,1);
    mainLayout->addWidget(buttonLed3,3,2,1,1);
    mainLayout->addWidget(buttonLed4,3,3,1,1);
    mainWindow->setLayout(mainLayout);

    QObject::connect(buttonLed1,SIGNAL(clicked()),this,SLOT(led1Key()));
    QObject::connect(buttonLed2,SIGNAL(clicked()),this,SLOT(led2Key()));
    QObject::connect(buttonLed3,SIGNAL(clicked()),this,SLOT(led3Key()));
    QObject::connect(buttonLed4,SIGNAL(clicked()),this,SLOT(led4Key()));


    led1State = false;
    led2State = false;
    led3State = false;
    led4State = false;

    myLed.init();
    this->setWindowTitle("beaglebone led test~");
    this->resize(QSize(200,200));
}

MainWindow :: ~MainWindow()
{
    mainWindow->deleteLater();
    mainLayout->deleteLater();
    labelLed1->deleteLater();
    labelLed2->deleteLater();
    labelLed3->deleteLater();
    labelLed4->deleteLater();
    buttonLed1->deleteLater();
    buttonLed2->deleteLater();
    buttonLed3->deleteLater();
    buttonLed4->deleteLater();
}

void MainWindow::led1Key()
{
    led1State = !led1State;
    if(led1State)
    {
        buttonLed1->setText("ON");
        myLed.turnOn(1);
    }
    else
    { 
        myLed.turnOff(1);
        buttonLed1->setText("OFF");
    }
    this->update();
    
}

void MainWindow::led2Key()
{
    led2State = !led2State;
    if(led2State)
    {
        myLed.turnOn(2);
        buttonLed2->setText("ON");
    } 
    else
    {
        buttonLed2->setText("OFF");
        myLed.turnOff(2);
    }
    this->update();
}

void MainWindow::led3Key()
{
    led3State = !led3State;
    if(led3State)
    {
        myLed.turnOn(3);
        buttonLed3->setText("ON");
    }
    else
    {
        buttonLed3->setText("OFF");
        myLed.turnOff(3);
    }
    this->update();
}

void MainWindow::led4Key()
{
    led4State = !led4State;
    if(led4State)
    {
        myLed.turnOn(4);
        buttonLed4->setText("ON");
    }
    else
    {
        buttonLed4->setText("OFF");
        myLed.turnOff(4);
    }
    this->update();
}
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter ledPaint(this);
    ledPaint.setWindow(0,0,200,200);
    ledPaint.setPen(QPen(Qt::black,1));
    if(led1State)
        ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern));
    else 
        ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    ledPaint.drawEllipse(11,80,30,50);

    if(led2State)
        ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern));
    else 
        ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    ledPaint.drawEllipse(57,80,30,50);

    if(led3State)
        ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern));
    else 
        ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    ledPaint.drawEllipse(103,80,30,50);

    if(led4State)
        ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern));
    else 
        ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    ledPaint.drawEllipse(149,80,30,50);
}

 技术分享

beaglebone led控制。

标签:

原文地址:http://www.cnblogs.com/hebaichuanyeah/p/4702802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!