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

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

ラズベリーパイ入出力制御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でシェアする

ラズベリーパイ推奨プログラム言語パイソン(2)

2022-09-17 15:43:33 | 日記
Pythonプログラムの記述

テキストエディターで作成し、sample1.py で保存⇒ターミナルからコマンドで実行。
関数定義や条件文の記述
関数定義(def)や条件文(if や case)の行末には":(コロン)"が必要
関数定義に続く実行文は必ず字下げする
字下げにはTabキー、またはスペースキーを使うが混在させるとエラーになるので、いずれかに統一する
コメントの記述
"#"が行頭にあると以降はコメントになり、以降1行分は無視される
”””~”””(ダブルクォーテーション3個連続の間)は複数行でもすべてコメントになる
コメントには日本語が使える
スクリプトの最初には初期設定とメッセージ出力を記述
最初に記述した文はモジュール・ロード時に実行されます。Pythonスクリプトは上から順に実行されるので、最初の部分には初期設定やメッセージ出力を記述。
関数を定義する方法
     
関数はdefで定義します。
引数のパラメーターはいくつでも使え、初期値を代入することもできます。
戻り値があるときだけreturn文を使います。
定義文の行末はコロン”:”で終えます。
関数内部の実行文は字下げ(イデント)します。
メイン部
関数定義の後に記述する部分がメイン実行文です。
メイン部で永久ループするときは、while true文を使います。

Pythonは複数の要素で構成されたデーターを定義する2つの方法があります。
(1)List(リスト)
複数の要素で構成されたデータ列をひとつの値として扱うことができる。「 [ ]でまとめて初期化定義したデータ群をListと呼ぶ。
Data = [data1, data2, data3,・・・・]   #データ1は0番目のデータ
Data[1]のようにインデックスで指定すると値を取り出せる。

