今天教導makerNUO
先是基本的程式碼,然後再開始說明程式碼的使用
void setup() {
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);digitalWrite(12,HIGH);
///上面是說亮燈的號碼,是第12第13持續亮燈。
}
void loop() {
}
下面是
#define NOTE_C5 523
#define NOTE_E5 659
#define NOTE_G5 784
#define BUTTON 2
#define BUZZER 8
int melody[] = {
NOTE_E5, NOTE_E5, 0, NOTE_E5, 0, NOTE_C5, NOTE_E5, 0, NOTE_G5
};
int noteDurations[] = {
10, 10, 10, 10, 10, 10, 10, 10, 10
};
int pin;
int ledArrayHigh;
int ledArrayLow;
boolean mode = false;
boolean buttonPressed = false;
void setup()
{
delay(1000);
pinMode(BUTTON, INPUT_PULLUP);
for (pin = 3; pin < 14; pin++) {
pinMode(pin, OUTPUT);
}
for (int thisNote = 0; thisNote < 9; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(BUZZER, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER);
}
}
void loop()
{
for (pin = 0; pin < 5; pin++) {
if (digitalRead(BUTTON) == LOW &&
buttonPressed == false) {
buttonPressed = true;
mode = !mode;
pin = 0;
if (mode == false) {
tone(BUZZER, NOTE_C5, 100);
delay(100);
tone(BUZZER, NOTE_G5, 100);
delay(100);
noTone(BUZZER);
}
else if (mode == true) {
tone(BUZZER, NOTE_G5, 100);
delay(100);
tone(BUZZER, NOTE_C5, 100);
delay(100);
noTone(BUZZER);
}
}
if (mode == false) {
ledArrayHigh = 13 - pin;
ledArrayLow = 7 - pin;
}
else if (mode == true) {
ledArrayHigh = 9 + pin;
ledArrayLow = 3 + pin;
}
digitalWrite(ledArrayHigh, HIGH);
digitalWrite(ledArrayLow, HIGH);
delay(100);
digitalWrite(ledArrayHigh, LOW);
digitalWrite(ledArrayLow, LOW);
if (pin == 4) delay(100);
}
if (buttonPressed == true) {
buttonPressed = false;
}
}
下面是把"2"當作按鈕
然後如果按按鈕會全暗
若是沒有按就會全亮
void setup() {
pinMode(2,INPUT_PULLUP);
for(int i=3;i<=13;i++){///將3~13開機,所以先做一次。
pinMode(i,OUTPUT);
}
}
bool bLightHigh=true;如果是true就會全亮
void loop() {
if(digitalRead(2)==HIGH)bLightHigh=true;
else bLightHigh=false;
for(int i=3;i<=13;i++){
if(bLightHigh)digitalWrite(i,HIGH);這邊是全亮
else digitalWrite(i,LOW);如果被按按鈕這邊是變暗
}
}
下面是設置音樂Melody
首先可以先去檔案-->範例然後Digital-->toneMelody
可以找到音符的符號或是音調
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
void setup() {
pinMode(8,OUTPUT);
}
上面是讓Buzzer發聲音
delay=延遲多少ms
void loop() {
tone(8,NOTE_G5,300);
delay(300);
tone(8,NOTE_E5,300);
delay(300);
tone(8,NOTE_E5,300);
delay(450);
tone(8,NOTE_F5,300);
delay(300);
tone(8,NOTE_D5,300);
delay(300);
tone(8,NOTE_D5,300);
delay(300);
tone(8,NOTE_C5,300);
delay(300);
tone(8,NOTE_D5,300);
delay(300);
tone(8,NOTE_E5,300);
delay(300);
tone(8,NOTE_F5,300);
delay(300);
tone(8,NOTE_G5,300);
delay(300);
tone(8,NOTE_G5,300);
delay(300);
tone(8,NOTE_G5,300);
delay(1300);
}
下面是MAKER的程式碼
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
void setup() {
pinMode(8,OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available()){
char now = Serial.read();
if(now=='2') tone(8,NOTE_G4,300);
if(now=='3') tone(8,NOTE_A4,300);
if(now=='4') tone(8,NOTE_B4,300);
if(now=='5') tone(8,NOTE_C5,300);
if(now=='6') tone(8,NOTE_D5,300);
if(now=='7') tone(8,NOTE_E5,300);
if(now=='8') tone(8,NOTE_F5,300);
if(now=='9') tone(8,NOTE_G5,300);
}
}
下面P語言的程式碼
import processing.serial.*;
Serial myport;
void setup(){
myport=new Serial(this,"COM4",9600);
}
void draw(){
}
void keyPressed(){
if(key=='2') myport.write('2');
if(key=='3') myport.write('3');
if(key=='4') myport.write('4');
if(key=='5') myport.write('5');
if(key=='6') myport.write('6');
if(key=='7') myport.write('7');
if(key=='8') myport.write('8');
if(key=='9') myport.write('9');
}
這兩個運用在一起就可以用鍵盤控制然後再MAKER發出聲音
2019年11月21日 星期四
訂閱:
張貼留言 (Atom)
alanhc 互動技術-week17 [final]
回顧這學期的作品: 期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...
-
先把上次的程式覆蓋 void setup(){ pinMode(8,OUTPUT); pinMode(2,INPUT_PULLUP); } void loop(){ if(digitalRead(2)== LOW ) tone(8,520,...
-
1. 複習按住boutton可以發出聲音 void setup(){ pinMode(8, OUTPUT); pinMode(2, INPUT_PULLUP); } void loop(){ if(digitalRead(2)==LOW) tone(8,...
-
第一張圖是讓使用者的圈圈可以自己移動 但他有個缺點 就是圈圈會跑出視窗外面 於是加上了if 假使中心大於350就會使整個圓跑出去 於是就讓他往回彈 就變成成功的彈彈球 自己製作迷宮 先畫一張自己設計的地圖 並先試看看能不能匯入 並且...
沒有留言:
張貼留言