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);
- }
- }
留言
張貼留言