這篇要試用Raspbian_For_BananaPi_v3.0,並且試著存取GPIO控制LED明滅與讀取開關狀態。
此版本的變動如下:
- 以Raspbian 2014-06-20為基礎修改而來。
- 分割區變正常了(兩個)、不再有NOOBS的分割區。
- Linux核心版本是3.4.90。
- 不僅可給Banana Pi使用,也可給Raspberry Pi使用。
- 預設帳號密碼是pi/bananapi。
- FEX組態有些更動。(嗯,這是什麼?)
- 修改GPIO驅動程式,使之與RPi.GPIO相容。
- 核心加入i2c-sunxi和i2cdev驅動程式。
- 增加模組spi-sun7i.ko和spi-dev.ko。
- 核心加入LED驅動程式,使用者定義的LED會像心跳一樣閃爍。
- 開啟CSI相機模組的支援,譬如ov5460。
- 預先安裝Arduino 1.5.4、S4A。
- 預先安裝RPi.GPIO。
- 預先安裝wiringPi,仍處於測試階段,但除了SPI有點問題,其餘大部分功能皆可使用。
- 預先安裝ScratchGPIO5,仍有點小問題。
- 修正關機問題,可完全切斷電源。
- 預先安裝eject,可安全移除儲存裝置。
- 預先安裝ntfs-3g,可存取NTFS檔案系統。
- 更新Banana Pi桌面環境的桌布。
- 開啟序列埠,可從ttyS0登入。
- 修正動態MAC位址的問題。
然後連接好電路,如下,其中11與13代表實體針腳編號。
讓LED閃爍的Python程式碼:
#!/usr/bin/env python
import time
import RPi.GPIO as GPIO
LED_PIN = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
while True:
print("LED is on")
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(1)
print("LED is off")
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(1)
GPIO.cleanup()
以PWM控制LED漸亮漸暗的Python程式碼:
#!/usr/bin/env python
import time
import RPi.GPIO as GPIO
LED_PIN = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
pwm = GPIO.PWM(LED_PIN, 50)
pwm.start(0)
while True:
for dc in range(0, 101, 5):
pwm.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
pwm.ChangeDutyCycle(dc)
time.sleep(0.1)
pwm.stop()
GPIO.cleanup()
以按壓式開關控制LED明滅的Python程式碼(並去除彈跳現象):
#!/usr/bin/env python
import time
import RPi.GPIO as GPIO
LED_PIN = 11
SWITCH_PIN = 13
TIME_LAPSE = 0.2
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(SWITCH_PIN, GPIO.IN)
status = GPIO.LOW
GPIO.output(LED_PIN, status)
timemark = time.time()
while True:
timemark2 = time.time()
if GPIO.input(SWITCH_PIN) == GPIO.HIGH and (timemark2 - timemark) > TIME_LAPSE:
timemark = timemark2
if status == GPIO.LOW:
status = GPIO.HIGH
else:
status = GPIO.LOW
GPIO.output(LED_PIN, status)
GPIO.cleanup()
讓LED閃爍的C程式碼:
#include <stdio.h>
#include <wiringPi.h>
#define LED_PIN 11
int main()
{
wiringPiSetupPhys();
pinMode(LED_PIN, OUTPUT);
while(1){
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}
return 0;
}
以PWM控制LED漸亮漸暗的C程式碼:
#include <stdio.h>
#include <wiringPi.h>
#include <softPwm.h>
#define LED_PIN 11
int main()
{
int i;
wiringPiSetupPhys();
softPwmCreate(LED_PIN, 0, 100);
while(1){
for(i = 0; i <= 100; i+=5){
softPwmWrite(LED_PIN, i);
delay(100);
}
for(i = 100; i >= 0; i-=5){
softPwmWrite(LED_PIN, i);
delay(100);
}
}
return 0;
}
以按壓式開關控制LED明滅的C程式碼(並去除彈跳現象):
#include <stdio.h>
#include <wiringPi.h>
#define LED_PIN 11
#define SWITCH_PIN 13
int main()
{
int ledStatus = LOW;
unsigned int t = 0;
wiringPiSetupPhys();
pinMode(LED_PIN, OUTPUT);
pinMode(SWITCH_PIN, INPUT);
digitalWrite(LED_PIN, ledStatus);
while(1){
int switchStatus = digitalRead(SWITCH_PIN);
if(switchStatus == HIGH){
unsigned int temp = millis();
if(temp - t > 300){
t = temp;
ledStatus = ledStatus == HIGH ? LOW : HIGH;
digitalWrite(LED_PIN, ledStatus);
}
}
}
return 0;
}
參考資料:
- Raspbian For Banana Pi v3.0 Released - Banana Pi News - Banana Pi Forum,釋出Raspbian For BananaPi v3.0。
向葉大報告下....
ReplyDelete安裝 RetroPie 2.3 img (最新版) 在香蕉派開機,連畫面都沒有出現 (HDMI/ HDMO to VGA 都試過);但使用您介紹的這個 Raspbian for Banana Pi 3.0 卻是完全正常。
我開始有些擔心,若是底層也要像此提出修正版本,那麼改用 Banana Pi 可能意義就不大了。
據我所知,RetroPie是以Raspbian(Raspberry Pi用的)為基礎,裝上一大堆模擬器與有的沒的,然後製作出來的映像檔,所以,Banana Pi並不能使用。
DeleteRaspbian for Banana Pi 3.0是以Raspbian(Raspberry Pi用的)為基礎,換掉、修改掉底層的一些東西,然後就能在Banana Pi上運行。
目前如果你想在Banana Pi上跑RetroPie,恐怕要自己先裝Raspbian for Banana Pi 3.0,然後照著RetroPie網站上的步驟,自己一個東西一個東西慢慢裝,自己設定組態自己搞,詳情請查詢RetroPie網站http://blog.petrockblock.com/,別問我,我也沒用過,哈哈。
拜過孤狗大神後,我沒看到有人在Banana Pi上成功執行RetroPie,所以...,你算是先鋒,加油。
順便問一句,我的Banana Pi無法跑Android_For_BananaPi_v2.0(http://www.lemaker.org/index.php?m=content&c=index&a=show&catid=9&id=38),第一次開機後,可看到主選單,但點按一下滑鼠就會當掉,螢幕就黑掉了,請問你可以嗎?
Delete1. >Raspbian for Banana Pi 3.0是以Raspbian(Raspberry Pi用的)為基礎,換掉、修改掉底層的一些東西,然後就能在Banana Pi上運行。
Delete這就是我擔心的問題;老實說,要能長期持續維護 OS distribution,這並不容易的 (除非組織規模夠大)。
2. 我倒沒有使用其它 Banana Pi 的 Image 勒。
反想請教葉大,好像 Banana 無法直接使用 Raspberry Pi 的攝影模組嗎?
1. 他們既然推出這塊板子,自然應該要移植並維護底層的系統核心與驅動程式。
Delete目前Banana Pi不能使用Raspberry Pi 的攝影模組,將來不知道。