0
0

Milk-v duoのpythonでpinpongライブラリを使用してLチカ、探索と成功編

Last updated at Posted at 2023-12-12

はじめに

秋葉原ロボット部の有志で、milk-v duoを購入し、個々人が様々な実験を行って、勉強会内で報告しています。

Milk-v duoは9ドルのrisc-vコンピュータとして知られています。
ハードウェアは以下の通りです。

  1. CPUはCVITEKのCV1800B (C906@1Ghz + C906@700MHz)
  2. 最高1 GHzで動作するデュアルRV64コア
  3. 64 MBのラム
  4. オプションのアドオンボードを接続すると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)」に修正します。

blinkpinpong2.py
# -*- 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チカにも、今後挑戦します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0