beaglebone led控制。

子曾经曰过,点灯,是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);
}

时间: 2024-08-19 00:37:26

beaglebone led控制。的相关文章

linux输入子系统(input subsystem)之按键输入和LED控制

实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c 1 #include <linux/module.h> 2 #include <linux/version.h> 3 4 #include <linux/init.h> 5 #include <linux/fs.h> 6 #include <linux/interrupt.h> 7 #include <linux/irq.h&g

SES2 LED控制

SES2 LED控制 1.磁盘LED控制的背景及需求 磁盘阵列中每个磁盘都对应多个LED灯,常用来指示磁盘的状态和行为. 比如当磁盘出现故障需要定位.磁盘缺失.正常在线或者正在读写等情况下,可以通过SAS Enclosre Service来控制enclosure上每个drive对应的LED灯 .初次接触SES2的同学可能觉得它比较抽象,可以把它和BMC类比,整个enclosure也是由嵌入式CPU(比如ARM)及外围电路组成的一个独立系统,可以完成对每个drive LED.内部风扇.电源的设置.

Beaglebone Black - 控制 BBB 板上的 LED 灯

BBB 的板上有五个 LED 灯,一个电源,四个其他指示灯,usr0 至 usr3 .这次学习是控制 usr0 至 3 让它们亮着,熄灭,闪.算是个 Hello World 实验.非常简单. 需要的材料: BBB 一台 购买BBB 自带的数据线一条 手提电脑或台式电脑,有 USB 插头的 首先用数据线把 BBB 和电脑连接,自动开机了之后,可以开始了. 这次三个做法都试试: Bonescript Python C++ Bonescript 操作 Bonescript 做法是用 Cloud9,假设

4412开发版led控制

exynos4412裸版控制led灯. 1.查看电路图. 2.查看4412手册.找到对应的寄存器. 3.配置对应的寄存器. 一.再开发板上我们的外部设备led,在核心板.所以我们需要打开核心板电路图. [email protected]:~/work/arm/arm资料/exynos4412_lzy/schematic$ ls LCD-HD700-1306.pdf Tiny4412_1306_core_board_sch.pdf LCD-S701-121212.pdf Tiny4412SDK_1

电赛菜鸟营培训(一)&mdash;&mdash;STM32之LED控制

一.STM32F103C8 引脚分布 二.LED的共阴.共阳接法 这里应该是七段数码管的接法. 限流电阻选择为470,在Multism中仿真,也需要接入,否则会出现闪烁情况.或者直接更改属性. 三.消除按钮的机械振动 1.键的特性 键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程 . 2.去抖动的方法 (1)硬件去抖动,主要是通过滤波电路. (2)软件去抖动,延时函数. 四.按钮控制灯 1.一对一 每一个按键的电

TI CC2541的LED控制

现在终于进入到蓝牙SPI的环节了, 下面还要研究I2C, 所以第一步, 先点灯, 就是GPIO控制吧. 参考一下LEd的初始化: void HalLedInit (void){#if (HAL_LED == TRUE)  HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);  // Initialize all LEDs to OFF.  // Set LED GPIOs to outputs.  LED1_DDR |= LED1_BV;#if (!defined

am335x -- led 控制

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main(void) { FILE *p=NULL;  int i=0;  p = fopen("/sys/class/gpio/export","w");  fprintf(p,"%d",38);  fclose(p);  p = f

Android 下led 的控制

首先说一下我的开发环境,硬件环境开发板使用的是全志的CQA83T板子,Android开发是windows下的eclipse.关于Android下控制led,主要有两大部分,一是Android程序,二是Linux驱动开发.Android部分的开发肯定要使用Android ndk,jni编程,通过jni来调用Linux下的C函数从而控制led设备.关于ndk的安装,和简单使用我在另外的博客里面已经写了,有兴趣的可以自己看看.这篇博客住要是讲一下Android部分的开发,这里默认led驱动正常. 先看

[国嵌攻略][174][CGI快速入门-网页控制LED]

CGI程序(Common Gate Way Interface) 在服务器外部供服务器调用的程序,CGI程序与服务器配合后能让服务器完成更强大的功能. 1.浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL. 2.服务器收发到请求. 3.服务器执行指定所CGI应用程序. 4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容. 5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页). 6.网络服务器把结果返回到浏览器中. 移植CGI库 1.解