【发布时间】:2020-11-29 04:26:44
【问题描述】:
我是 javascript/typescript 开发人员,但对 Arduino/c++ 很陌生
我有一个类(见下面的 h 和 cpp)并且有这个编译器错误:
DotMatrix.cpp:13:1: error: redefinition of 'DotMatrix::DotMatrix(uint8_t, MD_MAX72XX::moduleType_t, uint8_t, uint8_t, uint8_t)'
DotMatrix::DotMatrix(uint8_t maxDevices, MD_MAX72XX::moduleType_t hardwareType, uint8_t clkPin, uint8_t dataPin, uint8_t csPin)
^
In file included from sketch/DotMatrix.cpp:5:0:
DotMatix.h:10:3: error: 'DotMatrix::DotMatrix(uint8_t, MD_MAX72XX::moduleType_t, uint8_t, uint8_t, uint8_t)' previously defined here
DotMatrix(uint8_t maxDevices, MD_MAX72XX::moduleType_t hardwareType, uint8_t clkPin, uint8_t dataPin, uint8_t csPin)
^
exit status 1
我不明白为什么......
这里是文件:
DotMatix.h:
#ifndef DotMatrix_h
#define DotMatrix_h
#include <MD_MAX72xx.h>
#include <MD_Parola.h>
class DotMatrix
{
public:
DotMatrix(uint8_t maxDevices, MD_MAX72XX::moduleType_t hardwareType, uint8_t clkPin, uint8_t dataPin, uint8_t csPin)
: _parola(hardwareType, csPin, maxDevices)
{};
void setup();
private:
MD_Parola _parola;
};
#endif
DotMatix.cpp:
#ifndef DotMatrix_cpp
#define DotMatrix_cpp
//#include <stdint.h>
#include "DotMatix.h"
#include "Arduino.h"
#include <MD_Parola.h> // Parola library to scroll and display text on the display (needs MD_MAX72xx library) https://github.com/MajicDesigns/MD_Parola
#include <MD_MAX72xx.h> // Library to control the Maxim MAX7219 chip on the dot matrix module https://github.com/MajicDesigns/MD_MAX72XX
const int FRAME_DELAY = 25;
DotMatrix::DotMatrix(uint8_t maxDevices, MD_MAX72XX::moduleType_t hardwareType, uint8_t clkPin, uint8_t dataPin, uint8_t csPin)
: _parola(hardwareType, csPin, maxDevices)
{
//MD_Parola(MD_MAX72XX::moduleType_t mod, uint8_t csPin, uint8_t numDevices = (uint8_t)'\001')
_parola = MD_Parola(hardwareType, csPin, maxDevices);
}
void DotMatrix::setup()
{
this->_parola.begin();
_parola.displayClear();
_parola.displaySuspend(false);
byte i = 3; //EEPROM.read(0);
_parola.setIntensity(i); // Values from 0 to 15
_parola.setTextEffect(PA_SCROLL_LEFT, PA_SCROLL_LEFT); //in and out effect
_parola.displayScroll("Hallokes ...", PA_LEFT, PA_SCROLL_LEFT, FRAME_DELAY);
}
#endif
作为参考,这是调用该类的 ino 文件(的一个 sn-p):
#include "DotMatix.h"
// Define the number of 8x8 dot matrix devices and the hardware SPI interface
#define MAX_DEVICES 4
#define HARDWARE_TYPE MD_MAX72XX::DR1CR0RR0_HW
#define CLK_PIN 14 //D5
#define DATA_PIN 13 //D7
#define CS_PIN 2 //D4
DotMatrix dotMatrix(MAX_DEVICES, HARDWARE_TYPE, CLK_PIN, DATA_PIN, CS_PIN);
void setup() {
dotMatrix.setup();
}
void loop() {
}
我正在使用带有 Arduino 扩展的 VS Code IDE。
【问题讨论】:
-
#ifndef DotMatrix_cpp #define DotMatrix_cpp不,源文件没有包含保护。您已经定义了两个DotMatrix::DotMatrix函数。错误甚至告诉你在哪里。
标签: c++ class constructor arduino function-definition