Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
12
返回列表 發新帖
樓主: dream87694
打印 上一主題 下一主題

遇到了動作問題~新手求解^^

[複製鏈接]
21#
 樓主| 發表於 2012-10-11 16:50:46 | 只看該作者
回復 20# Curtiss


   對了~大大~請問~如果我打算一個輸出可以經由切換可以發初更高的音要怎麼辦??我想說,如果12輸出,可以經由別的端子的HIGH或LOW轉號到不同音高的音,這樣子可行嗎??
這樣子,一樣12個輸出孔,也許就可以當24個因使用!!
22#
發表於 2012-10-13 06:57:24 | 只看該作者
這是很好的方法,就像鍵盤的 shift 一樣。
23#
 樓主| 發表於 2012-10-13 10:25:00 | 只看該作者
回復 22# Curtiss


   我程式這樣寫步之行不行得通,情您過目^^!
int inputPinH = 8;
int inputPinG = 7;
int inputPinF = 6;
int inputPinE = 5;
int inputPinD = 4;
int inputPinC = 3;
int inputPinB = 2;
int inputPinA = 1;
int BuzzerPin = 0;
void setup() {
  pinMode(inputPinH, INPUT);
  pinMode(inputPinG, INPUT);
  pinMode(inputPinF, INPUT);
  pinMode(inputPinE, INPUT);
  pinMode(inputPinD, INPUT);
  pinMode(inputPinC, INPUT);
  pinMode(inputPinB, INPUT);
  pinMode(inputPinA, INPUT);
  pinMode(BuzzerPin, OUTPUT);
  digitalWrite( 8, HIGH);
  digitalWrite( 7, HIGH);
  digitalWrite( 6, HIGH);
  digitalWrite( 5, HIGH);
  digitalWrite( 4, HIGH);
  digitalWrite( 3, HIGH);
  digitalWrite( 2, HIGH);
  digitalWrite( 1, HIGH);
}
void loop() {
int valH = digitalRead(inputPinH);
int valG = digitalRead(inputPinG);
int valF = digitalRead(inputPinF);
int valE = digitalRead(inputPinE);
int valD = digitalRead(inputPinD);
int valC = digitalRead(inputPinC);
int valB = digitalRead(inputPinB);
int valA = digitalRead(inputPinA);
digitalWrite(BuzzerPin, LOW);
if (valA == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1908.397);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1908.397);
  }
else if (valB == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1700.68);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1700.68);
  }
else if (valC == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1515.152);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1515.152);
  }
else if (valD == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1432.665);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1432.665);
  }
else if (valE == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1275.51);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1275.51);
  }
else if (valF == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1136.364);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1136.364);
  }
else if (valG == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1012.146);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1012.146);
  }
else digitalWrite(BuzzerPin, LOW);  
  if (valH == LOW){
  if (valA == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(954.1985);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(954.1985);
  }
else if (valB == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(850.3401);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(850.3401);
  }
else if (valC == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(757.5758);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(757.5758);
  }
else if (valD == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(716.3324);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(716.3324);
  }
  }
}
24#
 樓主| 發表於 2012-10-15 14:23:49 | 只看該作者
回復 22# Curtiss


   大大~救命呀!!  (~口~)川我發現程式照上述去寫!!
if (valA == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(1908.397);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(1908.397);
  }

所發出的音和~~~
if (valH == LOW){
  if (valA == LOW){
  digitalWrite(BuzzerPin, HIGH);
  delayMicroseconds(954.1985);
  digitalWrite(BuzzerPin, LOW);
  delayMicroseconds(954.1985);
  }

}
會重疊!!~請問我該怎麼半Q_Q
25#
發表於 2012-10-18 21:42:27 | 只看該作者
回復 24# dream87694


因為第一個判斷式只要 valA==LOW 條件就成立,不管 valH 是 HIGH 或 LOW。
改為以下寫法試試看:

if ( valH == LOW )
{
     if ( valA == LOW )
    {
        ..........
     }
    else if ..............
}
else        // valH == HIGH
{
     if ( valA == LOW )
    {
        ..........
     }
    else if..............
}
26#
 樓主| 發表於 2012-10-21 10:16:09 | 只看該作者
回復 25# Curtiss


   大大,請問~~如果想要那八個音發出像鋼琴一樣的聲音要怎麼改??
27#
發表於 2012-10-25 01:27:35 | 只看該作者
回復 26# dream87694


    我沒有試過。感覺上要讓 Arduino 發出鋼琴的聲音,似乎有點困難。建議在網路上搜尋一些有關音樂與Arduino的作品,可能會有答案。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-17 19:05 , Processed in 0.307650 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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