关于用pyQT和arduino进行交互之串口通信篇

2016-03-291.6万
AI 快速预览详细 收起
本文介绍了如何使用PyQT和Arduino进行串口通信,通过具体的代码示例展示了如何通过串口发送指令控制Arduino上的LED灯颜色变化。首先,Arduino端代码设置了三个LED灯的引脚,并通过串口接收指令。然后,Python端代码通过PyQT界面发送特定字符,控制Arduino上的LED灯颜色变化。适合零基础新手学习,无需复杂的前置技能。


测试篇
======================
Arduino 端代码

int red = 10;
int yellow = 9;
int blue = 8;
String com = "";
void setup(){
      pinMode(8, OUTPUT);     
      pinMode(9,OUTPUT);
      pinMode(10,OUTPUT);
      Serial.begin(9600);        //设置波特率为9600 bps
}
void loop(){
    while(Serial.available()>0)
    {
    com += char(Serial.read());
    delay(2);
    }
    if(com.length()>0)
    {
      if (com == "10\n")
      {
        for(int i = 8;i<11;i++)
        {
          digitalWrite(i,LOW);
        }
        digitalWrite(red,HIGH);
         Serial.println(com);
      }
      else if(com == "9\n")
      {
         for(int i = 8;i<11;i++)
        {
          digitalWrite(i,LOW);
        }
        digitalWrite(yellow,HIGH);
        Serial.println(com);
      }
      else if(com == "8\n")
      {
         for(int i = 8;i<11;i++)
        {
          digitalWrite(i,LOW);
        }
        digitalWrite(blue,HIGH);
        Serial.println(com);
      }
      else
      {
        com = "";
      }
      com = "";
    }
}
==================
python 端 代码:

#kuing
import sys
from PyQt4 import QtCore, QtGui
from make_arduino import Ui_Form
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import serial
import win32api
import win32con
import time
import string
class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ser = serial.Serial()
        self.ser.baudrate = 9600
        self.ser.port = 'com11'
        self.ser.open()
    def set_red(self):
        self.ser.write('10\n')
        print '10'
    def set_yellow(self):
        self.ser.write('9\n')
        print '9'
    def set_blue(self):
        self.ser.write('8\n')
        print '8'

app = QtGui.QApplication(sys.argv)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
==========================


===============持续更新..==============

ps : 由之前的实验慢慢演变为 准备做一个Arduino 智能小车的控制软件 ,上面可以搭载很多传感器,并实时获取传感器返回的数据,并用图表打印出来~..
并简易的做个 方向控制器~ 控制小车的移动方向 。   现在正在向这个想法努力ing~      到时想用 wifi 取代串口控制小车  这个难度感觉还是有点大的  

现在的温度数据 是通过usb 连线取回的~...

如果有哪位大神有什么更好的建议   可以留言  相互交流~  在此谢谢啦~





untitled.jpg (14.01 KB, 下载次数: 3123)

demo

PyQT与Arduino串口通信教程 · Arduino智能小车控制_image_3.webp

day4_1.jpg (50.84 KB, 下载次数: 3152)

day4_1

PyQT与Arduino串口通信教程 · Arduino智能小车控制_image_6.webp

day4_2.jpg (47.87 KB, 下载次数: 3066)

PyQT与Arduino串口通信教程 · Arduino智能小车控制_image_9.webp

day4_3.jpg (21.32 KB, 下载次数: 3163)

PyQT与Arduino串口通信教程 · Arduino智能小车控制_image_12.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
丄帝De咗臂
丄帝De咗臂
高端,上档次
hnyzcj
hnyzcj
python 端 代码:是放在哪里?是PC,还是其它什么,怎么保存……………………请详细写出,谢谢,便于我们小白学习!!!
ikuing
ikuing
作者
回复yhtjay
看好你 加油~!
yhtjay
yhtjay回复ikuing
我也做过个PyQT的界面,处理转发串口数据,放手持平板上运行。python真的很方便。arduino我刚学。准备做个机器运行数据收集监控的小项目。也是准备用python加arduino.
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
- 没有更多了 -