Arduino Mega 2560+馬達

2014-08-07 5:37 am
各位大大好,我想讓直流馬達轉5秒後 停下來,我該怎麼寫程式呢??
更新1:

Jack TAN大大 這個程式 是不是會一直循環??(一下轉 一下不轉) 我想要的是 只有一次

更新2:

我可以用Timer中斷去控制嗎?

回答 (7)

2014-08-08 11:39 am
✔ 最佳答案

Example
int ledPin = 13; // LED connected to digital pin 13

void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
================================================

Arduino 最常見的範例檔, 也是產品出廠的原始檔,
1. 把 delay(1000); 改為 delay(5000); 板上的LED就會亮5秒熄5秒交替動作.
2. 把ArduinoMega2560的腳13引出接至馬達的驅動器或是RELAY的受控腳, 就完成了.



P.S.
玩Arduino要對軟硬體都有概念, 而且要學習見樹, 見林, 見山融會貫通的體認, 若只見山不見林, 或是見樹不見山... 很容易迷路唷. 哈.

2014-08-10 23:42:20 補充:
沒錯,

所以你可以做一個開關輸入, 來控制它的起停.

比如開關腳觸發一下, 這個循環便被完成一次, 而時間持續5秒.

有些東西你需要自己去體會的, 如果直接給你答案是害了你.

想想囉, 有問題可以再問.

2014-08-12 00:16:26 補充:
Arduino中都是最基本的指令語法組合, TIMER都以TIME這個系列的指令自己寫成.
Time相關指令
millis()
micros()
delay()
delayMicroseconds()

比如以delay() 寫成延遲10分鐘
int pin = 13;


void setup()
{
pinMode(13, OUTPUT);
digitalWrite(pin, HIGH);
delay(10 * 60 * 1000);
digitalWrite(pin, LOW);
}


void loop()
{
}
2015-01-28 6:38 am
參考看 看他的答案
TS777。CC
2015-01-19 2:43 am
看看他的方法
TS777.CC
2015-01-04 6:17 pm
試試看他的方法
TS777.CC
2014-12-01 4:41 am
九卅體育館
TS777.CC
2014-08-08 1:53 am
請問大大,這個是C語言的嗎??
2014-08-07 6:01 am
在 微控器 的世界,都是用延時 ( delay )。

但我是行 AVR Studio 的,不懂 Arduino ,不能更貼切地答你了。

2014-08-06 23:36:18 補充:
PORTD |= 0x01   //馬達啟動,假設 PD0 控制馬達。

for (cnt = 0;cnt<5;cnt++)
{
_delay_ms(1000);
}

PORTD &= 0xFE;  //馬達停止。

2014-08-07 21:38:31 補充:
是,ANSI C。

~~~~~~~~~~~~~~~~~


收錄日期: 2021-04-27 20:34:33
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20140806000016KK08933

檢視 Wayback Machine 備份