注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!

1.1.1 点滅LED

前書き

このレッスンでは、プログラミングによってLEDを点滅させる方法を学習する。設定により、LEDは一連の興味深い現象を生成できる。今、行動しよう。

部品

../_images/blinking_led_list1.png

注釈

スムーズに進めるには、独自のRaspberry Pi、TFカード、およびRaspberry Piの電源を用意する必要がある。

原理

ブレッドボード

ブレッドボードは、電子装置のプロトタイピングの構築基盤である。それは回路設計を完了する前に、回路を迅速に作って、テストするために使用される。また、上記の部品をICや抵抗器、ジャンパー線などのように挿入できる多くの穴が搭載されている。ブレッドボードを使用すると、部品を簡単に差し込んだり、取り外したりすることができる。

この写真は、full +ブレッドボードの内部構造を示している。ブレッドボード上のこれらの穴は互いに独立しているように見えるが、実際には内部で金属ストリップを介して互いに接続されている。

../_images/image411.png

LED

LEDは一種のダイオードである。LEDの長いピンが正極に接続され、短いピンが負極に接続されている場合にのみ、LEDが点灯する。

image42 image43

LEDを電源に直接接続することはできないため、部品に損傷を与える可能性がある。160Ω以上の抵抗(5V動作電圧)は、LEDの回路に直列に接続する必要がある。

抵抗器

抵抗器は、分岐電流を制限できる電子素子である。固定抵抗器は抵抗値を変更できない抵抗器の一種であるが、ポテンショメータまたは可変抵抗器の抵抗値は調整できる。

このキットには固定抵抗器が適用される。回路では、接続された部品を保護することは重要である。次の図は、実際の物体、220Ω抵抗器、および抵抗器汎用の二つの回路記号を示している。Ωは抵抗値の単位で、より大きな単位はKΩ、MΩなどである。それらの関係は次のように示している:1M= 1000KΩ、1KΩ=1000Ω。通常、抵抗値はマークされている。したがって、回路にこれらの記号が表示される場合、抵抗があることを意味する。

../_images/image441.png

image45 image46

抵抗器を使用する場合、まず抵抗値を知る必要がある。以下の二つの方法がある:抵抗の帯域を観察すること、またはマルチメーターを使用して抵抗を測定すること。より便利で迅速なので、一番目の方法をお勧めする。値を測定するには、マルチメーターを使用してください。

カードに示されているように、各色は数字を表している。

../_images/image471.jpeg

回路図

この実験では、まず220Ωの抵抗器を陽極(LEDの長いピン)に接続し、それから抵抗器を3.3 Vの電源に接続し、LEDの陰極(短いピン)をRaspberry PiのGPIO17に接続する。したがって、LEDをオンにするには、GPIO17を低(0V)レベルにする必要がある。プログラミングを通じてこの現象を取得できる

注釈

Pin11 はRaspberry Piの左から11番目のピンを指し、それに対応する wiringPiBCM のピン番号は以下の表の通りです。

C言語関連のコンテンツでは、wiringPiでGPIO0を0と同等にする。Python言語関連のコンテンツの中で、BCM 17は次の表のBCM列の17である。同時に、それらはRaspberry Piの11番目のピン-ピン11と同じである。

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

../_images/image481.png

実験手順

ステップ1: 回路を作る。

../_images/image491.png

ステップ2: コードのフォルダーに入る。

  1. モニターを使用する場合は、次の手順を実行することをお勧めする。

~/ に入り、 davinci-kit-for-raspberry-pi フォルダーを見つけてください。

フォルダー内で C を見つけて右クリックし、** Open in Terminal** を選択する。

../_images/image501.png

それから以下のようなウィンドウがポップアップされる。これで、コード 1.1.1_BlinkingLed.c のパスに入っていた。

../_images/image511.png

次のレッスンでは、右クリックの代わりにコマンドを使用してコードファイルを入力する。ただし、お好みの方法を選択可能である。

  1. Raspberry Piにリモートでログインする場合、 cd を使用してディレクトリを変更する:

cd ~/davinci-kit-for-raspberry-pi/c/1.1.1/

注釈

この実験では、cdを使用してディレクトリをコードのパスに変更します。

どちらにしても、現在は C フォルダにいることになります。この2つの方法に基づくその後の手順は同じです。次に進みましょう。

ステップ3: コードをコンパイルする.

gcc 1.1.1_BlinkingLed.c -o BlinkingLed -lwiringPi

注釈

gcc は GNU Compiler Collection です。ここでは、C言語ファイル*1_BlinkingLed.c*をコンパイルし、実行ファイルを出力するような機能を持っています。

コマンドでは、 -o は出力を意味し( -o の直後の文字はコンパイル後のファイル名出力であり、 BlinkingLed という名前のEXEファイルがここで生成される)、 -lwiringPi はライブラリー のwiringPiをロードする( l はlibraryの省略形である)。

