2016-07-28 15 views
-2

私のアルドゥイノはしばらく時間がかかりません。 は、ここに私のコードです:私はボイドループ機能内部ループ用の2つを使用する場合しばらくしてからアルドゥイノが働いていない

//Pin.h is my header file 

#ifndef Pin_h 
#define Pin_h 

class Pin{ 
    public: 
    Pin(byte pin); 
    void on();//turn the LED on 
    void off();//turn the LED off 
    void input();//input PIN 
    void output();//output PIN 

    private: 
    byte _pin;  
}; 

#endif 


//Pin.cpp is my members definitions 
#include "Arduino.h" 
#include "Pin.h" 

Pin::Pin(byte pin){//default constructor 
    this->_pin = pin; 
} 

void Pin::input(){ 
    pinMode(this->_pin, INPUT); 
} 

void Pin::output(){ 
    pinMode(this->_pin, OUTPUT); 
} 

void Pin::on(){ 
    digitalWrite(this->_pin, 1);//1 is equal to HIGH 
} 

void Pin::off(){ 
    digitalWrite(this->_pin, 0);//0 is equal to LOW 
} 


//this is my main code .ino 
#include "Pin.h" 

Pin LED[3] = {//array of objects 
Pin(11), 
Pin(12), 
Pin(13) 
}; 

const byte MAX = sizeof(LED); 

//MAIN PROGRAM---------------------------------------------------------------------------------- 
void setup() { 
    for(int i = 0; i < MAX; i++){ 
     LED[i].output(); 
    }//end for loop initialize LED as output 
}//end setup 

int i = 0; 

void loop() { 
    for(i = 0; i < 3; i++){ 
    LED[i].on(); 
    delay(1000); 
    } 

    for(i = 3; i >= 0; i--){ 
    LED[i].off(); 
    delay(1000); 
    } 

}//end loop 
//see class definition at Pin.h 
//see class members at Pin.cpp 

私のArduinoは動作を停止し、私は私のメインに以下のコードを使用している場合、それが正常に動作します。 forループを使用しているとしばらくして私のarduinoがなぜ停止するのですか?

void loop() { 
    LED[0].on(); 
    delay(1000); 

    LED[1].on(); 
    delay(1000); 

    LED[2].on(); 
    delay(1000); 

    LED[2].off(); 
    delay(1000); 

    LED[1].off(); 
    delay(1000); 

    LED[0].off(); 
    delay(1000); 
}//end loop 
+0

常にマークダウンプレビューを確認してください。 – LogicStuff

答えて

0

あなたの第二のループはまた、あなたが「MAX」することにより、これらの「3」を交換したいので、あなたは、サイズを変更したとき、私= 3 ...

void loop() { 
    for(i = 0; i < 3; i++){ 
    LED[i].on(); 
    delay(1000); 
    } 

    for(i = 3; i >= 0; i--){ 
    LED[i].off(); // This causes a crash on the first run LED[3] is out of range... 
    delay(1000); 
    } 

}//end loop 

で始まるためですどこにでも書き直す必要はありません...

void loop() { 
    for(i = 0; i < MAX; i++){ 
    LED[i].on(); 
    delay(1000); 
    } 

    for(i = MAX - 1; i >= 0; i--){ 
    LED[i].off(); 
    delay(1000); 
    } 

}//end loop 
+0

ああ私の神。私はとてもばかだ。ありがとうございました..ありがとうございました。私は本当に感謝しています.. –

+0

同じ問題を抱える他の人がそれをより早く解決できるように、このポストを答えとしてマークしてください –

関連する問題