Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RustのHAL(avr-hal)でLeafonyを動かした件
Search
k-abe
October 24, 2021
Programming
1
100
RustのHAL(avr-hal)でLeafonyを動かした件
2021/10/24 TOPPERS開発者会議 LT発表資料
k-abe
October 24, 2021
Tweet
Share
More Decks by k-abe
See All by k-abe
【連続講座3】デザインパターンを学び、ソフトウェア設計に生かそう(Facade・Observer・State)
kabe
0
54
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
42
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
56
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
92
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
400
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
730
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
410
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
100
テストからより良い組込みソフトウェア開発を考える
kabe
0
160
Other Decks in Programming
See All in Programming
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
96
33k
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
190
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
590
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
500
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
570
TypeScriptでDXを上げろ! Hono編
yusukebe
3
480
NPOでのDevinの活用
codeforeveryone
0
870
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
210
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
990
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
460
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
Docker and Python
trallard
44
3.5k
Producing Creativity
orderedlist
PRO
346
40k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
How STYLIGHT went responsive
nonsquared
100
5.6k
We Have a Design System, Now What?
morganepeng
53
7.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Transcript
2021.10.24 ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ Ѩ෦ߞೋ
[email protected]
RustͷHAL(avr-hal)ͰLeafonyΛಈ͔ͨ݅͠ TOPPERS։ൃऀձٞ2021
• ࣗݾհ • ͓͢Δ͜ͱ • ༻ޠઆ໌ • ։ൃڥ • ۩ମత࡞ۀ
• ݁Ռ • ՝ ࣍
• ໊લɿѨ෦ɹߞೋ(͋ɹ͜͏͡) • ύʔιϧςΫϊϩδʔελοϑגࣜձࣾɹϝʔϧɿ
[email protected]
• ҩྍػث։ൃɻ • ࠐΈιϑτΣΞ։ൃɻCݴޠɺOSͳ͠(ϕΞϝλϧ)ͷ։ൃۀܦݧ͕΄ͱΜͲɻ • twitter:
@juraruming • ϒϩά: https://k-abe.hatenablog.com/ ࣗݾհ
• Leafonyͱ͍͏খܕج൘ͷCιʔεαϯϓϧΛRustʹҠ২ͨ͠ɻ ɹϋʔυΣΞґଘ෦ͷҠ২ɻHAL(avr-hal)ͰରԠ͍ͯ͠ͳ͍ϋʔ υΣΞʹରԠͤͨ͞ɻ • ಈ࡞֬ೝͰ͖֤ͨछϖϦϑΣϥϧ ɹgpioͰLνΧɺuartɺi2cɺdelay ͓͢Δ͜ͱ
1.Leafony 2.avr-hal ༻ޠઆ໌
1.Leafony ɾখܕͷج൘ɻৄͪ͘͜͠ΒΛࢀরɻ https://docs.leafony.com/docs/overview/ ɾArduino UNOͱಉ͡AVRϚΠίϯ(Atmega328P)͕ࡌ͞Ε͍ͯΔ ɾArduino UNOͱͷҧ͍ΫϩοΫ(UNO =16MHz, Leafony =
8MHz) ɾࠓճʲBasic Kitʳ͕ରɻ https://docs.leafony.com/docs/products/basic/ ༻ޠઆ໌
2, avr-hal ɾArduino͚ͷHALɻ https://github.com/Rahix/avr-hal ɾHALͷબࢶͱͯ͠avr-rustͱavr-hal͕͋ͬͨ ͕avr-halΛબ(avr-rustڥߏஙͰ͖ͣஅ೦)ɻ ɾavr-halӈਤͷ֤छArduinoγϦʔζΛαϙʔ τɻ ༻ޠઆ໌
։ൃڥ No ߲ όʔδϣϯ උߟ 1 ϗετPC MacBook macOS Big
Sur όʔδϣϯ11.6 2 λʔήοτϋʔυΣΞ Leafony Basic Kit 3 Rust ίϯύΠϥ ɾnightly-2021-01-07 ɾrustc 1.51.0-nightly avr-halͰόʔδϣϯࢦఆͷͨΊ 4 avr-hal 2021/10/15ݱࡏ࠷৽ͷ ίϛοτ: 8ad1be ίϛοτ࣌: 2021/9/17
1. ։ൃڥߏஙํ๏ 2. C⇛RustҠ২ 3. ίϯύΠϧ 4. ॻ͖ࠐΈ ※ࠓճͷιʔείʔυˣ https://github.com/grace2riku/avr-hal/tree/add_leafony_211015
۩ମత࡞ۀ
1. ։ൃڥߏஙํ๏ • avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart ※ίϯύΠϥstableͰͳ͘ɺnightlyΛ͏ͱ͜Ζ͕ҙɻ ۩ମత࡞ۀ
2, C⇛RustҠ২ • Ҡ২͢ΔCαϯϓϧιʔε͜Εɻ όοςϦిѹಡΈऔΓ https://docs.leafony.com/docs/examples/beginner/1_p/basic/read_battery/ ɹ⇛i2cͰόοςϦిѹಡΈग़͠⇛uartૹ৴⇛LEDτάϧ⇛1ඵdelayͷ܁Γฦ͠ • avr-halͷArduino UNOαϯϓϧίʔυΛϕʔεʹLeafony͚ʹվ͍ͯ͘͠ɻ
ɹexamples/arduino-uno/src/bin σΟϨΫτϦҎԼʹαϯϓϧίʔυ͕͋Δɻ • ΫϩοΫઃఆมߋɹ˞࣮ʹ՝͋Γɻ༰ޙड़ɻ ɹArduino UNO16MHz, Leafony8MHzɻ ɹarduino-hal/src/clock.rsͷpub type DefaultClock = avr_hal_generic::clock::MHz16;Λpub type DefaultClock = avr_hal_generic::clock::MHz8;ʹมߋɻ ۩ମత࡞ۀ
3, ίϯύΠϧ avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart cd examples/arduino-uno #
Build and run it on a connected board cargo run --bin uno-blink ɹ⇛͜ͷ1ίϚϯυͰίϯύΠϧɺॻ͖ࠐΈ·Ͱ࣮ߦͯ͘͠ΕΔɻʲuno-blinkʳʹίϯύΠϧ͍ͨ͠ ιʔείʔυΛࢦఆ͢Δɻ ۩ମత࡞ۀ
3, ίϯύΠϧ Leafonyͷ߹ɺʲcargo run --bin uno-blinkʳͰॻ͖ࠐΈ͕ࣦഊ͢ ΔɻίϯύΠϧɾॻ͖ࠐΈΛͦΕͧΕͷίϚϯυͰ࣮ࢪͨ͠ɻ ʲίϯύΠϧʳ cargo build
--bin battery_voltage ※battery_voltage͕ࠓճՃͨ͠ιʔείʔυͷ໊শ ۩ମత࡞ۀ
4, ॻ͖ࠐΈ ॻ͖ࠐΈ༻ͷπʔϧʲavrdudeʳΛࣄલʹΠϯετʔϧ͠ɺelfͱಉ ͡֊Ͱ࣍ͷίϚϯυ࣮ߦɻɹ avrdude -patmega328p -carduino -P/dev/cu.usbserial-AH07FVYA -b 57600
-D -U flash:w:battery_voltage.elf:e ۩ମత࡞ۀ
• ίϯύΠϧɺॻ͖ࠐΈ͕ऴΘͬͨΒλʔϛφϧͰ࣍ͷίϚϯυͰଓ͢ΔɻࠓճλʔϛφϧʹminicomΛ༻ɻ minicom -D /dev/cu.usbserial-AH07FVYA -b 57600 • ଓͰ͖Δͱ࣍ͷϝοηʔδ͕λʔϛφϧʹදࣔ͞ΕΔɻ [0]=0,
[1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=7, [1]=64, [2]=255, [3]=255 // ӈਤͷϦʔϑ(ج൘)ͷεΠονΛಈ͔͢ͱίΠϯిͷిѹΛऔಘͰ͖Δɻ Batt[V] = 2990 // ϦʔϑͷεΠονΛมԽͤ͞ΔͱόοςϦిѹ͕ಡΈग़͍ͤͯΔɻ [0]=7, [1]=80, [2]=255, [3]=255 Batt[V] = 3016 [0]=7, [1]=64, [2]=255, [3]=255 ݁Ռ
• Leafony͚ʹΫϩοΫͷมߋ(16MHz⇛8MHz)Λߦͬͨɻ ɹݱঢ়ͷରԠͩͱLeafonyҎ֎ͷArduinoͷΫϩοΫઃఆ͕1/2ʹ ͳͬͯ͠·͏ͨΊظ௨Γʹಈ͔ͳ͍ɻLeafonyͷϏϧυߏΛ Ճ͢ΕଞͷArduinoͱڞଘͰ͖Δɻ • cargo run --bin uno-blinkͷ1ίϚϯυͰॻ͖ࠐΈ·ͰΓ͍ͨɻ
• warning͕Ͱ͍ͯΔ͕ແࢹ͍ͯ͠ΔͷͰରԠɻ ՝
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ऴΘΓ