找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2435|回復: 0
打印 上一主題 下一主題
收起左側

Arduino電子琴

[復制鏈接]
跳轉到指定樓層
樓主
ID:211697 發(fā)表于 2017-9-6 11:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
int ledPin = 12;//無緣蜂鳴器接口
int capval1;
int capval2;
int capval3;
int capval4;
int capval5;
int capval6;
int capval7;
int capval8;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop ()
{
digitalWrite(ledPin,LOW);
capval1 = readCapacitivePin(3);
capval2 = readCapacitivePin(4);
capval3 = readCapacitivePin(5);
capval4 = readCapacitivePin(6);
capval5 = readCapacitivePin(7);
capval6 = readCapacitivePin(8);
capval7 = readCapacitivePin(9);
capval8 = readCapacitivePin(10);
if (capval1 > 2) {
tone(ledPin,262,10);
}
if (capval2 > 2) {
tone(ledPin,294,10);
}
if (capval3 > 2) {
tone(ledPin,330,10);
}
if (capval4 > 2) {
tone(ledPin,350,10);
}
if (capval5 > 2) {
tone(ledPin,393,10);
}
if (capval6 > 2) {
tone(ledPin,441,10);
}
if (capval7 > 2) {
tone(ledPin,495,10);
}
if (capval8 > 2) {
tone(ledPin,525,10);
}
}
uint8_t readCapacitivePin(int pinToMeasure) {
volatile uint8_t* port;
volatile uint8_t* ddr;
volatile uint8_t* pin;
byte bitmask;
port = portOutputRegister(digitalPinToPort(pinToMeasure));
ddr = portModeRegister(digitalPinToPort(pinToMeasure));
bitmask = digitalPinToBitMask(pinToMeasure);
pin = portInputRegister(digitalPinToPort(pinToMeasure));
*port &= ~(bitmask);
*ddr |= bitmask;
delay(1);
*ddr &= ~(bitmask);
*port |= bitmask;
uint8_t cycles = 17;
if (*pin & bitmask) { cycles = 0;}
else if (*pin & bitmask) { cycles = 1;}
else if (*pin & bitmask) { cycles = 2;}
else if (*pin & bitmask) { cycles = 3;}
else if (*pin & bitmask) { cycles = 4;}
else if (*pin & bitmask) { cycles = 5;}
else if (*pin & bitmask) { cycles = 6;}
else if (*pin & bitmask) { cycles = 7;}
else if (*pin & bitmask) { cycles = 8;}
else if (*pin & bitmask) { cycles = 9;}
else if (*pin & bitmask) { cycles = 10;}
else if (*pin & bitmask) { cycles = 11;}
else if (*pin & bitmask) { cycles = 12;}
else if (*pin & bitmask) { cycles = 13;}
else if (*pin & bitmask) { cycles = 14;}
else if (*pin & bitmask) { cycles = 15;}
else if (*pin & bitmask) { cycles = 16;}
*port &= ~(bitmask);
*ddr |= bitmask;
return cycles;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表