借用KB165-KINGKAZMA的两张图,keng板不适用于高大上的乳壳,其实板载的八种灯效已经够了
不太完善的电子琴程序,既然答应了羞弟,就先贴出来吧
#include <Wire.h> #include <SPI.h> int keymap[70] = {100*20}; int tone_table[14] = { 175,196,221,248, 262,294,330,350,393,441,495, 525,589,661 }; void setup() { Wire.begin(8); Wire.onReceive(receiveEvent); pinMode (8, OUTPUT); pinMode (9, OUTPUT); pinMode (10, OUTPUT); digitalWrite(8, HIGH); SPI.begin(); digitalWrite(10, LOW); SPI.transfer(0x00); SPI.transfer(0xff); SPI.transfer(0xff); digitalWrite(10, HIGH); digitalWrite(9, LOW); delay(100); } byte p1=0x00; void loop() { int i,j,k; int l=0; p1+=16; for(i=1;i<32;i*=2) { k=0xff-((keymap[l++]>0)<<0)-((keymap[l++]>0)<<1)-((keymap[l++]>0)<<2)-((keymap[l++]>0)<<3)-((keymap[l++]>0)<<4)-((keymap[l++]>0)<<5)-((keymap[l++]>0)<<6); j=0xff-((keymap[l++]>0)<<0)-((keymap[l++]>0)<<1)-((keymap[l++]>0)<<2)-((keymap[l++]>0)<<3)-((keymap[l++]>0)<<4)-((keymap[l++]>0)<<5)-((keymap[l++]>0)<<6); if(p1<16) { k=0; j=0; } digitalWrite(10, LOW); SPI.transfer(i); SPI.transfer(j); SPI.transfer(k); digitalWrite(10, HIGH); delayMicroseconds(200); } for(i=0;i<70;i++) keymap[i]-=(keymap[i]>0); } void receiveEvent(int howMany) { int p=0; int l=0; int k=0; while (1 < Wire.available()) { byte c = Wire.read(); p++; if(p==4) l=c*14; if(p==5) k=c; if(p==6) k=(k<<8)+c; } byte x = Wire.read(); if (k>0) for(p=1;p<16384;p*=2) { if((k&p)>0) { keymap[l]=100*20; tone(6,tone_table[l%14],200); } l++; } }
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |