はじめに
秋葉原ロボット部の有志で、milk-v duoを購入し、個々人が様々な実験を行って、勉強会内で報告しています。
Milk-v duoは9ドルのrisc-vコンピュータとして知られています。
ハードウェアは以下の通りです。
- CPUはCVITEKのCV1800B (C906@1Ghz + C906@700MHz)
- 最高1 GHzで動作するデュアルRV64コア
- 64 MBのラム
- オプションのアドオンボードを接続すると10/100Mbpsの速度でイーサーネットに接続可能
12月12日の記事、「Milk-v duoのpythonでpinpongライブラリを使用してLチカ、導入と失敗編」でpinpongライブラリを使用できる環境を導入しました。
Milk-v duo上の「pip」の動作はハラハラします。
その後、例に従ってpythonスクリプトを作成しましたが、Lチカの成功に至っていません。
この記事では、pinpongでのGPIOのピンの指定を確認し、Lチカに成功までの話を紹介します。
SDカードイメージは、v1.0.5です。
PinpongライブラリでのGPIOの設定
Milk-v duoコミュニティでもうまくいかないとの書き込みがありました。
「Does pinpong work yet? Yes!( https://community.milkv.io/t/does-pinpong-work-yet-yes/827 )」では、青色LEDのピン番号はD1と記載しています。
この書き込み通り行っても、LEDは点滅しません。
答えは、Milk-v duoのドキュメントにありました。
https://milkv.io/docs/duo/application-development/pinpong
に、ピン番号の表が掲載されています。
ここにも転記しておきます。
pinpong | ピン名 | ピン番号 | ピン番号 | ピン名 | pinpong |
---|---|---|---|---|---|
0 | GP0 | 1 | 40 | VBUS | |
1 | GP1 | 2 | 39 | VSYS | |
GND | 3 | 38 | GND | ||
2 | GP2 | 4 | 37 | 3V3_EN | |
3 | GP3 | 5 | 36 | 3V3(OUT) | |
4 | GP4 | 6 | 35 | ||
5 | GP5 | 7 | 34 | ||
GND | 8 | 33 | GND | ||
6 | GP6 | 9 | 32 | GP27 | 27 |
7 | GP7 | 10 | 31 | GP26 | 26 |
8 | GP8 | 11 | 30 | RUN | |
9 | GP9 | 12 | 29 | GP22 | 22 |
GND | 13 | 28 | GND | ||
10 | GP10 | 14 | 27 | GP21 | 21 |
11 | GP11 | 15 | 26 | GP20 | 20 |
12 | GP12 | 16 | 25 | GP19 | 19 |
13 | GP13 | 17 | 24 | GP18 | 18 |
GND | 18 | 23 | GND | ||
14 | GP14 | 19 | 22 | GP17 | 17 |
15 | GP15 | 20 | 21 | GP16 | 16 |
25 | GP25 | LED |
この表に従うと、青色LEDの接続されている場所は、pinpongでは、25となります。
Lチカに成功しました。
「led = Pin(Pin.D0, Pin.OUT)」を「led = Pin(Pin.D25, Pin.OUT)」に修正します。
# -*- coding: utf-8 -*-
#Experimental effect: Control the UNIHIKER onboard LED light to flash once a second
#Wiring: Use a computer to connect a UNIHIKER main control board
import time
from pinpong.board import Board,Pin
Board("MILKV-DUO").begin() #Initialize, select the board type, if you do not enter the board type, it will be automatically recognized.
led = Pin(Pin.D25, Pin.OUT) #The pin is initialized as level output
while True:
led.value(1) #Output high level
print("1") #Terminal print information
time.sleep(1) #Wait for 1 second to maintain the state
led.value(0) #Output low level
print("0") #Terminal print information
time.sleep(1) #Wait for 1 second to maintain the state
「1」の表示の時に点灯、「0」の表示の時に消灯します。
[root@milkv-duo]~# python3 blinkpinpong2.py
milkv-duo
__________________________________________
| ____ _ ____ |
| / __ \(_)___ / __ \____ ____ ____ _ |
| / /_/ / / __ \/ /_/ / __ \/ __ \/ __ `/ |
| / ____/ / / / / ____/ /_/ / / / / /_/ / |
|/_/ /_/_/ /_/_/ \____/_/ /_/\__, / |
| v0.5.2 Designed by DFRobot /____/ |
|__________________________________________|
1
0
1
0
1
0
1
0
1
0
1
^Cexit_handler
[root@milkv-duo]~#
他のGPIOを使ったLチカにも、今後挑戦します。