1 在Arduino IDE下编写源码:
#define IOBEGIN 22
#define IOEND 53 //定义初始化的IO口
// the setup function runs once when you press reset or power the board
void setup() {
Serial.begin(9600); //初始化端口
for(int i=IOBEGIN;i<=IOEND;i++)
{
Serial.print("Ready");
pinMode(i,OUTPUT);
}
}
// the loop function runs over and over again forever
void loop() {
if(Serial.available()){
char ch = Serial.read(); //读取串口
Serial.print(ch);
switch(ch){ //根据传入信息判断工作模式
case'1':
digitalWrite(22,HIGH);
delay(1000);
digitalWrite(22,LOW);
digitalWrite(24,HIGH);
delay(1000);
digitalWrite(24,LOW);
break;
case'2':
digitalWrite(22,HIGH);
digitalWrite(24,HIGH);
break;
}}}
代码解释:初始化,之后根据输入进行判断
注意点:初始化端口应该在循坏外边;高低电平要大写
2 在Python利用简单GUI控制LED
# -*- coding: UTF-8 -*-
import serial
import easygui
ser=serial.Serial("com7",9600,timeout=0.5) #打开端口
print(ser.is_open)
while (1):
Yes_or_No = easygui.buttonbox("LED工作模式?", choices=['闪烁', '常亮', '退出'])
if Yes_or_No == '退出': break
if Yes_or_No == '闪烁':
demo = b"1"
else:
demo = b"2"
ser.write(demo)
s = ser.read(1)
print(s)
注意编码对中文的支持;
注意 demo = b"1" 这一行的用法。#传入2的ASCII码 这里用b+str强制转换
串口拒绝访问,多半是上一个程序没用停止
效果图:
总结:烧写Arduino程序后,可以通过串口调试助手来控制LED,但是Python屡次不行,后来发现得经过强制转换编码格式,才能实现效果。