Robofun 機器人論壇
標題:
Ardiuno 如何同時執行兩個動作 請高手救命
[打印本頁]
作者:
78945622
時間:
2013-1-26 13:51
標題:
Ardiuno 如何同時執行兩個動作 請高手救命
#include "pitches.h"
// notes in the melody:
int melody[] = {
NOTE_C5,NOTE_F5, NOTE_C5,NOTE_F5, NOTE_C5,NOTE_F5, NOTE_C5,NOTE_F5, NOTE_C5,NOTE_F5, NOTE_C5,NOTE_F5};
int duration = 500; // 500 miliseconds
int photocellPin = 2; // 光敏電阻 (photocell) 接在 anallog pin 2
int photocellVal = 0; // photocell variable
int minLight = 800; // 最小光線門檻值
int ledPin = 9;
int ledState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
photocellVal = analogRead(photocellPin);
Serial.println(photocellVal);
if (photocellVal < minLight && ledState == 0)
{
digitalWrite(ledPin, HIGH); // turn on LED
ledState = 1;
for (int a=0; a<=255; a++) //亮度增加
{
analogWrite(9,a);
delay(8);
}
digitalWrite(ledPin, LOW); // turn off LED
ledState = 0;
for (int a=255; a>=0; a--) //亮度減少
{
analogWrite(9,a);
delay(8);
}
}
// 光線充不足時關掉 LED
else if (photocellVal > minLight && ledState == 0)
{
digitalWrite(ledPin, HIGH); // turn on LED
ledState = 1;
for (int a=0; a<=255; a++) //亮度增加
{
analogWrite(9,a);
delay(1);
}
digitalWrite(ledPin, LOW); // turn off LED
ledState = 0;
for (int a=255; a>=0; a--) //亮度減少
{
analogWrite(9,a);
delay(1);
}
}
}
// for (int thisNote = 0; thisNote < 8; thisNote++) {
// 在 pin8 上輸出聲音,每個音階響 0.5 秒
// tone(8, melody[thisNote], duration);
// 間隔一段時間後再播放下一個音階
// delay(1000);
}
// 兩秒後重新播放
// delay(2000);
我寫了這麼一個語法 這是一個 用光敏電阻控制LED閃爍的語法
當光敏電阻 讀值為800 LED快速閃爍 如果沒有超過 就是一般速度的呼吸燈
但是現在希望把紅色那串字 加入 else 裡面 但是如果直接放進去 燈閃一下 馬上蜂鳴器就開始叫 燈都沒作用
希望可以 讓燈 跟蜂鳴器 在else 裡面同時作用
請高手救命
作者:
marbol
時間:
2013-1-27 09:18
789大大好~~
這個case的兩種輸出方式都各需佔了一個蘿蔔坑來作業,您講的同時執行看來需要雙核心來處理,最簡單的方式為一個板子執行呼吸燈,一個板子執行聲音的輸出,兩個板子再互相設定溝通的方式,來達到您的要求。若是只要一個板子達到要求,要用到中斷的方式長出另一個處理核心,實務上來做需要主客易位_紅色部分放進去正常執行(紅色部分因涉及音調的問題,須讓它一直執行才不會走音),原先呼吸燈的用計時中斷的方式累加或累減,並設定旗標來做判斷。
作者:
78945622
時間:
2013-1-27 10:50
回復
2#
marbol
感謝大大的指點
我想以我的等級 還是只能分別寫兩個語法來執行了
太感謝你了
作者:
cc1357
時間:
2022-3-12 21:02
谢谢分享
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2