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 再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默...