查看: 3156|回复: 1

[主题月] 4月主题月:IMX6ULL显示AP3216C传感器值

[复制链接]
  • TA的每日心情
    慵懒
    2025-8-17 19:26
  • 签到天数: 695 天

    连续签到: 1 天

    [LV.9]以坛为家II

    35

    主题

    1547

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4245
    最后登录
    2025-8-17
    发表于 2022-5-2 16:58:45 | 显示全部楼层 |阅读模式



    乘着5.1假期弄下4月主题月。4月主题月是GUI主题,我使用IMX6ULL进行测试,主要还是跑下QT GUI,在嵌入式Linux端部署这个还是很方便的。

    图片1.jpg

    板子还是原子的,使用板子在一个ap3216c一款集成光传感器,距离传感器,红外LED的芯片。驱动只需要使用原子的历程编译下。然后加载即可。

    1. void MainWindow::ap3216c_INIT()



    2. {











    3.     fd = open("/dev/ap3216c",O_RDWR);



    4.     if(fd<0)



    5.     {



    6.         qDebug() << "App:Open dev failed.";



    7.     }



    8. }







    9. void MainWindow::timerTimeOut()



    10. {



    11.      unsigned short databuf[3];



    12.      unsigned short ir, als, ps;



    13.      int ret = 0;



    14.        static int now = 0;







    15.      ret = read(fd, databuf, sizeof(databuf));



    16.      if(ret == 0) { /* 数据读取成功 */



    17.          ir = databuf[0]; /* ir 传感器数据 */



    18.          als = databuf[1]; /* als 传感器数据 */



    19.          ps = databuf[2]; /* ps 传感器数据 */



    20.          printf("ir = %d, als = %d, ps = %d\r\n", ir, als, ps);







    21.         ui->label_4->setText(QString::number(ir));



    22.         ui->label_5->setText(QString::number(als));



    23.         ui->label_6->setText(QString::number(ps));



    24.         now++;



    25.         dataCustomPlot->graph(0)->addData(now, ir);         //addData(double key, double value);原型



    26.         dataCustomPlot->graph(1)->addData(now, als);         //addData(double key, double value);原型



    27.         dataCustomPlot->graph(2)->addData(now, ps);



    28.        dataCustomPlot->replot();



    29.      }











    30. }



    31. //曲线显示



    32. void MainWindow::on_pushButton_2_clicked()



    33. {



    34.     ui->stackedWidget->setCurrentIndex(1);



    35. }







    36. void MainWindow::on_pushButton_clicked()



    37. {



    38.     ui->stackedWidget->setCurrentIndex(0);



    39. }











    40. void MainWindow::dataCustomPlotInit()



    41. {



    42.     QFont font;



    43. //    font.setPointSize(12);



    44.     /* 实例化,设置位置、背景颜色 */



    45.     QBrush brush(QColor(255, 255, 255));



    46.         dataCustomPlot = new QCustomPlot(ui->widget);



    47.         dataCustomPlot->setGeometry(0, 0, 550, 300);



    48.         dataCustomPlot->setBackground(brush);



    49.         dataCustomPlot->installEventFilter(this);







    50.         /* x轴、Y轴相关配置 */



    51.         QPen pen(Qt::black);







    52.         font.setPointSize(8);



    53.         dataCustomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);      //可拖拽+可滚轮缩放



    54.         dataCustomPlot->xAxis->setLabelColor(QColor(Qt::black)); // X轴上标识label字体颜色



    55.         dataCustomPlot->yAxis->setLabelColor(QColor(Qt::black));



    56.         dataCustomPlot->xAxis->setTickPen(pen);                  //  设置x轴上坐标点上对应的刻度线的颜色



    57.         dataCustomPlot->xAxis->setTickLabelRotation(60);//设置标签角度旋转



    58.         dataCustomPlot->yAxis->setTickPen(pen);



    59.         dataCustomPlot->xAxis->setBasePen(pen);                  //  设置x轴 轴线本身的颜色



    60.         dataCustomPlot->yAxis->setBasePen(pen);



    61.         dataCustomPlot->xAxis->setTickLabelColor(QColor(Qt::black)); // 设置x轴刻度值文本的颜色



    62.         dataCustomPlot->yAxis->setTickLabelColor(QColor(Qt::black));



    63.         dataCustomPlot->xAxis->setSubTicks(false);  //  隐藏x轴刻度线



    64.         dataCustomPlot->yAxis->setSubTicks(false);  //  隐藏y轴刻度线



    65.         dataCustomPlot->xAxis->setLabelFont(font);  //  设置x轴标识label文本字体大小



    66.         dataCustomPlot->yAxis->setLabelFont(font);  //  设置y轴标识label文本字体大小



    67.         font.setPointSize(10);



    68.         dataCustomPlot->xAxis->setTickLabelFont(font);



    69.         dataCustomPlot->yAxis->setTickLabelFont(font);



    70.         dataCustomPlot->xAxis->setLabel("时间");



    71.         dataCustomPlot->yAxis->setLabel("数值");











    72.          dataCustomPlot->legend->setVisible(true);







    73.         /* 增加一个数据曲线 */



    74.         pen.setColor(Qt::yellow);    // 设置画笔的颜色



    75.         dataCustomPlot->addGraph();                // 增加曲线图



    76.         dataCustomPlot->graph(0)->setName("ir"); // 设置曲线的名字



    77.         dataCustomPlot->graph(0)->setPen(pen);     // 设置曲线画笔的颜色



    78.         dataCustomPlot->graph(0)->setLineStyle(QCPGraph::lsLine); // 设置连接线的类型 两点直线连接















    79.         pen.setColor(Qt::red);    // 设置画笔的颜色



    80.         dataCustomPlot->addGraph();                // 增加曲线图



    81.         dataCustomPlot->graph(1)->setName("als"); // 设置曲线的名字



    82.         dataCustomPlot->graph(1)->setPen(pen);     // 设置曲线画笔的颜色



    83.         dataCustomPlot->graph(1)->setLineStyle(QCPGraph::lsLine); // 设置连接线的类型 两点直线连接











    84.         pen.setColor(Qt::black);    // 设置画笔的颜色



    85.         dataCustomPlot->addGraph();                // 增加曲线图



    86.         dataCustomPlot->graph(2)->setName("ps"); // 设置曲线的名字



    87.         dataCustomPlot->graph(2)->setPen(pen);     // 设置曲线画笔的颜色



    88.         dataCustomPlot->graph(2)->setLineStyle(QCPGraph::lsLine); // 设置连接线的类型 两点直线连接











    89. }
    复制代码


    QT端主要是对传感器初始化,然后是曲线界面初始化,网上也都有历程。

    之后通过定时器一直读取就可以完成操作。QT端可以操作的很多,后续还可以修改成系统时间为标准的。

    图片2.jpg

    图片3.jpg

    目前先搭建一个框架,后续接着弄往后更新。




    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3942

    主题

    7563

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40257
    最后登录
    2025-9-10
    发表于 2022-5-5 09:04:00 | 显示全部楼层
    支持一下
    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-10 19:16 , Processed in 0.085529 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表