Raspberry Pi (3)

Lチカ

GPIOとしてP1 1~26の2列ピンヘッダが使える。
http://elinux.org/Rpi_Low-level_peripherals

pin number pin name wiringPi pin pin number pin name wiringPi pin
P1-01 3.3V P1-02 5V
P1-03 GPIO0(SDA) 8 P1-04
P1-05 GPIO 1(SCL) 9 P1-06 GND
P1-07 GPIO 4(GPCLK0) 7 P1-08 GPIO 14(TXD) 15
P1-09 P1-10 GPIO 15(TXD) 16
P1-11 GPIO 17 0 P1-12 GPIO 18(PCM_CLK) 1
P1-13 GPIO 21(PCM_DOUT) 2 P1-14
P1-15 GPIO 22 3 P1-16 GPIO 23 4
P1-17 P1-18 GPIO 24 5
P1-19 GPIO 10(MOSI) 12 P1-20
P1-21 GPIO 9(MISO) 13 P1-22 GPIO 25 6
P1-23 GPIO 11(SCKL) 14 P1-24 GPIO 8(CE0) 10
P1-25 P1-26 GPIO 7(CE1) 11

ユーザーが自由に使えるGPIOは
0,1,4,7,8,9,10,11,14,15,17,18,21,22,23,24,25
の17個あります。

まずLEDを1個点灯させてみる。
P1-07(GPIO 4 = wiringPi 7pin)にLEDと1kΩの抵抗を直列につなぎ、GNDに落したとする。

1. shell で叩く
BeagleBoneと同じだが、UNIX流な方法でデバイスもファイルである。
/sys/class/gpio/export
にポート番号(4)を書き込むとそのポートは使えるようになる。
/sys/class/gpio/gpio4というディレクトリができ、その中のdirectionとvalueでIOを制御する。
directionは “in”か”out”、valueは”1″(HIGH)か”0″(LOW)のいずれか。

echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
echo "1" > /sys/class/gpio/gpio4/value
echo "0" > /sys/class/gpio/gpio4/value
echo "4" > /sys/class/gpio/unexport

2. wiringPiに付属のgpioコマンドを使う。

gpio -g mode 4 out  # GPIO4をoutputにする
gpio -g write 4 1       # GPIO4のHIGHにする
gpio -g write 4 0       # GPIO4をLOWにする

もしくはwiringPiの番号を使うと

gpio mode 7 out
gpio write 7 1
gpio write 7 0

3. libwiringPiを使ったC(Arduino的)

#include <wiringPi.h>

#include <stdio.h>
#include <stdlib.h>

#define	LED 7 // GPIO4                                                          

int main()
{
  int i;

  if (wiringPiSetup() == -1)
    exit(1);

  pinMode(LED, OUTPUT);

  for (i=0; i<10; i++) {
    digitalWrite(LED, 1);
    delay(100);
    digitalWrite(LED, 0);
    delay(100);
  }

  return 0;
}

4. ruby (wiringPi)

#!/usr/bin/env ruby                                                             
require "wiringpi"
LED = 7 # GPIO 4                                                                
io = WiringPi::GPIO.new
io.mode(LED, OUTPUT)
for i in 0..10
  io.write(LED, HIGH)
  sleep(0.1)
  io.write(LED, LOW)
  sleep(0.1)
end

5. python(wiringPi)

#!/usr/bin/python
import wiringpi
import time
LED = 7 # GPIO 4
io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_PINS)
io.pinMode(LED, io.OUTPUT)
for i in range(10):
    io.digitalWrite(LED, io.HIGH)
    time.sleep(0.1)
    io.digitalWrite(LED, io.LOW)
    time.sleep(0.1)
広告
カテゴリー: Raspbery Pi
Raspberry Pi (3)」への1件のコメント
  1. […] ピン番号とGPIOポート、WiringPi番号はそれぞれ異なっているので注意!!こちらのページRaspberry Pi (3) « stastaka’s Blogに詳しくまとまっています。 […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2012年7月
« 3月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
%d人のブロガーが「いいね」をつけました。