k_watanabe
2024年10月3日 17時13分
お世話になっております。
現在Flutterでアプリを作成しておりまして、
そのアプリ内でFlutterを用いて、GPIOを制御したいと考えております。
こちら、可能でしょうか?
ご確認のほど、よろしくお願いいたします。
コメント
k_watanabe
佐藤様
ご回答いただきありがとうございました。
教えていただいたライブラリを使い、LED3を制御してみたいと思い、以下を試してみましたが、うまく動作しませんでした。
var gpio = GPIO(14, GPIOdirection.gpioDirOut);
の箇所で止まってしまい、その後printがされなかったので、その部分が問題かなと考えています。
(ピン番号を15に変えたら最後までprintされました)
以下に現状のmain.dartとapp.confのソースコードになります。
こちらどこが問題でしょうか?
ご確認のほど、よろしくお願いいたします。
main.dart
import 'dart:io'; import 'package:dart_periphery/dart_periphery.dart'; void main() { var config = GPIOconfig.defaultValues(); config.direction = GPIOdirection.gpioDirOut; print('Native c-periphery Version : ${getCperipheryVersion()}'); print('GPIO test'); var gpio = GPIO(14, GPIOdirection.gpioDirOut); print('GPIO info: ${gpio.getGPIOinfo()}'); print('GPIO native file handle: ${gpio.getGPIOfd()}'); print('GPIO chip name: ${gpio.getGPIOchipName()}'); print('GPIO chip label: ${gpio.getGPIOchipLabel()}'); print('GPIO chip name: ${gpio.getGPIOchipName()}'); print('GPIO chip label: ${gpio.getGPIOchipLabel()}'); for (var i = 0; i < 10; ++i) { gpio.write(true); sleep(Duration(milliseconds: 200)); gpio.write(false); sleep(Duration(milliseconds: 200)); } gpio.dispose(); }
app.conf
set_image localhost/{{PROJECT}}:latest add_devices /dev/ttymxc1 add_volumes /sys # for gpio add_devices /dev/gpiochip0 # for VPU and NPU add_volumes /opt/firmware:/opt/firmware:ro add_devices /dev/dri /dev/galcore # for video decoding add_devices /dev/mxc_hantro /dev/mxc_hantro_vc8000e /dev/ion # for video add_hotplugs video4linux # for audio add_devices /dev/snd # for weston add_volumes /run/udev:/run/udev:ro add_hotplugs input add_devices /dev/tty7 add_args --cap-add=SYS_TTY_CONFIG # set timezone add_args -e TZ=Asia/Tokyo add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app add_volumes /var/app/volumes/{{PROJECT}}:/vol_data # Add environment variables set by Atmark Techno. add_armadillo_env # flutter can fail with success exit code set_restart always # set network set_network host # launch flutter app and weston at container startup set_command sh -c 'flutter_launch > /dev/ttymxc1'
at_makoto.sato
佐藤です。
LED3の制御であればgpioを使う必要はありません。
以下でできるかと思います。
import 'dart:io'; import 'package:dart_periphery/dart_periphery.dart'; void main() { var led = Led('led1'); try { for (var i = 0; i < 10; ++i) { var inverse = !led.read(); led.write(inverse); sleep(Duration(milliseconds: 200)); } } finally { led.dispose(); } }
app.conf には以下を追加してください。
add_volumes /sys
app.conf を編集した後は、再度 [Generate development swu] で development.swu を作成して、
インストールし直してください。
at_makoto.sato
2024年10月3日 18時53分
佐藤です。
> 現在Flutterでアプリを作成しておりまして、
> そのアプリ内でFlutterを用いて、GPIOを制御したいと考えております。
dart_periphery を使用すれば可能かと思います。
コマンドラインから flutter アプリプロジェクトの下にある app ディレクトリに移動して
以下のコマンドを実行すると使えるようになります。
API 仕様などは以下を確認してください。
https://pub.dev/packages/dart_periphery