Arduino&Proteus 8 Professional——(LED渐变效果)for Neuedu

LED渐变效果,用Qt程序输入的值来控制渐变效果
上位机Qt程序打压缩包


Demo.cpp


#include "demo.h"
#include "ui_demo.h"
#include 
#include 

Demo::Demo(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Demo)
{
     
    ui->setupUi(this);//创建窗口界面
    //检测电脑系统的串口名字
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
     
        QSerialPort serial;
        serial.setPort(info);//遍历的串口信息设置到串口对象中,包含名字,波特率等等
        ui->com->addItem(serial.portName());
    }



}

Demo::~Demo()
{
     
    delete ui;
}

void Demo::on_pushButton_clicked()
{
     
    //串口对象如果想连接通信,则需要设置基本参数
    //创建窗口对象----通信不结束,对象要一致保持存在,堆内存
    serial = new QSerialPort;
    //设置串口名
    serial->setPortName(ui->com->currentText());
    //设置波特率
    serial->setBaudRate(ui->comboBox_2->currentText().toInt());
    //设置数据位
    switch(ui->comboBox_3->currentIndex()){
     
        case 8:
          serial->setDataBits(QSerialPort::Data8);
          break;
    }
    //设置校验位
    switch(ui->comboBox_4->currentIndex()){
     
        case 0:
          serial->setParity(QSerialPort::NoParity);
          break;
    }
    //设置停止位
    switch(ui->comboBox_5->currentIndex()){
     
        case 1:
          serial->setStopBits(QSerialPort::OneStop);
          break;
    }

    serial->open(QIODevice::ReadWrite);

    connect(serial,SIGNAL(readyRead()), this, SLOT(ReadData()));//打开串口操作------数据显示的连接
    ui->textEdit->setText("Please input 0 - 9 to change the Light!\n");
}

void Demo::ReadData(){
     

    //在富文本框中显示数据
    QByteArray buf;

    buf = serial->readAll();
    if(!buf.isEmpty()){
     
        QString str = ui->textEdit->toPlainText();
        str += tr(buf);
        ui->textEdit->clear();//清除界面上次显示的
        ui->textEdit->append(str);
    }
    buf.clear();//清除缓存区


}

//发送数据
void Demo::on_pushButton_2_clicked()
{
     
    serial->write(ui->textEdit_2->toPlainText().toUtf8());
}


.ino


int pin = 9;//设置9引脚
int brightness = 0;//亮度值
int fadeValue = 28;//亮度渐变值
int income = 0;

void setup() {
     
  Serial.begin(9600);
  }

void loop() {
     
  while(Serial.available()>0){
     
    income = Serial.read();
    Serial.print("Light Lv ");
    Serial.println(income-48,DEC);
    income -= 48;
   brightness = income*28;
   analogWrite(pin,brightness);//输出模拟PWM信号
    brightness = brightness + fadeValue;
  if(252 == brightness || 0 == brightness){
     
    fadeValue = -fadeValue;
  }
  delay(30);
    }
}

Arduino&Proteus 8 Professional——(LED渐变效果)for Neuedu_第1张图片
Arduino&Proteus 8 Professional——(LED渐变效果)for Neuedu_第2张图片

  • Ps:灯光10个挡位,输入0-9即可控制。
  • 源程序(点击此处下载)

你可能感兴趣的:(neusoft,qt,串口通信,物联网,c语言)