C言語

【C言語】第9章第11回:ハードウェア制御プログラムの作成

C言語は、ハードウェア制御の分野で広く使用されています。本記事では、基本的なハードウェア制御の手法とプログラミング例について学びます。

0. 記事の概要

この記事を読むメリット

  • ハードウェア制御の基礎理解:GPIOやI/Oポートを操作する方法を学びます。
  • 低レベルプログラミングの実践:ハードウェアとの直接的なやり取りを体験します。
  • 応用力の向上:IoTデバイスや組み込みシステムの基礎スキルを習得します。

この記事で学べること

  • GPIO制御の基本概念
  • デバイス制御プログラムの作成
  • プログラムの応用例

1. ハードウェア制御の基本

1.1 GPIOとは?

GPIO(General Purpose Input/Output)は、汎用の入出力ポートで、デジタル信号を通じてハードウェアを制御します。多くのマイクロコントローラやシングルボードコンピュータで使用されます。

1.2 GPIO制御の仕組み

  • 入力モード:センサーなどのデバイスから信号を受け取る。
  • 出力モード:LEDやモーターなどを制御するための信号を送信する。

1.3 GPIOを制御するための環境準備

  • Raspberry PiやArduinoなどのデバイス
  • GPIOピンの制御ライブラリ(例:WiringPi、Pigpio)

2. GPIOを使用したLED制御

2.1 LED点灯プログラムの例

#include <wiringPi.h>

#define LED_PIN 0 // GPIOピン番号

int main() {
    wiringPiSetup(); // WiringPiの初期化
    pinMode(LED_PIN, OUTPUT); // GPIOを出力モードに設定

    while (1) {
        digitalWrite(LED_PIN, HIGH); // LEDを点灯
        delay(1000); // 1秒待機
        digitalWrite(LED_PIN, LOW); // LEDを消灯
        delay(1000); // 1秒待機
    }

    return 0;
}
動作解説
  1. GPIOの初期化:`wiringPiSetup`関数でGPIOライブラリを初期化します。
  2. 出力設定:`pinMode`でピンを出力モードに設定します。
  3. 点灯と消灯:`digitalWrite`を使用してLEDを制御します。

3. 練習問題

以下の課題に挑戦して、GPIO制御の理解を深めましょう。

  1. LEDが3回点滅して停止するプログラムを作成してください。
  2. 2つのLEDを交互に点灯させるプログラムを作成してください。
  3. スイッチを押したときにLEDが点灯し、再度押すと消灯するプログラムを作成してください。

4. 練習問題の解答と解説

問2の解答例

#include <wiringPi.h>

#define LED1_PIN 0
#define LED2_PIN 1

int main() {
    wiringPiSetup();
    pinMode(LED1_PIN, OUTPUT);
    pinMode(LED2_PIN, OUTPUT);

    while (1) {
        digitalWrite(LED1_PIN, HIGH);
        digitalWrite(LED2_PIN, LOW);
        delay(500);
        digitalWrite(LED1_PIN, LOW);
        digitalWrite(LED2_PIN, HIGH);
        delay(500);
    }

    return 0;
}

このプログラムでは、2つのLEDを交互に点灯させます。

5. まとめ

本記事では、C言語を使用したハードウェア制御の基本とGPIOの実装例を紹介しました。次回は、さらに高度な制御方法やプロジェクト例を学びます。