2012-07-22 181 views
0

我對Arduino非常陌生並嘗試使用示例。我有一些問題用下面的代碼時:Arduino初學者問題

#include <ctype.h> 
#include <Arduino.h> 
#include "Telegraph.h" 
//#include <Telegraph.h> 

char* LETTERS[] = { 
    ".-", "-...", "-.-.", "-..", ".",  // A-E 
    "..-.", "--.", "....", "..", ".---", // F-J 
    "-.-", ".-..", "--", "-.", "---",  // K-O 
    ".--.", "--.-", ".-.", "...", "-",  // P-T 
    "..-", "...-", ".--", "-..-", "-.--", // U-Y 
    "--.."         // Z 
}; 

char* DIGITS[] = { 
    "-----", ".----", "..---", "...--",  //0-3 
    "....-", ".....", "-....", "--...",  //4-7 
    "---..", "----."      //8-9 
}; 

Telegraph::Telegraph(const int outputPin, const int ditLength){ 
    _outputPin = outputPin; 
    _ditLength = ditLength; 
    _dahLength = dahLength; 
    pinMode(_outputPin, OUTPUT); 
} 

void Telegraph::outputCode(const char* code){ 
    for(int i=0; i<strlen(code); i++){ 
    if(code[i] == '.') 
     dit(); 
    else 
     dah(); 
    } 
} 

void Telegraph::dit(){ 
    Serial.print("."); 
    outputSymbol(_ditLength); 
} 

void Telegraph::dah(){ 
    Serial.print("-"); 
    outputSymbol(_dahLength); 
} 

void Telegraph::outputSymbol(const int length){ 
    digitalWrite(_outputPin, HIGH); 
    delay(length); 
    digitalWrite(_outputPin, LOW); 
    delay(length); 
} 

void Telegraph::sendMessage(const char* message){ 
    for(int i=0; i < strlen(message); i++){ 
    const char currentChar = toupper(message[i]); 
    if(isalpha(currentChar)){ 
     outputCode(LETTERS[currentChar - 'A']); 
     delay(_dahLength); 
    }else if(isdigit(currentChar)){ 
     outputCode(DIGITS[currentChar - '0']); 
     delay(_dahLength); 
    }else if(currentChar = ' '){ 
     Serial.print(" "); 
     delay(_ditLength * 7); 
    } 
    } 
    Serial.println(); 
} 

我收到以下錯誤:

Telegraph.cpp:6:15: error: two or more data types in declaration of ‘LETTERS’ 
Telegraph.cpp: In constructor ‘Telegraph::Telegraph(int, int)’: 
Telegraph.cpp:24:18: error: ‘dahLength’ was not declared in this scope 
Telegraph.cpp: In member function ‘void Telegraph::sendMessage(const char*)’: 
Telegraph.cpp:58:18: error: ‘LETTERS’ was not declared in this scope 
Telegraph.cpp:63:30: error: assignment of read-only variable ‘currentChar’ 

很抱歉,如果這個問題太籠統,但正如我所說的,我很新的,不完全理解代碼。

回答

0

Telegraph.cpp:6:15: error: two or more data types in declaration of ‘LETTERS’

其他地方的符號LETTERS已被定義。也許在Telegraph.h?你必須尋找那個。

Telegraph.cpp: In constructor ‘Telegraph::Telegraph(int, int)’: 
Telegraph.cpp:24:18: error: ‘dahLength’ was not declared in this scope 

相關的代碼:

_dahLength = dahLength; 

是,dahLength是行不通定義。也許你想將此作爲另一個參數添加到構造函數中?

Telegraph.cpp: In member function ‘void Telegraph::sendMessage(const char*)’: 
Telegraph.cpp:58:18: error: ‘LETTERS’ was not declared in this scope 

見上面的那個問題。解決第一個問題並且忽略這個問題這麼久。

Telegraph.cpp:63:30: error: assignment of read-only variable ‘currentChar’ 

這是由於

}else if(currentChar = ' '){ 

,我敢肯定你想使用==,而不是=