NanoPi NEO的Matrix庫硬體程式設計

2021-08-19 04:10:32 字數 3250 閱讀 1413

nanopi neo的matrix庫硬體程式設計

1、準備工作

(1)安裝matrix函式庫,類似於樹莓派的wiringpi函式庫,用來對nano pi的硬體進行操作;

先安裝git;

$ sudo apt-get install git

安裝好後看一下版本:

$ git --version

然後去github上拿到官方的庫:

$ git clone

安裝,編譯,需要新增許可權,或者在root賬號下執行:

# make && make install

2、在c程式中操作gpio

先看乙個gpio的例子:

功能是每隔1秒,相應的引腳上(如gpiog11)電平發生高低變化。wiki手冊上推薦用乙個led模組進行試驗,而我手裡沒有該模組,恰好手裡有塊arduino,於是想到用arduino進行檢測,依然可以達到很好的效果:高電平led燈亮,低電平led燈滅。而且更加靈活。先看一下連線圖:

下面說一下怎麼找到對應引腳,gpiog11編號為7,gpio_pin(7);

1號引腳在開發板上的位置是這樣的:

進入gpio的工程下,檢視源**:

$ cd  code/c_demo/matrix/demo/matrix-gpio_out/

$ vim matrix-gpio_out.c

#include

#include

#include

#include "libfahw.h"

#define status_change_times     (5)

int main(int argc, char ** argv)

if (board == board_nanopi_t2)

pin = gpio_pin(15);

if (argc == 2)

pin = gpio_pin(atoi(argv[1]));

if ((ret = exportgpiopin(pin)) == -1)

if ((ret = setgpiodirection(pin, gpio_out)) == -1)

for (i = 0; i < status_change_times; i++) else

if ((ret = setgpiovalue(pin, value)) > 0) else

sleep(1);

}unexportgpiopin(pin);

return 0;

}程式的流程比較簡單,初始化開發板 -> 匯出gpio引腳 -> 設定gpio方向(輸入還是輸出)-> 然後進行5次迴圈,間隔1秒高低電平切換。

下面再貼出arduino的**(其功能是檢測對應引腳的電平變化,然後用led燈進行指示):

// set pin numbers:

const int buttonpin = 2;     // the number of the pushbutton pin

const int ledpin =  13;      // the number of the led pin

// variables will change:

int buttonstate = 0;         // variable for reading the pushbutton status

void setup()

void loop() else

}3 gpio和sysfs操作介面

上一小節是利用官方提供的庫檔案進行操作硬體,其實也可以用另一種方式進行。

科普一下,linux下用檔案io的方式操作gpio(/sys/class/gpio),通過sysfs方式控制gpio,先訪問/sys/class/gpio目錄,向export檔案寫入gpio編號,使得該gpio的操作介面從核心空間暴露到使用者空間,gpio的操作介面包括direction和value等,direction控制gpio方向,而value可控制gpio輸出或獲得gpio輸入。檔案io方式操作gpio,使用到了4個函式open、close、read、write。

arm linux開發板gpio輸入輸出介面操作,對於大部分的 arm linux 開發板來說,其實都已經把所有的gpio驅動做好了,我們要做的就是去使用它。

(1)、gpio目錄

在arm linux中,gpio驅動的目錄是:/sys/class/gpio/,所以,要首先進入這個目錄,命令:

$ cd /sys/class/gpio/

(2)、目錄解析

使用ls命令檢視目錄詳情:

$ ls 

export  gpiochip0  unexport

如上列出了1個gpio目錄、export、unexport檔案。gpio目錄對應基位址,比如晶元的io定義為gpio0_0~gpio0_31、gpio1_0~gpio1_31等等,那麼gpio0對應的base就是gpiochip0,gpio1對應的base就是gpiochip32,以此類推。大家有興趣可以可以進入其中乙個目錄看看,

$cd gpiochip0

$lsbase       label      ngpio      power      subsystem  uevent

具體內容就不一一介紹了,如果有需要,我可以再寫個介紹。

(3)、控制例項

比如要實現控制 gpiog_11(6*32+11=203) 口,先將其引腳進行匯出,在/sys/class/gpio目錄下生成乙個gpio203 目錄:

$ echo 203 > export

$ ls

export  gpio203  gpiochip0  unexport

$ cd gpio203

$ ls

active_low  direction   edge        power       subsystem   uevent

(4)、控制

$ cat direction        #檢視方向

in$ echo out > direction   #設定為輸出

$ cat value           #獲取值

0$ echo 1 > value       #設定為1,高電平

$ echo 0 > value       #設定為0,低電平

這時可以實現相同的控制效果。

4 小結

本來想多體驗幾個example,發現手裡缺乏很多必要配件,如adc部分,官方需要pcf8591模數轉換器,而我手裡也沒有。等下次手裡有了更多配件再嘗試其他的例程。

下一期,我準備嘗試連線攝像頭模組進行測試。敬請期待。

numpy 建立vector或者matrix

函式 含義np.array 建立乙個numpy.ndarray型別的陣列 np.zeros shape 返回乙個指定shape的,元素全為0的numpy.ndarray型別的陣列 np.arange start,stop,step 返回乙個 以step為步長,從start開始,到end前結束 左閉右...

查詢所有有多個 Texture 的 Matrial

using unityengine using unityeditor using system.collections using system.collections.generic public class findmultexturematerial editorwindow 當前介面狀態 ...

Android學習筆記高階十之Matrix錯切變換

剛開始我也不懂啥叫錯切變換,一看效果圖你就恍然大悟。對影象的錯切變換做個總結 x x0 b y0 y d x0 y0 與之對應的方法是 matrix matrix new matrix matrix.setskew 0.0f,0.5f 再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默...