回胴式遊技機技術研究 J-Slot Amusement Specification

アミューズメント仕様パチスロの日々

ラズベリーパイ入出力制御GPIO(2)

2022-09-18 20:37:44 | 日記
C言語によるラズベリーパイ入出力GPIO制御
STEP1 テキストエディターでプログラムを記述

/home/pi/Testに保存(test1.c


STEP2 gccコンパイラでプログラムを実行形式に変換

STEP3 プログラムを実行
(1)Wiring Piのインストール&設定
Wiring Piとは、ラズパイでGPIOを制御するのに必要なC言語用のライブラリィ。C言語でGPIOを使うのにこのライブラリが必要なので最初にインストールする。WiringPiをインストールするとgpioというコマンドもインストールされる。このコマンドを使うと、シェル上でGPIOを制御することができる。

 Wiring Pi のソースコードを Git で入手するための準備 
$ sudo apt-get install libi2c-dev 
$ sudo apt-get install git-core
ユーザーのホームディレクトリに移動し、ソースコードを入手 
$ cd ~ 
Wiring Pi のソースコードが wiringPiディレクトリとしてクローンされるので、ディレクトリ内に移動してビルドする。
$ cd WiringPi 
$ ./build
gpio -vとコマンド入力するとversion: 2.70が表示され、正常インストールが確認できました。

gpio readall
(2)C言語でWiringPiを操作
●インクルード宣言とライブラリ追加
プログラムの先頭でヘッダーファイルをインクルード
   #include  <wiringPi.h>
コンパイルするとWiringPiのライブラりが付加される
          sudo gcc filename.c -o objname -lwiringPi
実行コマンド
          sudo ./objname
●入出力端子の機能設定
WiringPi設定用関数
①pinMode
指定したピンの動作モード設定
書式
void  pinMode(int pin, int mode);
mode: 次のいずれか
  INPUT
  OUTPUT
  PWM_OUTPUT(pin1(GPIO18)だけ)
  GPIO_CLOCK(pin7GPIO4)だけ)
記述例
  pinMode(2,OUTPUT):
②pullupDnControl
指定したピンのプルアップとプルダウンの設定
書式
void pillUpDncontrol (int pin, int pud):
pud:次のいずれか
  PUD_OFF
       PUD_DOWN, PUD_UP
記述例
  pullUpDnControl(3, PUD_UP)
③digitalWrite
GPIOピンに出力
書式
void digitalWrite(int pin, int value);
value :次のいずれか
  HIGH, LOW, 1,0
記述例
  digitalWrite(2, HIGH);
④pwmWrite
pin1(GPIO18)のPWM出力のデューティ設定
書式
void pwmWrite(int pin, int value);
value: 0~1024の範囲
⑤digitalRead
GPIOピンから入力する
書式
int digitalRead(int pin);
戻り値:HIGH, LOW ,1, 0のいずれか
記述例
if(digitalRead(3))
(3)C言語xWiringPiでI/O!3色LEDの点滅
GPIO2,GPIO3,GPIO4の接続したLEDを順番に点滅させるプログラム
GPIO17端子の入力レベル(HまたはL)によって一定間隔を0.5秒と1秒に切り替えて点滅
最初にwiringPiのヘッダーファイルをインクルード
BCMのピン番号ですべてを制御
コマンドでコンパイル  
      sudo gcc test2.c -o test2 -lwiringPi
実行
   sudo ./test2 


ご不明の点はご遠慮なくお尋ね下さい。存じ上げていることは丁寧にご案内させていただきます。
TEL 090-3194-4902 
 
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ラズベリーパイ入出力制御GPIO(1)

2022-09-18 15:11:20 | 日記

Python スクリプトでラズベリーパイの入出力ピン(GPIO)を制御
STEP1
Python標準装備のライブラリRPi.GPIOをインポート
インポートした後は"GPIO"というインスタンスが使えるようになる
import  RPi.GPIO  as  GPIO
STEP2
GPIOピンを指定する
指定方法1  GPIO.setmode(GPIO.BCM)       #GPIOの番号で指定する
指定方法2  GPIO.setmode(GPIO.BOARD)     #コネクタピン番号で指定する
STEP3
I/O端子を出力または入力に設定
①出力に設定 
GPIO.setup(ピン番号、GPIO.OUT. initial = GPIO.HIGH)
   initial記述はオプションで初期状態をHレベルかLレベルかを指定できる
 出力ピンのL/Hを制御
GPIO.output(ピン番号、GPIO.HIGH)  #デジタル出力をHレベル
GPIO.output(ピン番号、GPIO.LOW)  #デジタル出力をLレベル
②入力に設定
GPIO.setup(ピン番号、GPIO.IN. pull_up_down = GPIO.PUD_UP)
 pull_up_down以降はオプション プルアップ(PUD_UP)プルダウン(PUD_DOWN)を指定できる。
信号を取り込むときの記述
value = GPIO.input(ピン番号)
ポーリングでピンの入力レベルの変化を待つ
while GPIO.input(ピン番号) = =GPIO.HIGH:time.sleep(0.01)
whileは他の処理の実行をブロックする。
time.sleepで10msecの待ち時間を挿入し、この間は他の処理に実行権を渡している。
ラズベリーパイの入出力ピンを制御するPythonスクリプト例 sample6.py
GPIOピンの入力信号のレベル変化を検出して割り込み処理ができる。
記述例
GPIO.add_event_detect(ピン番号, GPIO.RISING,callback = my Func, bouncetime = 200)
●立ち上がり(GPIO.RISING)
●立ち下がり(GPIO.FALLING)
●両方(GPIO.BOTH)
bouncetimeはスイッチを押したときのチャタリングを回避する時間(単位msec)。イベント検出後、指定した時間だけ次のイベント検出は行わない。callbackで指定した関数myFuncはイベント検出時に実行する関数。
イベント検出を終了させる記述
GPIO.remove_event_detect

入力割り込み処理記述例
GPIOヘッダーのGPIO17(11ピン)またはGPIO18(12ピン)をLレベルにすると緑または青LEDが5秒点灯して消灯。
12ピンは、入力信号の変化を巡回モニタ(ポーリング)によって検出。緑LED点灯中に12ピンの入力をLレベルに変化させても5秒間点灯する。
11ピンは割り込みで処理される。青LEDが点灯中に11ピンをLレベルに変化させると、割り込み処理が行われて、連続2回(10秒間)点灯する。
GPIO.cleanup()  これはプログラム終了時にGPIOピンを入力モードにして、プルアップ/プルダウンなしの状態に戻す記述。
永久ループを[Ctrl] +[C]キーで強制終了のときや、アプリケーション終了時、この解放処理を確実に実行するには、次の例外処理を追加。
try
    while True
           (繰り返し処理)
except KeyboardInterupt    #キー入力でジャンプ
    pass
GPIO.cleanup()

RPiGPIOのプログラム実行時、警告 "This channel is already in use" が出るときは、最初の初期化記述に 
GPIO.setwarnigs(False)
を追加する。
ご不明の点はご遠慮なくお尋ね下さい。存じ上げていることは丁寧にご案内させていただきます。
TEL 090-3194-4902 
 
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

にほんブログ村ブログパーツ

PVアクセスランキング にほんブログ村

にほんブログ村ブログパーツ

PVアクセスランキング にほんブログ村