Arduino - 聲音控制矩陣型LED (MIC + Counter + Matrix LED)
目的:
以聲音作為輸入,將次數顯示於矩陣型LED,0~9間做循環,並有開關作為RESET用。
成果:
Arduino Code:
#include < SPI.h >
int micPin = A0; //麥克風輸入
int mictemp = 0; //麥克風獨到的音量
int temp = 0;
byte symbol[10][8] = {
{
0x3E,
0x7F,
0x71,
0x59,
0x4D,
0x7F,
0x3E,
0x00
}, // '0'
{
0x40,
0x42,
0x7F,
0x7F,
0x40,
0x40,
0x00,
0x00
}, // '1'
{
0x62,
0x73,
0x59,
0x49,
0x6F,
0x66,
0x00,
0x00
}, // '2'
{
0x22,
0x63,
0x49,
0x49,
0x7F,
0x36,
0x00,
0x00
}, // '3'
{
0x18,
0x1C,
0x16,
0x53,
0x7F,
0x7F,
0x50,
0x00
}, // '4'
{
0x27,
0x67,
0x45,
0x45,
0x7D,
0x39,
0x00,
0x00
}, // '5'
{
0x3C,
0x7E,
0x4B,
0x49,
0x79,
0x30,
0x00,
0x00
}, // '6'
{
0x03,
0x03,
0x71,
0x79,
0x0F,
0x07,
0x00,
0x00
}, // '7'
{
0x36,
0x7F,
0x49,
0x49,
0x7F,
0x36,
0x00,
0x00
}, // '8'
{
0x06,
0x4F,
0x49,
0x69,
0x3F,
0x1E,
0x00,
0x00
} // '9'
}; //設定8x8LED矩陣顯示器
const byte NOOP = 0x0;
const byte DECODEMODE = 0x9;
const byte INTENSITY = 0xA;
const byte SCANLIMIT = 0xB;
const byte SHUTDOWN = 0xc;
const byte DISPLAYTEST = 0xF;
void max7219(byte reg, byte data) {
digitalWrite(SS, LOW);
SPI.transfer(reg);
SPI.transfer(data);
digitalWrite(SS, HIGH);
}
void setup() {
max7219(SCANLIMIT, 7);
max7219(DECODEMODE, 0);
max7219(INTENSITY, 8);
max7219(DISPLAYTEST, 0);
max7219(SHUTDOWN, 1);
pinMode(SS, OUTPUT);
digitalWrite(SS, HIGH);
SPI.begin();
for (byte i = 0; i < 8; i++) {
max7219(i + 1, 0);
}
temp = 0;
for (byte i = 0; i < 8; i++) {
max7219(i + 1, symbol[temp][i]);
}
}
void loop() {
mictemp = analogRead(micPin);
if (mictemp >= 450) 當收到大於450的輸入 {
for (byte i = 0; i < 8; i++) {
max7219(i + 1, symbol[temp][i]);
}
temp++; //收到訊號+1
if (temp == 10) {
temp = 0; //跑到10歸零
}
delay(500);
}
}
留言
張貼留言