int pin[7]={15, 2, 4, 5, 18, 19, 21 };
#define Pin_red 13
#define Pin_green 14
#define Pin_blue 12
// 共陰極、共陽極設定
#define hardwareConfig 1 //COMMON_ANODE=1 COMMON_CATHODE=0
// 條件編譯
#if hardwareConfig==0
// 共陰極
void Colorset(unsigned char redVal, unsigned char greenVal, unsigned char blueVal, int ms){
analogWrite(Pin_red, redVal);
analogWrite(Pin_green, greenVal);
analogWrite(Pin_blue, blueVal);
delay(ms);
}
#define digitOn 0
#define digitOff 1
#define light 255
#define dark 0
#else
// 共陽極(請思考共陽極與共陰極最暗~最亮數值轉換方式)
void Colorset(unsigned char redVal, unsigned char greenVal, unsigned char blueVal){
redVal=255-redVal;
greenVal=255-greenVal;
blueVal=255-blueVal;
analogWrite(Pin_red,redVal);
analogWrite(Pin_green,greenVal);
analogWrite(Pin_blue,blueVal);
}
#define digitOn 1
#define digitOff 0
#define light 255
#define dark 0
#endif
int num[10][7]={
{light,light,light,light,light,light,dark },//0
{dark ,light,light,dark ,dark ,dark ,dark },//1
{light,light,dark ,light,light,dark ,light },//2
{light,light,light,light,dark ,dark ,light },//3
{dark ,light,light,dark, dark ,light,light },//4
{light,dark ,light,light,dark ,light,light },//5
{light,dark ,light,light,light,light,light },//6
{light,light,light,dark ,dark ,dark ,dark },//7
{light,light,light,light,light,light,light },//8
{light,light,light,light,dark ,light,light },//9
};
void displayNum(int number) {
for(int i=0; i<7; i++){
digitalWrite(pin[i], num[number][i]);
};
}
void setup() {
for(int i=0; i<7; i++){
pinMode(pin[i], OUTPUT);
};
pinMode(Pin_red, OUTPUT);
pinMode(Pin_green, OUTPUT);
pinMode(Pin_blue, OUTPUT);
}
void loop() {
for(int i=0; i<10; i++){
Colorset(0xff,0x00,0x00+10*i);
displayNum(i);
delay(1000);
}
}