Part1.基础知识
-
小tip:计算机USB接口: 全称Universal Serial Bus(通用串行总线) ,即日常生活中的USB数据线
-
串口:串行数据接口,串行发出数据,与并行传输数据不同,串口一次仅能传输1个数据,而并行可以一次传输大量数据,并行传输数据单次的效率会高很多,即并行多少数据就是串行的多少倍。那我们为什么还用串口这种
菜鸡通信嘞? -
并行效率真的比串行高吗?由于并行输出数据的单次传输数据量大并且需要在同一个时间内完成,而即使是同一个厂商,同一个时刻,同一台机器生产的电子元件内部也会有肉眼可见的细微差异,这种细微差异在电子元件中是一个无法忽视的量,而且并行数据传输需要等到所有数据全部到达发送地址才能发送,而我们知道,传输速度取决于最慢的那个元件,这就导致了并行传输在频率上会远低于串行传输(串行传输只有1个数据,无等待时间。)
-
如何与计算机通信?连接计算机的USB线即烧录代码的线就行。
Part2.接线
如图,开关控制通断电路,来改变8号口读到的高低电平,具体原理参考上期开关控制的LED
再根据8号口读到的1/0输出与计算机的通信即可,这次的专栏比较偏向的是代码,接线比较简单一点,拓展的话可以直接拿串口数据点led之类的
Part3.代码
int buttonState = 0,beforeState = 0;//现在的状态与上一个状态
const int buttonPin = 8;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);//开启与计算机通信接口,速率9600
pinMode(buttonPin,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
buttonState = digitalRead(buttonPin);
if(buttonState == 1 and beforeState == 1){//如果开关一直闭合,则输出hellowrld和1
Serial.print("hello world!");
Serial.println(buttonState);
}
if(buttonState == 1 and beforeState == 0){
//按下开关会出现震荡,导致读取错误,延时30ms左右就能消除这个问题
delay(30);
}
beforeState = buttonState;//存下现在的状态
delay(1);//这个delay要不要无所谓的
}
上传完成之后,打开arduino IDE右上角的放大镜(串口监视器),当你按下开关不放时就能看到hello world!和1了(记得将串口监视器的下方的速率改成9600)