其實ATtiny85的睡眠程式改好第一版了,但在實驗時,發現只能在一分鐘內可以使用。找了一天,一直找不到原因。
最後,使用Arduino Nano,一樣發生跟ATtiny85一樣問題,不過Nano可以開Serial port去看資料之間的變化。終於發現是自己在最一開始的宣告,用了錯誤的方法!!!
unsigned long sleep_t = 60000; //60秒
unsigned long sleep_t = 60*1000;
unsigned long sleep_t = 60.0*1000;
同樣宣告,三種方法,最後是誰可以用呢?
第1行跟第3行是可以用的。我就是用了第二行的方法,會得到4294961760。看來就是溢位了~~~
那改下面這樣可以嗎???
unsigned long sleep_t = 1000;
sleep_t *= 60;
這樣是可以的唷~~~
想看看到底是怎麼回事,做了一個小實驗,理應這結果會是32768
long i=16384*2; //32768
long k=32768;
可是,結果i輸出是 -32768。也就是說Arduino計算時,會先用int計算,在付予到變數,而int的範圍是 -32768~32767。
k是正常32768喔。
一行搞了一天!!!!!
好啦~ 我是程式小白~