问题:arduino的赋值语句不支持两个*连用
原始code如下:
unsigned long oldtime=8*3600*1000;
unsigned long testtime=3*60*1000;
...
void loop(){
...
if (time> testtime){
Serial.println("3 min");
}
...
结果测试时可远远到不了3分钟就输出了,加调试后发现testtime为4294950688,好吧太郁闷了。
按说unsigned long的溢出范围还大的很呢?why?
后来修改为如下就好了:
unsigned long oldtime=8*3600000;
unsigned long testtime=3*60000;
...
void loop(){
...
if (time> testtime){
Serial.println("3 min");
}
...
看来只是类c语言吧,是不支持多个运算符号啊!好吧:)[go]了一下也没发现官方帮助说不可以,算bug吗?嘻嘻,不理它了知道就这么用吧!
2.arduino编译环境中的串口监视器每次打开都对串口断电的问题
loop代码如下:
void loop(){
time = millis();
//prints time since program started
Serial.println(time);
x=x+1;
Serial.print("X: ");
Serial.print(x);
// wait a second so as not to send massive amounts of data
delay(1000);
if (time> testtime){
Serial.println("3 min");
//_Closepower();
//delay(3000);
}
if (time> oldtime){
Serial.println("8 hours is start");
_Openpower();
delay(3000);
}
}
本
来是个很简单的dome,想测试一下mil有lis()的50天才复位的可靠性,但发现3分钟测试都问题,每次使用Arduino的工具中的串口调试工
具,发现都是从2开始记X,明明没有开关过,理论上应该是开机运行time,不是每个串口打开开始算啊?!why?加了pin=18的一个led测试,调
试代码如下:
void setup(){
x=1;
Serial.begin(9600);
//initialise the power pin as an output
pinMode(_powerPin,OUTPUT);
digitalWrite(_powerPin,LOW);
_Closepower();
}
发现每次关闭串口调试器后led还是正常开的,但每次重新打开串口调试器后,led就灭了再开。好吧!开始怀疑电源了,为什么串口输出是相同逻辑,而我只相信led呢?:) 开始转usb电源测试,不再看串口了,只看led。好吧 换了电源后就再也没有那个问题了。
看来就是arduino编译环境中的串口监视每次打开时都重新对串口断电加点了,我的板子串口测试时,直接用串口供电的,当然就有这个了。
后记:
好久,没有软硬联调了,吞说的有道理就是我只做数电,逻辑和物理还是有不少区分的,多动手才是正理。:)
没有评论:
发表评论