ラベル 点滅 の投稿を表示しています。 すべての投稿を表示
ラベル 点滅 の投稿を表示しています。 すべての投稿を表示

2014年1月13日月曜日

MCU Gear をRaspberry Pi とPythonで使ってみる。

MCU Gear用の初心者向けPython サンプルプログラムを作りました。

Pythonを使うことで、Raspberry Pi の GPIOのピンアサインを見なくともモジュールに信号線を割り当てることができるようになりました。


インストール方法はこちら


ホームページからダウンロードしたファイルを解凍し、

点滅プログラムを見てみましょう。

BlinkLEDフォルダにあるsample.pyの解説です。



基本的な流れ

1、初期化部分(コピーアンドペーストして使ってください。)
2、モジュールの初設定 ピンはモジュール定義のカッコ内に追加すればモジュール端子の0番、1番、2番…と増やせます。
例えば
,p.outpin[0], p.outpin[1], p.inpin[0]....)など 1モジュールあたり最大8端子割り当てられます。 


出力ピンの最大値は6つ
p.outpin[0]、p.outpin[1]、p.outpin[2]、p.outpin[3]、p.outpin[4]、p.outpin[5]
入力ピンの最大値は2つ(何もつなげないと入力がLOWとなるので、スイッチなどを使う場合はHigh信号を与えてください)
p.inpin[0]、p.inpin[1]

SPIバスは import spidev を追加して

p.MISO、p.MOSI、p.SCLK、p.CE0


I2Cバスはモジュールには配線せずに、コネクタから出ているSDA SCLに直接接続してください。

ただしアドレスが競合しないように注意してください。
また、競合する場合はマルチファンクションモジュールで別系統のI2Cバスを増設できます。

UART端子は動作させるサンプルを用意していませんが、p.TX、p.RX で割り当てることができます。

設定、動作に関してはこちらを参考に設定できます。http://mcugear.blogspot.jp/2014/01/raspberry-pipython-uart.html


3、モジュールとの接続connect()と切断disconnect()で動作中に配線切替ができます。




#!/usr/bin/python このファイルがPythonの物と明示してください

import MCUGear MCU Gear のベースボードに関するプログラムが入っています
import MCUGearModule モジュールへの配線に関するプログラムが入っています
import p GPIOピン設定に関するプログラムが入っています

import RPi.GPIO as GPIO Raspberry Pi のGPIOを動かすプログラムが入っています

import time 時間に関するプログラムが入っています

if __name__=='__main__': メイン関数

#Start--------
try: とりあえず試しに以下のプログラムを動かしてみて、[ctrl]+ [C]を押して終了する
print("If you want to finish, press [ctrl]+ [C] \n")
#setup IOs-----
GPIO.setmode(GPIO.BCM) GPIOを使います
for var in range(0,len(p.inpin)-1): GPIOの入力を設定(通常このままコピペ)
GPIO.setup(p.inpin[var], GPIO.IN) 
for var in range(0,len(p.outpin)-1): GPIOの出力を設定(通常このままコピペ)
GPIO.setup(p.outpin[var], GPIO.OUT) #set outpin as a output
MCUGear.initBase() ベースボードの初期化

#Universal Module address & IO Setting-------------
UNI = MCUGearModule.MCUGearModule(MCUGear.N_VDD_VDD_VDD,p.outpin[0])
 1、好きな名前(ここではUNI)という名前でユニバーサル基板を定義します。
 2、ユニバーサルモジュール基板裏面のアドレス設定 (AD2=3.3V AD1=3.3V AD0=3.3V) N_VDD_VDD_VDD
 3、「モジュールの0番端子にp.out[0]出力を割り当てる。」という処理をしています。

#loop-----

while True: ループ

UNI.connect() Raspberry Piの端子 とモジュール端子とを接続
GPIO.output(p.outpin[0], True) 先ほど設定したp.out[0]を HIGH にします
time.sleep(0.5) 0.5秒待ちます
GPIO.output(p.outpin[0], False) 先ほど設定したp.out[0]を LOW にします
time.sleep(0.5) 0.5秒待ちます
UNI.disconnect() Raspberry Piの端子 とモジュール端子とを切断

except KeyboardInterrupt: tryから続いています[ctrl]+ [C]を押したら以下を実行して終了します。
print("detect key interrupt [ctrl]+ [C] \n")
UNI.disconnect() 念のためもう一度切断
GPIO.cleanup() Raspberry PiからGPIOの制御を一時無効にする
print("Program exit\n")

2013年9月24日火曜日

Raspberry Pi 入門 5:C++ を試してみる

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO



                                        

以下、昔の記事です。



前回まではC言語でいろいろこなしてみました。

ラズベリーパイにはC言語以外にもC++が対応しています。基本的にはgccをg++と書けば動きます。