ステップ4: 前のステップで出力されたEXEファイルを実行する。

sudo ./BlinkingLed

注釈

GPIOを制御するには、コマンド sudo (superuser do)でプログラムを実行してください。コマンド ./ は現在のディレクトリを示している。コマンド全体は、現在のディレクトリで BlinkingLed を実行することである。

../_images/image521.png

コードの実行後、LEDが点滅する。

注釈

実行しても動作しない場合、または「wiringPi.h: No such file or directory」というエラー プロンプトが表示される場合は、Cコードが機能していませんか? を参照してください。

コードファイル 1.1.1_BlinkingLed.c を編集する場合は、 Ctrl + C を押してコードの実行を停止する。次に、次のコマンドを入力してそれを開く:

nano 1.1.1_BlinkingLed.c

注釈

nanoはテキストエディターツールである。このコマンドは、このツールを通して、コードファイル 1.1.1_BlinkingLed.c を開くために使用される。

Ctrl + X を押して終了する。コードを修正した場合、変更を保存するかどうかを尋ねるプロンプトが表示される。 Y (保存)または N (保存しない)を入力する。 次に、 Enter キーを押して終了する。 ステップ3ステップ4 を繰り返して、修正後の効果を確認する。

../_images/image531.png

コード

プログラムコードは次のように表示される:

#include <wiringPi.h>
#include <stdio.h>
#define LedPin      0
int main(void)
{
   // When initialize wiring failed, print message to screen
   if(wiringPiSetup() == -1){
      printf("setup wiringPi failed !");
      return 1;
   }
   pinMode(LedPin, OUTPUT);// Set LedPin as output to write value to it.
   while(1){
      // LED on
      digitalWrite(LedPin, LOW);
      printf("...LED on\n");
      delay(500);
      // LED off
      digitalWrite(LedPin, HIGH);
      printf("LED off...\n");
      delay(500);
   }
   return 0;
}

コードの説明

include <wiringPi.h>

ハードウェアドライブライブラリは、Raspberry PiのC言語用に設計されている。このライブラリを追加すると、ハードウェアの初期化、およびI/Oポート、PWMなどの出力に役立つ。

#include <stdio.h>

標準I/Oライブラリ。画面に表示されるデータの印刷に使用されるpintf機能は、このライブラリによって実現される。他にも多くのパフォーマンス機能がある。

#define LedPin 0

T_Extension BoardのGPIO17ピンは、wiringPiのGPIO0に対応している。GPIO0をLedPinに割り当て、LedPinは後のコードでGPIO0を表す。

if(wiringPiSetup() == -1){
    printf("setup wiringPi failed !");
    return 1;

これにより、wiringPiが初期化され、呼び出しのプログラムがwiringPiピン番号スキームを使用することになると想定される。

この関数を呼び出すには、ルート権限が必要である。配線の初期化に失敗すると、画面にメッセージが表示される。 関数「return」は現在の関数から飛び出すために使用される。main()関数で関数「return」を使用すると、プログラムが終了する。

pinMode(LedPin, OUTPUT);

LedPinを出力として設定し、値を書き込む。

digitalWrite(LedPin, LOW);

GPIO0を0V(低レベル)に設定SURU。LEDの陰極はGPIO0に接続されているため、GPIO0が低レベルに設定されるとLEDが点灯する。 それに反して、GPIO0を高レベルに設定すると(digitalWrite(LedPin、HIGH)):LEDが消灯する。

printf("...LED off\n");

printf関数は標準ライブラリ関数であり、その関数プロトタイプはヘッダーファイル「stdio.h」にあります。 呼び出しの一般的な形式は次のとおりです。 printf("フォーマット制御文字列"、出力テーブルの列)。 フォーマット制御文字列は、フォーマット文字列と非フォーマット文字列に分けられる出力フォーマットを指定するために使用されます。フォーマット文字列は「%」で始まり、 10進整数出力の場合は「%d」などのフォーマット文字が続きます。 フォーマットされていない文字列はプロトタイプとして印刷されます。 ここで使用されているのは、フォーマットされていない文字列であり、その後に改行文字である 「\n」 が続きます。これは、文字列を印刷した後の自動行折り返しを表します。

delay(500);

Delay (500) は、現在のHIGHまたはLOW状態を500ms維持する。

これは、プログラムを一定期間中断する機能である。また、プログラムの速度はハードウェアによって決まる。ここで、LEDをオンまたはオフにする。 遅延機能がない場合、プログラムはプログラム全体を非常に高速で実行し、継続的にループする。そのため、プログラムの作成とデバッグに役立つ遅延機能が必要である。

return 0;

通常、メイン関数の後ろに配置され、関数が正常に実行されると0を返すことを示す。