注釈

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

参加する理由は?

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

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

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

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

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

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

1.1.2 RGB LED

はじめに

このプロジェクトでは、RGB LEDを制御してさまざまな色を点滅させる方法を学びます。

必要な部品

このプロジェクトで必要な部品は以下のとおりです。

../_images/list_rgb_led.png

全体のキットを購入するのは非常に便利です、リンクはこちらです:

名前

このキットのアイテム

リンク

Raphael Kit

337

Raphael Kit

以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

GPIO拡張ボード

購入

ブレッドボード

購入

ジャンパーワイヤー

購入

抵抗器

購入

LED

購入

回路図

R, G, Bのピンを電流制限抵抗に接続した後、それらをそれぞれGPIO17, GPIO18, GPIO27に接続します。LEDの最も長いピン(GND)は、Raspberry PiのGNDに接続します。3つのピンに異なるPWM値が与えられると、RGB LEDは異なる色を表示します。

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

../_images/rgb_led_schematic.png

実験手順

ステップ1: 回路を組み立てます。

../_images/image61.png

ステップ2: コードのフォルダに移動します。

cd ~/raphael-kit/c/1.1.2/

ステップ3: コードをコンパイルします。

gcc 1.1.2_rgbLed.c -lwiringPi

注釈

gcc 命令が実行されると、 -o が呼び出されない場合、実行可能ファイルの名前は a.out になります。

ステップ4: 前のステップで出力された実行可能ファイルを実行します。

sudo ./a.out

コードが実行されると、RGBは赤、緑、青、黄、ピンク、シアンの順に表示されます。

注釈

実行後に動作しない、またはエラープロンプトが表示される場合:「wiringPi.h: No such file or directory」、 WiringPiのインストールと確認 を参照してください。

コード

#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#define uchar unsigned char
#define LedPinRed    0
#define LedPinGreen  1
#define LedPinBlue   2

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

int main(void){

    if(wiringPiSetup() == -1){ //when initialize wiring failed, printf messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    ledInit();
    while(1){
        printf("Red\n");
        ledColorSet(0xff,0x00,0x00);   //red
        delay(500);
        printf("Green\n");
        ledColorSet(0x00,0xff,0x00);   //green
        delay(500);
        printf("Blue\n");
        ledColorSet(0x00,0x00,0xff);   //blue
        delay(500);
        printf("Yellow\n");
        ledColorSet(0xff,0xff,0x00);   //yellow
        delay(500);
        printf("Purple\n");
        ledColorSet(0xff,0x00,0xff);   //purple
        delay(500);
        printf("Cyan\n");
        ledColorSet(0xc0,0xff,0x3e);   //cyan
        delay(500);
    }
    return 0;
}

コード説明

#include <softPwm.h>

ソフトウェアのpwm機能を実現するためのライブラリ。

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

この関数は、ソフトウェアを使用してPWMピンを作成し、その周期を0x100us〜100x100usの間に設定するものです。

関数softPwmCreate(LedPinRed, 0, 100)のプロトタイプは以下の通りです。

int softPwmCreate(int pin,int initialValue,int pwmRange);
  • パラメータpin: Raspberry Piの任意のGPIOピンをPWMピンとして設定できます。

  • パラメータinitialValue: 初期パルス幅は、initialValue倍の100usです。

  • パラメータpwmRange: PWMの周期は、pwmRange倍の100usです。

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

この関数はLEDの色を設定するためのものです。RGBを使用して、フォーマルパラメータ r_val は赤の輝度を、 g_val は緑の輝度を、 b_val は青の輝度を表します。

関数softPwmWrite(LedPinBlue, b_val)のプロトタイプは以下の通りです。

void softPwmWrite (int pin, int value) ;
  • パラメータpin: Raspberry Piの任意のGPIOピンをPWMピンとして設定できます。

  • パラメータValue: PWMのパルス幅は、value倍の100usです。valueは以前に定義されたpwmRangeよりも小さくなければならないことに注意してください。もしpwmRangeよりも大きい場合、valueは固定値、pwmRangeとして与えられます。

ledColorSet(0xff,0x00,0x00);

以前に定義された関数を呼び出します。0xffをLedPinRedに、0x00をLedPinGreenとLedPinBlueに書き込みます。このコードを実行すると、赤のLEDだけが点灯します。他の色のLEDを点灯させたい場合は、パラメータを修正するだけです。

現象の画像

../_images/image62.jpeg