看标题,有人可能会迷糊,为什么要读输出口的状态?输出口能不能读状态?事件起因是因为今天要写个小车驱动程序,需要将L298的方向控制端口反转一小段时间来刹车,习惯了51单片机的 P1=~P1;的写法,就想Arudino是否也可以这样操作?查了一遍网络,没发现任何资料,查论坛的WIKI,也没有提到有关内容。哪就做个实验吧。把blink示例改写如下按位取反:- void setup() {
- // initialize digital pin 13 as an output.
- pinMode(13, OUTPUT);
- digitalWrite(13,HIGH);
- Serial.begin(9600);
- }
- // the loop function runs over and over again forever
- void loop() {
- digitalWrite(13,~digitalRead(13)); // turn the LED on (HIGH is the voltage level)
- Serial.println(digitalRead(13));
- delay(1000); // wait for a second
- }
复制代码 编译通过,但测试结果是端口不能翻转。
再试一下逻辑取反:- void setup() {
- // initialize digital pin 13 as an output.
- pinMode(13, OUTPUT);
- digitalWrite(13,HIGH);
- Serial.begin(9600);
- }
- // the loop function runs over and over again forever
- void loop() {
- digitalWrite(13,!digitalRead(13)); // turn the LED on (HIGH is the voltage level)
- Serial.println(digitalRead(13));
- delay(1000); // wait for a second
- }
复制代码 可以成功运行,LED正常闪烁,说明Arduino可以通过digitalRead()读取输出口的状态。 |