著者の序文
こんにちは、Habr。 計画どおり、Arduinoを理解するのに役立つ一連の記事を続けます。 また、以降の各記事(この記事を含む)では、コメントに表示される最も重要な質問に対する回答を見つけることができます。 最初の部分を読んでいない人のために、 ここに 。
LEDの極性を判断する方法
現時点では、ほとんどのLEDは、極性を決定するプロセスを簡素化するために作られています。 LEDには2本の足があり、片方はもう片方より長くなります。 長い脚はプラス(アノード)です。 短い脚はマイナス(カソード)です。 しかし、LEDの結論が同じサイズである場合はどうでしょうか? 時々、カソードの出力は、ハウジング上のポイントまたは小さなカットでマークされます。 また、水晶を注意深く調べることで極性を確認できます。 プラスは、マイナスに比べてレンズ内部のサイズがはるかに小さくなっています。 マイナスの接点は、クリスタルが置かれている旗に似ています。 電源の極性も判別できます。 これを行うには、電流源(3〜6ボルトの電圧)、抵抗器(抵抗220〜470オーム)、およびLED自体が必要です。 まず、LEDの一方の足を抵抗器に接続します。 次に、電源LEDに触れます。 アノードをプラスに、カソードをマイナスに触れると、LEDが点灯します(動作している場合)。
Arduinoの学習に進む
前回の記事では、LEDを接続して点灯させ、点滅させる方法を学びました。 しかし、このLEDを制御する必要がある場合はどうでしょう。 または、ランプの見た目を作りたいです。 ここで、ボタンまたはスイッチが役立ちます。 しかし、今日はボタンを検討します。 実際には、さまざまなプロジェクトで役立ちます。 始めましょう。
前提条件と接続
ボタンを接続するには、次のものが必要です。
- Arduinoコントローラー
- ボタン
- 抵抗器(10 kOhm)
- ブレッドボード
- ジャンパー/ワイヤー
接続図自体は次のようになります。
コードを書く
回路を接続した後、プログラム自体を把握しましょう。 回路を接続した後、プログラム自体を把握しましょう。 この例では、13ピンLEDを制御します。 つまり、組み込みのLEDを追加することはできません。 しかし、初心者向けにArduinoの一部にあるLEDの接続について読むことができます。
int Led = 13; int Button = 2; // , void setup(){ pinMode(Led, OUTPUT); pinMode(Button, INPUT); } void loop(){ if(digitalRead(Button) == HIGH){ // digitalWrite(Led, HIGH); // } else{ // () digitalWrite(Led, LOW); // } }
この例で十分です。 しかし、保持するのではなく押すことでアクションを実行する必要がある場合。 次に、コードを少し変更します。 さらに2つの変数、いくつかのプロセスを監視するフラグを追加します。 そして、コードはすでに次のようになっています。
bool But = true; // bool Light = false; // int Led = 13; int Button = 2; // , void setup(){ pinMode(Led, OUTPUT); pinMode(Button, INPUT); } void loop(){ bool Now = digitalRead(Button); // if(But && !Now) { delay(10); // Now = digitalRead(Button); if(!Now) { Light = !Light; digitalWrite(Led, Light); } } But = Now; }
このコードでは、 Light = !Light
気付くかもしれません。 これから説明します。 ボタンが省略されたかどうかを読み取ります。 次に、これがエラーかどうかをわずかな遅延で判断し、ボタンが実際に押された場合、LED信号を反転させます。 つまり、LEDが点灯している場合、点灯を停止します。 そしてその逆。
コンタクトバウンス
すべてが完璧なときに非常に良い。 しかし、残念ながらすべてが完璧です。 そして、ボタンで同じ問題。 ボタンの機械的接点は、すぐに開閉できません。 これは「連絡先のバウンス」と呼ばれます。 これを理解する方法。 マイクロコントローラーの入力はパルスを受信します。 ただし、この現象のために1または0を取得するだけでなく、多数のパルスが入力されます。 これにより、誤った信号が作成される可能性があります。 そしてそれが私たちのプログラムをわずかに遅らせている理由です。 これは特に速度には影響しませんが、エラーから私たちを提供します。
これで第2部の終わりです。 ご清聴ありがとうございました。