List(リスト)として定義されたDataがあるとき、次のメソッドを利用できる
①Listに値を追加
●メソッド1  Data.append(data) : Listの最後に追加。
●メソッド2  Data. insert(n , data) : Listのn番目に追加。nは0から始まりnが0のときは最初に追加。
②Listからデータを削除
●メソッド1  Data. remove(data) :指定したdataを削除する。最初に見つかったものだけ削除。
●メソッド2  Data.pop(n) : n番目のデータを削除して値を返す。nがないときは最後のデータを削除。
③List内のデータの個数や位置を調べる
●メソッド1  Data.count(data): 戻り値でdataが出現する回数を返す。
●メソッド2  Data.index(data): dataが最初に見つかった位置を返す。
(2)Dict(ディクショナリ)
Dictは key : dataという構成のデータ列を{}(中かっこ)でくくるデータ塊の定義関数で、次のように定義する。
Dict = {key1 : data1, key2:data2,key3:data3・・・・}
記述
Dict = {’Mon’ : 5, 'Tue':6,'Wed':7 ,'Thu' :8 ,'Sat':9 ,'Sun':10}
keyの項目を利用して値を取り出したり変更したりできる。
①値を取り出す
Dict1.get(<key>, <default >)  //keyに対応する値を返す。keyが無い時はdefalt値を返す。
Dict1.get('Sun', 'notfound')
②値を追加する
Dict1[key1] = data1  //key1 : data1という値をDict1に追加する
Dict ['Sun'] = 11  //Dict1に'Sun' : 11という値を追加する
③値を削除
del  Dict1 ['Wed]    //「'Wed':7」を削除する
④keyの項目だけを取り出す
print Disk1.keys( )
⑤for文のインデックスとしてkeyを使う
インデックスの”i”にkeyの値が順番に」適用されてすべてのkeyが順番に出力されます。
for  i in Dict1:
制御文(if文 while文 for文)の記述
①if文
 if    条件式:
    実行文
 elif 条件式:
    実行文
 else :
   実行文
elif以降は必要がないときはなくてもよい
条件式やelseの最後には”:コロン”が必要
条件式に使える比較用演算子 <,> = = ,!=, >=, <=
複数の条件式の論理積はandで、論理和はorで結合できる。
②for文
for <vale> in <list> range(count) :
行末に”:”コロンが必要
while文の内部の実行文は字下げ
"in"の後ろに記述するループ対象オブジェクトの1要素がvalue変数に毎ループ入る
rangeオプションを使うとcountで回数を制限できる
range以降はなくてもよい
③While文
while  条件式:
  実行文
条件式の後に:コロンが必要
While文の内部の条件式は字下げ
④print文
print ”文字列:フォーマット”%
フォーマット部に代入する変数 
%s:文字列 %d :数値
出力先はターミナル


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

ラズベリーパイ推奨プログラム言語パイソン(1)

2022-09-17 14:04:12 | 日記

ラズベリーパイのパイはパイソンのパイ。プログラム言語にパイソンが推奨されています。シェルコマンドと同様にコマンド一行入力⇒即実行⇒結果が帰ってくるプログラム言語のひとつです。
シェルスクリプトと同様に複数の命令を記述したファイルを作って一気に実行できます。このパイソンのファイルをモジュールと呼び、複数のモジュールをまとまたものをパッケージと呼びます。
Thonnyの起動
デスクトップのメニューアイコン⇒プログラミング⇒Thonny Python IDEをクリック。





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

ラズベリーパイのシェルスクリプト

2022-09-16 17:33:37 | 日記
シェルスクリプトとはテキストファイルに書かれたコマンド列のこと
一連のコマンドが書かれたファイルを作り一括実行できます。テキストファイルの拡張子は.shです。このテキストファイルをターミナルから呼び出すと、たくさんのコマンドが一気に実行されます。このとき、シェルはインタープリタとして機能します。
シェルスクリプトの記述方法
基本ルール
①スクリプトの先頭行に " # ! / bin / sh "と記述
②コメント行の先頭に" # "を付ける
③表示出力にはechoコマンドを使う
    例  
          #!/bin/sh
          echo  "Hello World"
④変数には任意の文字列が使え、数値や文字列を代入できる
 例
   変数=データー 
   "="の前後にスペースを入れてはいけない
   変数の内容を参照するときは変数の前に"$"を付加する。これが付加されないと単なる文字列になる。
⑤計算式は"$(( 式 ))"と記述
 例
   z=$(( x+y ))
⑥キーボードからの入力を読み込ませるときはreadコマンドを使う
 例 read -p 'Input Data = ' data
          これは「プロンプトtp"Input Data = "を出力したあと入力を待ち、入力データーは変数dataに代入される」という意味です。
if文を使う
①構文の基本形
条件式の記述に[ ]コマンドを使う” [ "の前後にスペースが必要
if [ 条件式 ] :then
 コマンド・リスト 条件成立時に実行する内容
else
 コマンド・リスト 条件成立時に実行する内容
fi  if文の終了
②条件式の書き方
条件式に使うコマンド 前後にスペースが必要
文字列を比べる
 = :文字列が等しい
!= :文字列が等しくない
数値を比べる
 -eq :等しい
 -gt  :より大きい
 -ge :以上
 -lt  :より小さい
 -le :以下
 -ne :等しくない
③条件式に使う比較演算子の書き方  パラメーターの前後にスペースが必要
-n :文字列が空白ではない。
-z :文字列が空白である。
-d :ファイルが存在しかつディレクトリーである。
-e :ファイルが存在する。
-f :ファイルが存在しかつ通常ファイルである。
-s :ファイルが存在しかつ空ではない。
④複数式の論理和や論理積の書き方
● -a :論理積AND
記述例 ["$data" -gt 5 -a "$data" -lt 12]
● -o :論理和OR
記述例 ["$data" -lt -10 -o "$data" -gt 10]
case文を使う
①構文の基本形
各パターンの場合のコマンド・リストの最後は ”;;” で終わってcase文から抜け出す。
    case 式 in 条件を指定
    (パターン1)
                 コマンド・リスト;; パターン1の場合に実行する内容
    (パターン2)
     コマンド・リスト;; パターン2の場合に実行する内容
     ・・・
     esac     case文の終わり
②パターンの書き方
* :文字列すべての合致 *aはaから始まる文字列という意味
? :1文字に合致
[...]:...のいずれか1文字に合致
[a-z]:aからzのいずれかに合致
[!...]:...の文字以外の文字に合致
for文を使う
①構文の基本形
in 以下はオプションです。
in 以下の値がある場合は、値を順次代入して繰り返す。
in 以下がない場合は、変数に含まれる値を順次代入し最後の値まで繰り返す。
for 変数 in 値1 値2 値3... 値n 条件を指定do
コマンド・リスト;; 繰り返し実行する内容 done
while文を使う
①構文の基本形
条件文の書式はifと同じ
whileとuntilでは条件の真偽が逆
   while(またはuntil) [条件式]
          do
          コマンド・リスト  条件の真偽を変えるコマンドが必要
   done
②永久ループの書き方
”:”もヌルコマンドなので前後にスペースが必要。
永久ループを抜け出すときはbreakを使う。
   while : 
          do
          コマンド・リスト
   コマンド・リスト
   done
           


 

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

ラズベリーパイの基本シェルコマンド

2022-09-16 15:24:47 | 日記

ディレクトリー操作コマンド
ls (エルエス)
listingの略であり、カレントディレクトリの内容を一覧表示する。このコマンドには引数としてディレクトリを指定することもできる。例えば、ls/homeと入力すると、カレントディレクトリに関係なく、/homeの内容が一覧表示される。Windowsのdirコマンドに相当する。
cd(シーディー)
change directoryの略で、ファイルシステム内を移動するためのコマンド。cdと入力すると、ホームディレクトリに戻る。引数として移動先のディレクトリへのパス(道順)を指定すると、そのディレクトリに移動する。ディレクトリパスとして絶対パスか相対パスのどちらかを指定できる。たとえば、cd bootはカレントディレクトリの下にあるbootディレクトリに相対パスで移動するが、cd /bootはカレントディレクトリに関係なく、/bootディレクトリに絶対パスで移動する。
pwd(ピーダブルディー)
カレントディレクトリーを表示
mv(エムヴイ)
Linuxのmvコマンドには2つの目的がある。ひとつは、ファイルを別のディレクトリに移動することであり、もうひとつは、ファイルの名前を変更することである。2つ目の機能は筋つがいに思えるかもしれないが、Linux環境では、ファイルをある名前から別の名前に移動すると解釈される。このコマンドは 
 mv <現状のファイル名><新しいファイル名 >形式で実行される。
rm(アールエム)
removeの略で、引数として指定されたファイルまたは一連のファイルを削除する。Windowsのdel コマンドに相当する。どちらの場合も、正しいファイルが削除されるように注意しなければならない。
rmdir(アールエムディーアイアール)
通常rmだけではディレクトリを削除できない。このため、rmを使ってファイルが削除された後のディレクトリを削除するために、rmdirが使用される。
mkdir(エムケイディーアイアール)
rmdirの逆で、新しいディレクトリを作成する。たとえば、ターミナルにmkdir myfolder と入力すると、カレントディレクトリにmyfolderという名前の新しいサブディレクトリが作成される。cdと同様に、引数として指定するディレクトリパスは絶対パスか、相対パスかのどちらかになる。

システム制御コマンド
sudo shutdown
記述方法
sudo shutdown [-h|-r][-fqs][now|hh:ss|+mins][message]
-h:システムをシャットダウン
-r :システムを再起動
-f :再起動の際、ファイルシステムのチェックを行わず高速起動
-q :メッセージを表示しない
now :すぐにシャットダウンか再起動
hh:ss :時間指定
+mins :指定分後にシャットダウンか再起動
message :シャットダウン/再起動時に表示するメッセージ
sudo reboot システム再起動

アプリケーションをインストールするコマンド
sudoコマンド
管理者権限でコマンドを実行
sudo apt-get install xrdp
apt-getコマンド
コンパイル済のバイナリと関連ファイルの一式(パッケージ)をダウンロードしてインストールしたりアップデートしたりできます。指定されたパッケージが存在するサーバーに問い合わせ、ほしいパッケージをダウンロードしてインストールする一連の処理を自動的に実行します。このとき、動作に必要な依存関係にアルパッケージも自動的に入手インストールします。システムに導入済のパッケージのアップデートもできます。
記述方法
apt-get (オプション)(コマンド)(パッケージ名)
オプション
-y :問い合わせにはすべて「y」と答える
使用できるコマンド
update :サーバーから最新のパッケージリストを入手
upgrade :パッケージを最新にする
remove :パッケージをアンインストールする
clean :キャッシュ・ファイルを削除
wgetコマンド
URLで指定したファイルをダウンロードします。指定したFTPサーバーやWebサーバーから希望のファイルをダウンロードします。
記述方法
sudo wget (URL)
例 sudo wget http://w.vmeta.jp/temp/km-0411.ini
tarコマンド
ファイルをtar. gz. tgz拡張子のファイルに書籍化(アーカイブ)したり展開したりします。
記述方法
tar(オプション)(アーカイブ先)(アーカイブ元)
例 tar xzvf aquestalkpi-2013827.tgz
オプション
c :書庫を新規作成
v :実行結果を表示
z :zipとしてアーカイブ
t :アーカイブ内容を表示
x :アーカイブからファイルを抽出
f :指定されたファイルにアーカイブデーターを出力
k :展開するとき同名ファイルやディレクトリーがあるときは警告して中止




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

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

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

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

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