【发布时间】:2020-11-20 15:01:46
【问题描述】:
我已经有我的代码可以工作了,我只是想让它现在看起来更漂亮。简单总结一下我的设备的功能:智能停车系统,可检测进出停车场的汽车,并显示入口处有多少空位可用或没有。现在输出如下所示:
Vacant Spots: 1
Vacant Spots: 1
Vacant Spots: 1
Vacant Spots: 1
Vacant Spots: 0
.
.
.
.
.
这是在汽车进入的情况下,因此它减 1,当汽车离开时,它会增加,因为有一个额外的空位可用。我想要做的是让输出看起来像这样:
" 空缺名额:1
"
我唯一想改变的是数值。我不想要源源不断的 “空位:1”显示在液晶显示屏上,供停车用户查看。有没有办法在循环结束后清除串行监视器而不让它连续输出低于它的新值?我已经提供了该程序的代码。我有 3 个 xbees(1 个协调器和 2 个路由器)。两个路由器上没有代码,只是向协调器发送数据。协调器是它接收数据的地方。这是协调器的代码:
int readValue = 0;
void setup()
{
Serial.begin(9600);
}
int vslots = 1;
void loop()
{
if(Serial.available()>21)
{
if(Serial.read() == 0x7E)
{
for(int i=0;i<19;i++)
{
byte discard = Serial.read(); //Next 18 bytes, it's discarded
}
readValue = Serial.read();
bool flagTrue = false;
bool flagFalse = false;
if((readValue == 0) && flagTrue == false ) //EXIT
{
flagTrue = true;
flagFalse = false;
Serial.print("Vacant Spots: ");
Serial.println(vslots);
}
else if((readValue == 16 && flagFalse == false) && vslots >= 1)
//DECREMENT (CAR ENTERING)
{
flagTrue = false;
flagFalse = true;
vslots -= 1;
Serial.print("Vacant Spots: ");
Serial.println(vslots);
}
if((readValue == 18) && flagTrue == false )
{
flagTrue = true;
flagFalse = false;
Serial.print("Vacant Spots: ");
Serial.println(vslots);
}
else if((readValue == 19 && flagFalse == false) && vslots <= 10)
//INCREMENT (CAR EXITING)
{
flagTrue = false;
flagFalse = true;
vslots += 1;
Serial.print("Vacant Spots: ");
Serial.println(vslots);
}
}
}
}
【问题讨论】:
-
想想
println函数中的ln后缀是什么意思。还要考虑carriage-return 字符'\r'可能会做什么。