c语言sscanf函数的用法是什么
463
2022-11-20
怎样使用来自PC的串行命令控制外部LED
理论
chipKIT Uno32板具有两个硬件串行端口: UART port1 和 UART端口2。引脚0和引脚1用作 UART端口1的 RX 和 TX 。 这些引脚也被板上的FT232R USB串行转换器使用。同样, UART端口2 分别使用引脚39和引脚40来实现 RX 和 TX 功能。我们将在本教程中使用 UART port1 ,因为它允许通过USB端口与PC进行串行通信。
MPIDE具有内置的串行监视工具,可让您进行以下操作:观察Uno32发送其串行端口的任何数据。它还使您可以通过同一串行接口将字符从PC发送回Uno32板。您可以通过单击工具栏中的串行监视器按钮来打开串行监视器窗口。在Windows版本的MPIDE中,串行监视器窗口如下所示。
MPIDE串行监视器窗口
电路设置
通过PC上的串行命令控制的外部LED
书写草图
在设置功能中,您需要告诉Uno32打开串行端口。这是通过 Serial.begin()命令完成的。括号内的数字设置串行通讯的波特率。与计算机通讯的典型波特率是9600,但也支持其他速度。接下来,您需要将Pin 2定义为输出,可以使用 pinMode()函数完成。
这里是完整的程序,用于通过PC通过串行线路发送的命令字节来控制外部LED。如果Uno32从PC接收到“ 1”,则它将点亮LED。如果接收到“ 0”,则LED熄灭。响应该命令,Uno32将LED的新状态打印回PC。
/*
Tutorial 2: Serial interface between PC and chipKIT
Board: chipKIT UNO32
*/
const int LED_PIN = 2; // LED is connected to digital I/O pin 2
int SERIAL_DATA; // Variable to store incoming serial byte
void setup() {
Serial.begin(9600); // Sets the baud rate for serial transmission
pinMode(LED_PIN, OUTPUT);
// Send these messages to PC only once
Serial.println(“Serial interface between PC and chipKIT”);
Serial.println(“1: LED ON, 0: LED OFF”);
digitalWrite(LED_PIN, LOW); // LED is off initially
}
void loop() {
if(SERIAL_DATA == ‘1’) { // Check if the received byte is ‘1’
digitalWrite(LED_PIN, HIGH); // If so, turn the LED ON
Serial.println(“LED is ON”); // and acknowledge.
}
if(SERIAL_DATA == ‘0’) { // If the received byte is ‘0’,
digitalWrite(LED_PIN, LOW); // turn the LED OFF and
Serial.println(“LED is OFF”); // acknowledge.
}
}
}
Serial.begin(9600)打开序列号Uno32的端口,并设置9600的波特率。您可以看到在设置函数中有两个 Serial.println()命令。它们在串行线上打印两条文本消息,这些消息显示在串行监视器上。由于设置功能仅执行一次,因此这些消息在开始时也仅打印一次。在循环功能内部使用 Serial.available()命令,该命令检查PC是否已将任何字符发送到串行端口。它返回可从串行端口读取的字符数。一旦有可用数据,就可以使用 Serial.read()命令进行读取。然后Uno32将接收到的字节与“ 1”和“ 0”进行比较,以对LED采取适当的操作。
输出
通过串行命令控制LED
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~