Arduino 各种模块篇-继电器-利用串口命令-控制继电器
2013-04-05 16:55
525 查看
代码
不算太复杂。很简单的一个程序
打开串口程序:
继电器上就开关,开关程序了。
上面有用到的一些单片机的基础知识。至少要知道单片机的基本原理。
还好以前学过51单片机。所以还懂得一些。上面的代码是自己写出来的。
为什么要用
dmesg | grep ttyS 已经使用的串口信息
cat /proc/tty/driver/serial 所有的串口信息
stty -F /dev/ttyS0 -a 串口的speed等信息
dmidecode | grep Port 所有端口信息
setserial /dev/ttyS0 查看串口设备ttyS0是否连接
udevinfo -a -p /sys/class/tty/ttyS0 串口ttyS0的信息
find /dev/ttyS* | wc -l 查找/dev/目录下文件中有“ttyS”的个数
还有。这里要附上一篇关于用minicom储存串口数据的介绍
http://www.2cto.com/os/201111/110568.html
############################更新日期 4月11日 2013年#############################
上面关于获取串口输入的值的方法是:
这种方法,是获取所有串口输入的值,不管是字符串,还是数字,都是当字符串看待了。这对于输入的是英文字母比较有帮助。
可是如果我们输入的直接就是整数的话,有没有方便的方法呢?
是有的,用下面的方法(从一个步进电机里面代码抽出来的。)
void loop()
{
if(Serial.available())
{
int steps =Serial.parseInt(); //用这种方法将直接取到输入所有的值,并且是整型的
motor.step(steps);
}
}
int jidianqi=8; String command= ""; void setup(){ pinMode(jidianqi, OUTPUT); digitalWrite(jidianqi,HIGH); Serial.begin(9600); } void loop(){ while(Serial.available()) // To Get up ALL Serial data { command += char(Serial.read()); delay(10); } if (command.length()>0) { if (command == "on") { digitalWrite(jidianqi, LOW); Serial.println("You've turned on the LED"); command = ""; } else if(command == "off") { digitalWrite(jidianqi, HIGH); Serial.println("You've turned off the LED"); command = ""; } else { Serial.println("Please input on or off. :)"); command = ""; } } }
不算太复杂。很简单的一个程序
打开串口程序:
继电器上就开关,开关程序了。
上面有用到的一些单片机的基础知识。至少要知道单片机的基本原理。
还好以前学过51单片机。所以还懂得一些。上面的代码是自己写出来的。
为什么要用
while(Serial.available()) 是因为, 单片机里面有一个串口寄存器,具体叫什么AVR里不是很清楚,总得有一个。 在数据未被完全读取前(数据是一个比特一比特读的,具体说是8位- 一个比特 读取的。因为8位为一个ASCII码) 然后用command += char(Serial.read()); 来吧所有的读到的数据都加到command 中。 注意,一定是char型数据。command 也要预先设定为String command = ""; command 就是一个数组 每个元素都是一个字母或者标点符号。 上面的delay(10)或者是delay(2) 是考虑到单片机的读取sBuff寄存器的内容的时间,一般来说2-10ms 完全足够了,但是不能省略!! 好了我们可以用linux 下的串口工具minicom 来控制单片机了 附上几个有用的linux 查看串口的命令
dmesg | grep ttyS 已经使用的串口信息
cat /proc/tty/driver/serial 所有的串口信息
stty -F /dev/ttyS0 -a 串口的speed等信息
dmidecode | grep Port 所有端口信息
setserial /dev/ttyS0 查看串口设备ttyS0是否连接
udevinfo -a -p /sys/class/tty/ttyS0 串口ttyS0的信息
find /dev/ttyS* | wc -l 查找/dev/目录下文件中有“ttyS”的个数
还有。这里要附上一篇关于用minicom储存串口数据的介绍
http://www.2cto.com/os/201111/110568.html
############################更新日期 4月11日 2013年#############################
上面关于获取串口输入的值的方法是:
while(Serial.available()) // To Get up ALL Serial data { command += char(Serial.read()); delay(10); }
这种方法,是获取所有串口输入的值,不管是字符串,还是数字,都是当字符串看待了。这对于输入的是英文字母比较有帮助。
可是如果我们输入的直接就是整数的话,有没有方便的方法呢?
是有的,用下面的方法(从一个步进电机里面代码抽出来的。)
void loop()
{
if(Serial.available())
{
int steps =Serial.parseInt(); //用这种方法将直接取到输入所有的值,并且是整型的
motor.step(steps);
}
}
相关文章推荐
- Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯
- Arduino 各种模块篇-继电器
- 微信远程控制 arduino+ESP8266wifi模块+Fuhome+继电器模块,安卓远程控制,网页远程控制也可
- Arduino 各种模块篇 震动模块 常开 震动传感器模块
- Arduino 各种模块篇 声控传感器 声音检测模块 口哨模块 vocie sensor
- Arduino应用笔记(三)这一篇和(二)方法不同:Matlab利用串口通信控制Arduino点亮LED
- Arduino双舵机串口控制源代码
- Arduino 各种模块篇 可燃气体检测模块 inflammable air sensor
- C#串口控制舵机、arduino源码 及C#源码及界面
- 【Arduino官方教程第一辑】示例程序 4-6 串口控制LED
- 利用开发板上的RS485模块与PC机的串口通讯
- Python2.x利用commands模块执行Linux shell命令
- Arduino 各种模块篇 霍尔模块
- Python 3基础教程11-如何利用pip命令安装包和模块
- Arduino 各种模块篇 舵机 Modules - Servo
- GRBL二:串口控制命令及代码解析
- 通过串口传值给Arduino,再通过Arduino控制小车(直流电机)移动与二自由度云台转动角度
- arduino用串口控制LGB
- [置顶] 利用pybombs安装最新源码软件,包括gnuradio, uhd, hackrf, limesuite, gqrx, 以及各种gnuradio模块.
- 利用电脑串口控制外部设备开关.