「Arduino Mega 2560 LESSON:30 リレー」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 91行目: | 91行目: | ||
<freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap"> | <freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap"> | ||
<code class="cpp"> | <code class="cpp">//www.elegoo.com | ||
//2022.03.10 | |||
/************************ | |||
Exercise the motor using | |||
the relay | |||
************************/ | |||
#define ENABLE 5 | |||
#define DIRA 4 | |||
#define DIRB 3 | |||
int i; | |||
void setup() { | |||
//---set pin direction | |||
pinMode(ENABLE, OUTPUT); | |||
pinMode(DIRA, OUTPUT); | |||
pinMode(DIRB, OUTPUT); | |||
Serial.begin(9600); | |||
} | |||
void loop() { | |||
//---relay example | |||
digitalWrite(ENABLE, HIGH); // enable on | |||
for (i = 0; i < 5; i++) | |||
{ | |||
Serial.println("spin"); | |||
digitalWrite(DIRA, HIGH); //motor spins | |||
digitalWrite(DIRB, LOW); | |||
delay(2000); | |||
Serial.println("stop"); | |||
digitalWrite(DIRA, LOW); //motor stops | |||
digitalWrite(DIRB, LOW); //HIGH→LOWに書き換えが必要 | |||
delay(2000); | |||
} | |||
} | |||
</code></pre></div><script></freescript> | </code></pre></div><script></freescript> | ||
ELEGOOのコードを修正しないとSTOPはしないですね。DIRAとDIRBに電位差があればリレー内部のコイルが中心の鉄心を磁化させ、スチッチの鉄板を引き寄せ接続状態になります。DIRA:HIGH、DIRB:LOWあるいはDIRA:LOW、DIRB:HIGHでNOピンがOnになります。リレーの箱側からみて右にあって2つのPinになってる側のPinがNOピンです。反対側はNCピンです。3つある側の真ん中がCenterピン。両側がCoilピンです。つまりCoilピンに電位差がある状態がDIRA:HIGH、DIRB:LOWあるいはDIRA:LOW、DIRB:HIGHでNOピンがOnになります。逆に電位差がない状態ではDIRA:LOW、DIRB:LOWあるいはDIRA:HIGH、DIRB:HIGHでNOピンがOffになります。NCピンはNOピンがOnならOff、NOピンがOffならOnの状態になるピンです。Centerにはモーターに供給する電力を送電します。Centerを経由してNOピンの状態に応じてモーターがOnOffされる感じです。 | |||
[[Arduino Mega 2560]]に戻る。 | [[Arduino Mega 2560]]に戻る。 | ||
2026年11月10日 (火) 22:33時点における版
概要
電源供給モジュールとモーターとL293Dとリレーを接続するレッスンです。
完成図は以下のとおりです。
[[|380px||none|完成図]]
PCB図は以下のようなものです。
[[|380px||none|PCB図]]
3Dプレビュー図は以下のようなものです。
[[|380px||none|3Dプレビュー図]]
コードは以下のようなものです。
//www.elegoo.com
//2022.03.10
/************************
Exercise the motor using
the relay
************************/
#define ENABLE 5
#define DIRA 4
#define DIRB 3
int i;
void setup() {
//---set pin direction
pinMode(ENABLE, OUTPUT);
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);
Serial.begin(9600);
}
void loop() {
//---relay example
digitalWrite(ENABLE, HIGH); // enable on
for (i = 0; i < 5; i++)
{
Serial.println("spin");
digitalWrite(DIRA, HIGH); //motor spins
digitalWrite(DIRB, LOW);
delay(2000);
Serial.println("stop");
digitalWrite(DIRA, LOW); //motor stops
digitalWrite(DIRB, LOW); //HIGH→LOWに書き換えが必要
delay(2000);
}
}
ELEGOOのコードを修正しないとSTOPはしないですね。DIRAとDIRBに電位差があればリレー内部のコイルが中心の鉄心を磁化させ、スチッチの鉄板を引き寄せ接続状態になります。DIRA:HIGH、DIRB:LOWあるいはDIRA:LOW、DIRB:HIGHでNOピンがOnになります。リレーの箱側からみて右にあって2つのPinになってる側のPinがNOピンです。反対側はNCピンです。3つある側の真ん中がCenterピン。両側がCoilピンです。つまりCoilピンに電位差がある状態がDIRA:HIGH、DIRB:LOWあるいはDIRA:LOW、DIRB:HIGHでNOピンがOnになります。逆に電位差がない状態ではDIRA:LOW、DIRB:LOWあるいはDIRA:HIGH、DIRB:HIGHでNOピンがOffになります。NCピンはNOピンがOnならOff、NOピンがOffならOnの状態になるピンです。Centerにはモーターに供給する電力を送電します。Centerを経由してNOピンの状態に応じてモーターがOnOffされる感じです。