1. 程式人生 > >樹莓派GPIO控制--C語言篇

樹莓派GPIO控制--C語言篇

一. 常用開源工程簡介

樹莓派核心中已經編譯自帶了gpio的驅動,我們常通過一些第三方寫好的庫函式來完成具體的操作,比較常見的操作庫函式有:

1. Python GPIO

【開發語言】——python
【簡單介紹】——樹莓派官方資料中推薦且容易上手。python GPIO是一個小型的python庫,可以幫助使用者完成raspberry相關IO口操作,但是python GPIO庫還沒有支援SPI. I2C或者1-wire等匯流排介面。
【官方網站】—— https://code.google.com/p/raspberry-gpio-python/

2. wiringPi

【開發語言】——C語言
【簡單介紹】——wiringPi適合那些具有C語言基礎,在接觸樹莓派之前已經接觸過微控制器或者嵌入式開發的人群。wiringPi的API函式和arduino非常相似,這也使得它廣受歡迎。作者給出了大量的說明和示例程式碼,這些示例程式碼也包括UART裝置,I2C裝置和SPI裝置等。
【官方網站】—— http://wiringpi.com/

3. BCM2835 C Library

【開發語言】——C語言
【簡單介紹】BCM2835 C Library可以理解為使用C語言實現的相關底層驅動,BCM2835 C Library的驅動庫包括GPIO. SPI和UART等,可以通過學習BCM2835 C Library熟悉BCM2835相關的暫存器操作。如果有機會開發樹莓派上的linux驅動,或自主開發python或PHP擴充套件驅動,可以從BCM2835 C Library找到不少的“靈感”。
【官方網站】—— http://www.airspayce.com/mikem/bcm2835/

二. 樹莓派GPIO編號方式

1. 功能物理引腳:

從左到右,從上到下:左邊基數,右邊偶數:1-40

2. BCM:

編號側重CPU暫存器,根據BCM2835的GPIO暫存器編號。

3. wiringpi:

編號側重實現邏輯,把擴充套件GPIO埠從0開始編號,這種編號方便程式設計。正如圖3 WiringPi一欄。

三. WiringPi GPIO

1. 說明:

WiringPi是應用於樹莓派平臺的GPIO控制庫函式,WiringPi遵守GUN Lv3。wiringPi使用C或者C++開發並且可以被其他語言包轉,例如python. ruby或者PHP等。
wiringPi包括一套gpio控制命令,使用gpio命令可以控制樹莓派GPIO管腳。使用者可以利用gpio命令通過shell指令碼控制或查詢GPIO管腳。

2.wiringPi安裝

 1)使用GIT工具
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
build指令碼會幫助你編譯和安裝wiringPi
 2)直接下載
在https://git.drogon.net/?p=wiringPi;a=summary下載最新版本編譯使用
tar xfz wiringPi-xx.tar.gz
cd wiringPi-xx
./build
 3)raspbian使用apt-get安裝
sudo apt-get install wiringpi

3. 測試:

wiringPi包括一套gpio命令,使用gpio命令可以控制樹莓派上的各種介面,通過以下指令可以測試wiringPi是否安裝成功。
$gpio -v

$gpio readall         #即可出現上面的gpio圖

4. 樣例程式碼:

#include <wiringPi.h>
int main(void)
{
 wiringPiSetup() ;
 pinMode (0, OUTPUT) ;
 for(;;)
 {
  digitalWrite(0, HIGH) ; delay (500) ;
  digitalWrite(0, LOW) ; delay (500) ;
 }
}

5. 編譯執行:

  • 在樹莓派上:
    gcc -Wall -o test test.c -lwiringPi
    sudo ./test

  • 在虛擬機器中:
    am-linux-gcc -Wall -o test test.c -lwiringPi
    sudo ./test

    注:
    1)IO的編號方式略有不同,採用wiring編碼方式。
    2)-lwiringPi表示動態載入wiringPi共享庫。

四. BCM2835 C Library

  1. 解壓縮:
    $tar xvzf bcm2835-1.35.tar.gz
  2. 進入壓縮之後的目錄:
    $cd bcm2835-1.35
  3. 配置編譯:
    ./configuremake
  4. 執行檢查:
    $sudo make check
  5. 安裝bcm2835庫:
    $sudo make install
  6. 樣例程式碼

#include < bcm2835.h>
//P1插座第11腳
#define PIN RPI_GPIO_P1_11
int main(int argc, char **argv)
{
  if (!bcm2835_init())
   return 1;

 // 輸出方式
 bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

 while (1)
 {
   bcm2835_gpio_write(PIN, HIGH);
  bcm2835_delay(100);

  bcm2835_gpio_write(PIN, LOW);
  bcm2835_delay(100);
 }
 bcm2835_close();
 return 0;
}

編譯執行
gcc -o blink blink.c -lbcm2835
./blink

注:
1)IO的編號方式略有不同,採用BCM編碼方式
2)-lbcm2835表示動態載入bcm2835共享庫

六. 參考以下連結

相關推薦

樹莓GPIO控制--C語言

一. 常用開源工程簡介 樹莓派核心中已經編譯自帶了gpio的驅動,我們常通過一些第三方寫好的庫函式來完成具體的操作,比較常見的操作庫函式有: 1. Python GPIO 【開發語言】——python 【簡單介紹】——樹莓派官方資料中推薦且容易上手。

樹莓 GPIO 控制

操作 spi visio vcc ike detail 簡單介紹 發的 model b Raspberr Pi 官方提供了GPIO的usage,具體位置 https://www.raspberrypi.org/documentation/usage/gpio/ 這裏整理了一

java操作樹莓GPIO控制LED燈--結合springboot實現介面呼叫