C++の簡単な使い方と wiringPi のC言語とC++を組み合わせたコンパイル方法を試してみます。
(MCU GearのLPC1114はC言語ですが、それ以外はC言語とC++を組み合わせた形で書かれています。)


まずはGeanyを使わない形でコンパイルしてみます。

テストプログラムは三つのファイルを用意します。



1、【MyTest.h】
class MyTest{//クラスの宣言
public:
int getData(void);//クラスの関数
};


2、【MyTest.cpp】
#include "MyTest.h"
int MyTest::getData(void){//クラスで定義された実際の関数の中身
return 9;
}


3、【cpptest.c】
#include <stdio.h>
#include "MyTest.h"

int main(void){

MyTest maintest;//MyTestクラスのインスタンス生成
//maintestという中にgetData()という関数が隠れていると考えると分かりやすい。
//インスタンスが実体でクラス宣言した中身を利用できるようになる。

int data = maintest.getData();//MyTestクラスのgetData()関数を呼び出して値を保存

//インスタンスの中身をいじるときは(インスタンス.クラスの中身)

printf("getData = %d\n",data);
}



これら三つのファイルを作り、一つのフォルダに入れます。
フォルダに入れたら.oファイルをコンパイルして作り、最後にビルドして実行ファイルを作ります。
ターミナルでls、cdコマンドを利用し移動して次の様なコマンドを入れます。

g++ -c MyTest.cpp -o Mytest.o
g++ -c cpptest.c -o cpptest.o
g++ cpptest.o MyTest.o -o cpptest
./cpptest

最後にgetData = 9
と出ていれば成功です。
次はGeanyの設定をしてみましょう。


ビルドコマンドを設定します。


gccと書いてあるところをg++にしておくと、とりあえず一つ一つのファイルをコンパイルして.oファイルを作れるようになります。

次にmakefileを作ってみましょう。


cpptest : cpptest.o MyTest.o

g++ -Wall cpptest.o MyTest.o -o cpptest



clean:

rm -f *.o cpptest

と記述すると、プログラムを書き変えてもすぐにビルドボタン、実行ボタンで動くようになります。

次にwiringpi とC++を組み合わせてみましょう。
3回目にやったblink.cのmain関数に

#include "MyTest.h"

int main(void){
MyTest maintest;
int data = maintest.getData();
printf("getData = %d\n",data);

を加えてみましょう。
そして同じフォルダにMyTest.cpp とMyTest.h を入れてみましょう。

ターミナルを開いて
g++ -Wall -o blink.c MyTest.cpp -lwiringPi

sudo ./blink

と実行すればC++もC言語も動きます。


次回はMCU Gearがつながるかを検証してみます。

2013年9月16日月曜日

Raspberry Pi 入門 3:C言語でLED点滅編

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO


                                        

以下、昔の記事です。

前回は普通のC言語の使い方を試してみました。

今回はLEDを点滅させるプログラムを作ってみたいと思います。Rasberry Pi はマイコンのように端子が出ています。その端子をC言語で制御してみたいと思います。

LEDの点滅は知ってるから、一気に飛ばしてAD変換、DA変換を知りたい方はこちら

Raspberry Pi の端子(GPIO)を動かすには、いくつか方法があります。
Python
shellスクリプト

C言語だと
bcm2835 ・・・初心者にはちょっとややこしいかもしれませんが、中上級者には良さそうです。(参考:http://www.airspayce.com/mikem/bcm2835/

wiringPi・・・初心者向けに簡単な記述で動かせるようにした物のようです。
(参考:https://projects.drogon.net/raspberry-pi/wiringpi/

今回はwiringPiを使います。これはRasberry Pi を簡単なC言語で動かすというコンセプトの物のようです。

IOの番号はそれぞれ使うものによって違います。詳しくはこちらに掲載されている写真からwiringpi の IOの位置を確認してみてください。

まずはgitをインストールして、
sudo apt-get install git

wiringPiのコピーをビルドします。
git clone git://git.drogon.net/wiringPi
cd wiringPi
 ./build

次に前回helloworld.cを作ったように、blink.cを作ります。
中身をこのサイトにあるサンプルのようにします。

ピンアサインはターミナルでwiringpi readall と打ち込むと、ピン配置とプログラムの番号との対応が分かります。




最後に前回のようにターミナルから/Desktop/C_test/にls cdコマンドを使って移動し、
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink

とやれば動画のように動きます。動画は見やすいように、動きを1秒おきに改造しました。
止める時は [ctrl] + [c] をキーボードで押せば止まります。





最後にこのサイトのmakefileを使い、Geany側にwiringPiのリンクを貼ります。
Geanyの「ビルドコマンドの設定」をします。




クリックして「ビルド」と「実行」の部分に以下の青い文字を書き加えます。

ビルド gcc -Wall -o "%e" "%f"  -lwiringPi
実行   sudo "./%e"

ワンクリックでビルド、実行ができるようになります。

次回はI2C通信設定をします。