Lesson 5 Mode Cue
利用手去轉馬達,使得風扇轉動
#include <servo .h="">
Servo myServo;
int const potPin =A0;
int potVal;
int angle;
void setup(){
myServo.attach(9);
Serial.begin(9600);
}
void loop(){
potVal = analogRead(potPin);
Serial.print("potVal: ");
Serial.print(potVal);
//這裡的 map function 可以把 0~1023 轉換到 0~179度
//很方便的函示
angle=map(potVal, 0, 1023, 0, 179);
Serial.print(", angle: ");
Serial.print(angle);
Serial.print("\r\n");
myServo.write(angle);
delay(15);
}
Lesson 6 Light Theremin
利用光線的強弱來發出聲音
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
//遮住/打開光敏電阻,讓程式修正最大和最小值
while (millis() < 5000) {
sensorValue = analogRead(A0);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
//開始進入
digitalWrite(ledPin, LOW);
}
void loop() {
sensorValue = analogRead(A0);
//對應最高和最低的數值,對應為 50~4000 hz
int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
tone(8, pitch, 20);
delay(10);
}
Lesson 7 Keyboard Instrument
按鍵發出樂器的聲音
int notes[]={262,294,330,349};
void setup()
{
Serial.begin(9600);
}
void loop()
{
int keyVal=analogRead(A0);
Serial.println(keyVal);
if(keyVal==1023)
{
tone(8,notes[0]);
}
else if (keyVal>=900 && keyVal<=1010)
{
tone(8,notes[1]);
}
else if(keyVal>=505 && keyVal<=511)
{
tone(8,notes[2]);
}
else if (keyVal>=512 && keyVal<=512)
{
tone(8,notes[3]);
}
else
{
noTone(8);
}
}
沒有留言:
張貼留言