2016-06-11 37 views
0

我工作的一些Arduino的代碼和我的程序不斷給我這個錯誤,Arduino的if語句給錯誤

ISO C++ forbids comparison between pointer and integer [-fpermissive] 

我試着在互聯網上搜索來解決這個問題,但是,無論是解決方案不正確或不相關。這裏是Arduino的軟件是在說這個問題,

if((millis - incLastDebounce) > debounceDelay) { 

,如果你需要在這裏的代碼的其餘部分是,

#include <LiquidCrystal.h> 

int freq = 0; 
int change = 0; 
const int incPin = 3; 
const int setPin = 2; 
int incButtonState; 
int setButtonState; 
int incPreviousState; 
int setPreviousState; 
int incLastDebounce; 
int setLastDebounce; 
const int debounceDelay = 50; 


LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
void setup() { 
    // put your setup code here, to run once: 
lcd.begin(16, 2); 
pinMode(setPin, INPUT); 
pinMode(incPin, INPUT); 
lcd.print("Frequency: " + freq); 
} 

void loop() { 
    // put your main code here, to run repeatedly: 
int incReading = digitalRead(incPin); 
int setReading = digitalRead(setPin); 

if(setReading != setPreviousState) { 
    setLastDebounce = millis(); 
} 
if(incReading != incPreviousState) { 
    incLastDebounce = millis(); 
} 

if((millis - setLastDebounce) > debounceDelay) { 

    if(setReading != setButtonState) { 
    setButtonState = setReading; 
    } 
    if(setButtonState == HIGH) { 
    //Okay so here you will do your set lcd voodoo 
    } 
} 

if((millis - incLastDebounce) > debounceDelay) { 
    if(incReading != buttonState) { 
    incButtonState = incReading; 
    } 
    if(buttonState == HIGH) { 
     // here you can put the lcd code 
     change = change + 500; 
     if(change == 10500){ 
     change = 0; 
     } 
    } 

    } 


incPreviousState = incReading; 
setPreviousState = setReading; 
} 

希望你能發現問題和幫助。

回答

2

看起來你在millis之後丟失了圓括號,所以不是調用該函數,而是試圖用它的內存地址進行算術運算。

這可能會更好地工作:

if ((millis() - incLastDebounce) > debounceDelay) {