我解释了我的问题:我试图解决数组问题,我在OOP中完成了一个程序,它有一个名为lights的类。我想要的是做一个内部有引脚号的数组并将它们设置为输出。我一个接一个地做了,很容易做但现在我想用for循环和数组做 我不知道如何构建一个构造函数,并在其中使用数组whit引号来处理它。
//----------------------------------------------------------------------------------
class lights{
int pins[5]; //array for 5 elements
int i;
public:
lights(int ledPins[]){
for(i=0; i<5; i++){ //pins are set up as output
pinMode(pins[i],OUTPUT);
}
}//end constructor
void attempt(){ //metodo para pobrar si se enciende los leds
for(i=0; i<5; i++){
digitalWrite(pins[i],HIGH);
Serial.println(pins[i]);
}
}//end attempt
};//end class
//---------------------------------------------------------------------------------------------------------------------
int MyPins[] = {5,6,7,8,9}; //I declare what it is inside
lights lit(MyPins); //I create an objet with my array as parameters
void setup(){
Serial.begin(9600);
}
void loop(){
lit.attempt();
}
答案 0 :(得分:0)
您不需要将所有内容都放入课堂中。我认为使用一个类灯是矫枉过正的。
根据我的经验,一个函数用于处理灯脚,它们都需要一个引脚枚举。
除非你有大量的引脚要设置,否则循环可能不值得。展开循环可以提高程序效率:
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
初始化通常只发生一次,因此通常不保证优化。
如果需要使用类,我建议一个模型一个类的类。
每盏灯都有一个相关的引脚。
您可以拥有一个灯光容器(例如数组):
class Light
{
public:
Light(unsigned int pin)
: m_pin(pin),
m_is_on(false)
{ ; }
void initialize(); // Sets up the appropriate pin
void on(); // Turns on the light
void off(); // Turns off the light
void blink(unsigned int rate, unsigned int duration);
private:
unsigned int m_pin;
bool m_is_on;
};
Light display[] = {Light(5), Light(6), Light(7), Light(8), Light(9)};
const unsigned int light_quantity =
sizeof(display) / sizeof(display[0]);
此型号的一个优点是您的程序可以是灯而不用担心引脚。
答案 1 :(得分:0)
您的代码无法正常工作,因为您只是编写代码但没有制作算法来首先设计应用程序......
花一点时间看看你写的软件是什么...... 你传递给构造函数一个数组,但你在哪里使用该信息?无处......
lights(int ledPins[]){
for(i=0; i<5; i++){ //pins are set up as output
pinMode(pins[i],OUTPUT);
}
}//end constructor
并且您正在设置arduino中的输出{0 to 4}
而不是{5 to 9}
,之后循环方法只是设置为高级引脚可能甚至没有LEDS :)
(顺便说一下你应该在那里使用睡眠和玩耍来关闭LED,这样你就可以看到它们是如何眨眼的)
答案 2 :(得分:-1)
我解决了问题:只丢失了两行。我纠正了真正的构造函数
public:
lights(int ledPins[]){
for(i=0; i<5; i++){
pines[i] = ledPines[i];
for(i=0; i<5; i++){ //pins are set up as output
pinMode(pins[i],OUTPUT);
}
}//end constructor