1、 Serial.begin(speed)函数 #
speed:以每秒位数(波特)为单位。允许的数据类型:long.
以每秒位数(波特)为单位设置串行数据传输的数据速率。要与串行监视器通信,请确保使用其屏幕右下角菜单中列出的波特率之一。但是,您可以指定其他速率 – 例如,通过引脚 0 和 1 与需要特定波特率的组件进行通信。
如
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {}
2、 Serial.write(val/str/(buf, len))函数 #
val:作为单个字节发送的值。
str:作为一系列字节发送的字符串。
buf:作为一系列字节发送的数组。
len:要从数组发送的字节数。
将二进制数据写入串行端口。该数据作为一个字节或一系列字节发送;要发送代表数字数字的字符,请改用Serial.print()函数。
例如
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(45); // send a byte with the value 45
int bytesSent = Serial.write("hello"); //send the string "hello" and return the length of the string.
}
3、 Serial.print(val, [format])函数 #
Serial: 串口对象。请参阅串行主页上每个板的可用串行端口列表。
val: 要打印的值。允许的数据类型:任何数据类型。
将数据作为人类可读的 ASCII 文本打印到串行端口。此命令可以采用多种形式。数字使用每个数字的 ASCII 字符打印。浮点数类似地打印为 ASCII 数字,默认为两位小数。字节作为单个字符发送。字符和字符串按原样发送。
例如
Serial.print(78) 给出“78”
Serial.print(1.23456) 给出“1.23”
可选的第二个参数指定要使用的基础(格式);允许的值为二进制、八进制、十进制和十六进制。对于浮点数,此参数指定要使用的小数位数。
例如
Serial.print(1.23456, 0) 给出“1”
Serial.print(1.23456, 2) 给出“1.23”
Serial.print(1.23456, 4) 给出“1.2345”
您可以通过Serial.print()用F()包装它们来传递基于闪存的字符串。例如:
Serial.print(F(“Hello World”))
示例函数
/*
Uses a for loop to print numbers in various formats.
*/
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
// print labels
Serial.print("NO FORMAT"); // prints a label
Serial.print("\t"); // prints a tab
Serial.print("DEC");
Serial.print("\t");
Serial.print("HEX");
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.println(); // carriage return after the last label
for (int x = 0; x < 64; x++) { // only part of the ASCII chart, change to suit
// print it out in many formats:
Serial.print(x); // print as an ASCII-encoded decimal - same as "DEC"
Serial.print("\t\t"); // prints two tabs to accomodate the label lenght
Serial.print(x, DEC); // print as an ASCII-encoded decimal
Serial.print("\t"); // prints a tab
Serial.print(x, HEX); // print as an ASCII-encoded hexadecimal
Serial.print("\t"); // prints a tab
Serial.print(x, OCT); // print as an ASCII-encoded octal
Serial.print("\t"); // prints a tab
Serial.println(x, BIN); // print as an ASCII-encoded binary
// then adds the carriage return with "println"
delay(200); // delay 200 milliseconds
}
Serial.println(); // prints another carriage return
}
4、 Serial.println(val, [format])函数 #
与Serial.print(val, [format])函数使用方法基本相同,区别是,本函数输出自动换行。
5、 所需元件清单 #
Arduino Uno主板
USB数据线
双色LED灯
面包板
9V电池
杜邦导线
6、 动手实验 #
实验1、使用按键切换红绿灯
A实验接线
redPin–D9
GND—GND
greenPin–D10
B实验代码
int buttonPin = 3;
const int redPin=9;
const int greenPin=10;
// setup initializes serial and the button pin
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
// loop checks the button pin each time,
// and will send serial if it is pressed
void loop() {
if (digitalRead(buttonPin) == HIGH) {
Serial.write('H');
digitalWrite(redPin,HIGH);
digitalWrite(greenPin,LOW);
}
else {
Serial.write('L');
digitalWrite(redPin,LOW);
digitalWrite(greenPin,HIGH);
}
delay(1000);
}
实验2、实现红绿渐变色
实验代码
const int RedPin = 9;
const int GreenPin = 10;
int val=0;
void setup()
{
pinMode(RedPin, OUTPUT); //set redPin as OUTPUT
pinMode(GreenPin, OUTPUT);//set greenPin as OUTPUT
Serial.begin(9600);
}
/******************************************************/
void loop()
{
for(val=255; val>0; val--) //
{
analogWrite(RedPin, val); //red value decrease
analogWrite(GreenPin, 255-val);//green value increase
Serial.println(val, DEC);//print the val on in serial monitor
delay(30); //delay 30ms
}
for(val=0; val<255; val++)
{
analogWrite(RedPin, val); //red value increase
analogWrite(GreenPin, 255-val);//green value decrease
Serial.println(val, DEC);//print the val on in serial monitor
delay(30); //delay 30ms
}
}