1、概述 本文使用java結合springboot實現了對樹莓派GPIO介面的操作以達到控制LED燈的功能 2、pom檔案如下: <project xmlns="http://maven.apache.org/POM/4.0.0"      &nb

【方法】樹莓GPIO控制使用教程

文章目錄程式碼 程式碼 # coding:utf-8 # 本程式碼實現 樹莓派+L298N驅動板 小車的2s前進運動 import RPi.GPIO as gpio import time # 定義

樹莓開發系列教程9——樹莓GPIO控制

一、常用開源工程簡介     樹莓派核心中已經編譯自帶了gpio的驅動,我們常通過一些第三方寫好的庫函式來完成具體的操作,比較常見的操作庫函式有: 1、python GPIO     【開發語言】——python     【簡單介紹】——樹莓派官方資料中推薦且容易上手。py

樹莓GPIO控制-flask

樹莓派提供了GPIO介面可進行控制;Flask是一個輕量級Web框架,通過在raspberry Pi上部署flask框架,能夠實現在網路前端對Pi進行GPIO控制 連線關係如之前博文進行設定和連線 利用Xshell工具保持PC和Pi之間的連線關係,便於指令輸入和控制 利用F

樹莓實現RGB LED的顏色控制——C語言版本號

個數 hang clu 代碼 stdio.h 標準 tro color sage 用樹莓派實現RGB LED的顏色控制 RGB色彩模式是工業界的一種顏色標準。是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化

樹莓 二維碼(QR)識別 c語言

                     樹莓派 二維碼(QR)識別 c語言篇    先看一下執行結果:   識別圖片二維碼,源程式:

樹莓實現RGB LED的顏色控制——C語言版本

用樹莓派實現RGB LED的顏色控制  RGB色彩模式是工業界的一種顏色標準,是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代 表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視力所能感知的所有顏色,是目前

繼續樹莓GPIO:兩片74HC595控制一個8x8LED點陣顯示愛心

先上效果圖: 8x8LED點陣其實就是64只LDE按8行,每行8列排列。我用的點陣是共陽的,共有16個引腳,8個做行選擇,8個做列選擇。具體引腳排列規則請參考http://www.docin.com/p-42115784.html。我這裡整理如下: C8  C7  R2 

數據結構與算法 基於c語言

相互 線性 內存 例子 c語言 基於 數據結構 align 四種 學習數據結構與算法走向深藍之路 第一章:數據結構與算法概念型 數據結構:數據之間的相互關系,即是數據的組織形式. 基本組成:{ 數據:信息的載體 數據元素:數據基本單位: } 其結構形式有四種: 1,集合結構

樹莓3b+控制舵機、伺服電機的驅動程式碼。

舵機的控制一般需要一個20ms的時基脈衝,該脈衝的高電平部分一般為0.5ms~2.5ms範圍內的角度控制脈衝部分。以180度角度舵機為例,那麼對應的控制關係是這樣的:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0

樹莓GPIO 基礎(一)

樹莓派3B+ 引腳圖: 其中: 標註了數字的引腳都能夠用作GPIO; 標註了其他名稱的引腳也有一些其他特殊用途標註了其他名稱的引腳也有一些其他特殊用途; SDA 和SCL 引腳構成I2C 介面; MOSI,MISO,SCKL 用於SPI 介面; GPI

樹莓---GPIO應用詳解

https://www.jianshu.com/p/f31b90cc756f https://www.jianshu.com/p/e93e2fe3f66a http://wiki.jikexueyuan.com/project/raspberry-pi/gpio.html https://blog.cs

樹莓GPIO 模組使用基礎

   這篇日誌的內容應該算是《RPi.GPIO 模組使用基礎》Input 部分的擴充套件講解,詳細講解了 Input 部分的一些高階應用技巧。目前有幾種途徑可以在您的程式中獲得 GPIO 的輸入資訊。第一種也是最簡易的一種為在某個時間點檢查輸入值。這即是所謂的“輪詢(poll

樹莓GPIO口的使用

引腳物理編號排序:方形焊介面為1腳,兩兩為序,先短後長 管腳編號: BCM: 編號側重 CPU 暫存器,根據 BCM2835 的 GPIO 暫存器編號。 wpi: 編號側重實現邏輯,把擴充套件 GPIO 埠從 0 開始編號,這種編號方便程式設計。正如下圖 WiringPi 欄。  配置GIPO為輸出:

樹莓GPIO

首先需要安裝python-dev。執行命令: sudo apt-get install python-dev然後安裝RPI.GPIO解壓tar xvzf RPi.GPIO-0.6.3a.tar.gz進入資料夾:cd RPi.GPIO-0.6.3/安裝: sudo pyth

CGI之C語言

為什麼要進行CGI程式設計?     在HTML中,當客戶填寫了表單,並按下了傳送(submit)按鈕後,表單的內容被髮送到了伺服器端,一般的,這時就需要有一個伺服器端指令碼來對錶單的內容進行一些處理,或者是把它們儲存起來,或者是按內容進行一些查詢,或者是一些別的什麼。

自動跟隨機器人教程(四)軟體部分 樹莓+電腦 控制小車移動

接下來可以說是本教程的核心內容了,不可能在一篇文章中講完,首先講一個比較初級的程式。樹莓派可以接收同一個區域網上電腦的連線,並且電腦鍵盤上發出的前後左右的控制訊號通過網路發向樹莓派後,樹莓派再經過串列埠發向Arduino,對電機進行控制。 樹莓派需要實現的程式分為兩部分

樹莓GPIO使用大全

簡介 原始碼及其來源 RPi.GPIO是Python的一個module( 模組 ), 樹莓派官方系統預設已經安裝, 仍在不斷更新中, 截至20160314, 最新版0.6.2, 適配了樹莓派3, 訪問 python主頁 .  原始碼(也有教程的連結