|
這個想法不對
你將一個 INPUT PORT PULL HIGH 的話,
會影響到它的電壓準位(不是毫無影響),
雖然它不像 OUTPUT PORT 會輸出能推動
負載的 HIGH 準位電壓(20~40mA的能力),
但一旦電壓準位變動,可能會影響到相關電路
的運作(視硬體電路而言),這點要留意
編譯器有一個選擇性指令可以利用,當不想要
部份功能時,,可以經由參數更動來選擇要不要
將某一段程式碼進行編譯,如果不編譯就算 INPUT
被觸發 ARDUINO 也不知道要作何回應=無作用
以下是我自己做的一個溫控檢測程式片段,當我在做
程式測試時,我會給它一個模擬值來看它的運作反應,
但實際運用時它要去讀感溫器的值來作動,所以測試
時跟實際運作時只要改一個定義參數就可以做到:
#define DEBUG 0 //模式選擇,0:電壓/溫度模擬值不編譯(正常),1:電壓/溫度模擬值要編譯(除錯)
VOL = analogRead( BAT_VOL ); //讀取電池分壓ADC讀值(0~1023整數)
VOLTAGE = VOL*0.004887+VOL_ADJ; //將ADC讀值(0~1023)→電壓值(0~5V),加上補正值 VOL_ADJ
#if ( DEBUG == 1 ) //選擇是否編譯此部份程式,DEBUG = 1 時才編譯
VOLTAGE = RES_VOL[3]; //模擬目前電池分壓測定值
#endif
TEMP = analogRead( LM35 ); //讀取溫度感測ADC讀值(0~1023整數)
TEMPERATURE = TEMP*0.4887+TEMP_ADJ; //將溫度ADC讀值(0~1023)轉換為溫度值(℃),加上補正值 TEMP_ADJ
#if ( DEBUG == 1 ) //選擇是否編譯此部份程式,DEBUG = 1 時才編譯
TEMPERATURE = 80; //模擬目前溫度感測值
#endif |
|