का उपयोग करते समय कोई मिलान करने वाली फ़ंक्शन त्रुटि नहीं है मुझे अपने नवीनतम Arduino प्रोजेक्ट कोड के साथ एक छोटी सी त्रुटि है जो TimerOne library का उपयोग 4 अंकों, 7 सेगमेंट डिस्प्ले पर प्रदर्शित करने के लिए करता है। मैं माइक्रोप्रोसेसर को प्रत्येक अंक के बीच लगातार फ्लिक करने के लिए एक बाधा का उपयोग करता हूं क्योंकि वे अनिवार्य रूप से एक साथ वायर्ड होते हैं।attachInterrupt
मेरे पास कोड पूरी तरह से काम कर रहा है अगर मैं इसे मुख्य पीडीई फ़ाइल में रखता हूं, लेकिन मैंने सोचा कि प्रदर्शन को अपनी कक्षा में अलग करना बेहतर होगा।
मेरे संकलक PDE में निम्न कोड की दूसरी पंक्ति के साथ समस्या हो रहा है:
Timer1.initialize(500);
Timer1.attachInterrupt(digitDisplay.flashDigit,500);
attachInterrupt में दूसरा आर्ग वैकल्पिक होना चाहिए, मैं साथ हैं और इस के बिना की कोशिश की है! किसी भी तरह मैं निम्नलिखित त्रुटि मिलती है:
DigitDisplayTest.cpp: In function 'void setup()':
DigitDisplayTest:29: error: no matching function for call to 'TimerOne::attachInterrupt(<unresolved overloaded function type>)'
C:\Program Files (x86)\arduino-0022\arduino-0022\libraries\Timer1/TimerOne.h:62: note: candidates are: void TimerOne::attachInterrupt(void (*)(), long int)
DigitDisplay (जिनमें से digitDisplay एक उदाहरण है) के भीतर, मैं flashDigit परिभाषित इस प्रकार है:
class DigitDisplay
{
private:
/*...*/
public:
/*...*/
void flashDigit();
}
void DigitDisplay::flashDigit()
{
wipeDisplay();
for (int i = 0; i < _digitCount ; i++)
{
if (i == _digit) digitalWrite(_digitPins[i], HIGH);
else digitalWrite(_digitPins[i], LOW);
}
displayNumber(_digits[_digit]);
_digit++ ;
_digit %= _digitCount;
}
आप अधिक कोड की आवश्यकता होती है तो कृपया मुझे पता है, लेकिन मैं कर रहा हूँ निश्चित रूप से FlashDigit() विधि के gubbings के साथ कुछ भी गलत नहीं है - यह निश्चित रूप से इसे अपनी कक्षा के अंदर रखने से पहले काम किया।
जाहिर है मैं मुख्य PDE करने
void Interrupt()
{
digitDisplay.flashDigit();
}
जोड़ते और उसे समारोह संलग्न करके इस त्रुटि को नाकाम कर सकते हैं, लेकिन यह सिर्फ एक काम के आसपास है, यह अच्छा होगा अगर मैं इसे सीधे कह सकते हैं।
मुझे लगता है कि एक फ़ंक्शन पॉइंटर बनाने में त्रुटि है (जिसमें से कोई त्रुटि नहीं है), लेकिन पॉइंटर्स मेरे मजबूत बिंदु नहीं हैं इसलिए मैं वास्तव में इसे हाथ से सॉर्ट कर सकता हूं।
आपका दूसरे उदाहरण का उपयोग करता है 'digitDisplay.flashDigit()' जो 'digitDisplay तुलना में अलग है:
अब मैं आवरण समारोह बजाय
विवरण और यहाँ पूरे स्पष्टीकरण के फोन .flashDigit'। क्या आपने अभी तक यह कोशिश की? – gary
हां मैंने किया, यह समस्या का समाधान नहीं करता है, लेकिन वैसे भी धन्यवाद;) – SmallJoeMan