Vinsentのプログラム
VinsentにはM16Cというマイコンを使用しています。
若松通商で購入したOAKS16-MINIというやつで、小さかったのと1500円程度と安かったのが決めてです。
今日はそのマイコンにアップロードしているプログラムを大胆にも公開しちゃいます。(恥かしい!!)
先にいっておきますが、非常につまらなく(高級な技術は何もない)非常に汚い(デモ演技をコーディングするとだんだん汚くなる)プログラムです。少なくとも、現在自分でコーディングできている方は、興味本位以外では全く見る必要のない程度の代物です。
しかも、Robo-Oneに出たときのままです。公開用に整理したり、コメントを追加したり、不要な部分を消したりしてません。不親切きまわりないです。
でも、ですよ。プログラミングの基礎は本で勉強したけど、実際にサーボ動かす自信は無いとか、予選演技はどうやるんだろうとか、PS2のコントローラと通信したりコントローラのバイブを動作させるにはどうするんだろうとか、今は市販のロボ専用ボードとモーションツールを使っているけど今後は自作してみたいと思っているとか、冷やかしとか、きっと必要と思ってくれる方がいると信じて恥を忍んでの公開です(笑)
mini1.txt
ファイル名がmini1.txtとなっていますが本当はmini1.cです。コンパイルする場合は拡張子を変更してください。mini1.cっていうファイル名からしてプログラム作成のやる気の無さが伝わるかと思います・・・
(サンプルで付いてくるプログラムを改造したのでファイル名がそのままなのです・・・)
すごく簡単に概要を説明すると
・最初にモードを決定します。モードには232Cによるモーション作成モードと、PS2PADによる操作と、予選演技と、写真撮影用ポーズのモードがあります。モードの変更は回路図で言うところの4つのDipスイッチでマイコンの電源ON前に行っておきます。
・PS2PADとの通信では普通のIOポートをちまちまON/OFFして行っていますが、どうやらPS2の通信と言うのは232Cの仕組みと同じらしい。このプログラムは結構無駄なことをしているかもしれません。それでも一応通信しています。本来(PS2)は2μs周期を基準で通信するらしいのですが、Vinsentのプログラムでは4μs周期(処理速度的にいっぱいいっぱい)で通信を行っていますが、一応通信できています。ちゃんと232Cの仕組みで行えば2μs周期の性能が実現できるのかも知れません。
・Vinsentは3種類のサーボを使用しています。KOやGWSと比べてJR(PRS)はパルス幅が異なります。私のプログラムでもJRの時は別の係数で算出していますが、実は計算方法が間違っています(OFFSETの値がおかしい)。簡単に直せるのですが、気が付いたのが遅く、作成済みのモーションデータを直すのが怖かったのでそのままにしてあります。
以前に公開した回路図をみて不思議に思った方もいらっしゃると思いますが、サーボへの信号出力ポートが飛び飛びになっています。なんでかというと、なぜか出力できなかったのです。他のIOポートと同様にコーディングしたのですが、PortNo.12,13,14,15は信号が出力できませんでした。原因は今でもわからないのですが、きっと232C通信のモードか何かに初期値でなっていてそれを切り替えなきゃいけないんだと疑っています。(でも方法はマニュアル見てもわからない・・・)
さらにPortNo19は、なぜかLowの値が0.5V(他のポートは0V)なのです。特に問題にはならないと思いますが、きっと特殊なポートなんだろうと思って未使用にしています。お願いです。誰か教えてください。m(__)m
若松通商で購入したOAKS16-MINIというやつで、小さかったのと1500円程度と安かったのが決めてです。
今日はそのマイコンにアップロードしているプログラムを大胆にも公開しちゃいます。(恥かしい!!)
先にいっておきますが、非常につまらなく(高級な技術は何もない)非常に汚い(デモ演技をコーディングするとだんだん汚くなる)プログラムです。少なくとも、現在自分でコーディングできている方は、興味本位以外では全く見る必要のない程度の代物です。
しかも、Robo-Oneに出たときのままです。公開用に整理したり、コメントを追加したり、不要な部分を消したりしてません。不親切きまわりないです。
でも、ですよ。プログラミングの基礎は本で勉強したけど、実際にサーボ動かす自信は無いとか、予選演技はどうやるんだろうとか、PS2のコントローラと通信したりコントローラのバイブを動作させるにはどうするんだろうとか、今は市販のロボ専用ボードとモーションツールを使っているけど今後は自作してみたいと思っているとか、冷やかしとか、きっと必要と思ってくれる方がいると信じて恥を忍んでの公開です(笑)
mini1.txt
ファイル名がmini1.txtとなっていますが本当はmini1.cです。コンパイルする場合は拡張子を変更してください。mini1.cっていうファイル名からしてプログラム作成のやる気の無さが伝わるかと思います・・・
(サンプルで付いてくるプログラムを改造したのでファイル名がそのままなのです・・・)
すごく簡単に概要を説明すると
・最初にモードを決定します。モードには232Cによるモーション作成モードと、PS2PADによる操作と、予選演技と、写真撮影用ポーズのモードがあります。モードの変更は回路図で言うところの4つのDipスイッチでマイコンの電源ON前に行っておきます。
・PS2PADとの通信では普通のIOポートをちまちまON/OFFして行っていますが、どうやらPS2の通信と言うのは232Cの仕組みと同じらしい。このプログラムは結構無駄なことをしているかもしれません。それでも一応通信しています。本来(PS2)は2μs周期を基準で通信するらしいのですが、Vinsentのプログラムでは4μs周期(処理速度的にいっぱいいっぱい)で通信を行っていますが、一応通信できています。ちゃんと232Cの仕組みで行えば2μs周期の性能が実現できるのかも知れません。
・Vinsentは3種類のサーボを使用しています。KOやGWSと比べてJR(PRS)はパルス幅が異なります。私のプログラムでもJRの時は別の係数で算出していますが、実は計算方法が間違っています(OFFSETの値がおかしい)。簡単に直せるのですが、気が付いたのが遅く、作成済みのモーションデータを直すのが怖かったのでそのままにしてあります。
以前に公開した回路図をみて不思議に思った方もいらっしゃると思いますが、サーボへの信号出力ポートが飛び飛びになっています。なんでかというと、なぜか出力できなかったのです。他のIOポートと同様にコーディングしたのですが、PortNo.12,13,14,15は信号が出力できませんでした。原因は今でもわからないのですが、きっと232C通信のモードか何かに初期値でなっていてそれを切り替えなきゃいけないんだと疑っています。(でも方法はマニュアル見てもわからない・・・)
さらにPortNo19は、なぜかLowの値が0.5V(他のポートは0V)なのです。特に問題にはならないと思いますが、きっと特殊なポートなんだろうと思って未使用にしています。お願いです。誰か教えてください。m(__)m
この記事のトラックバックURL
http://hiderobo.blog26.fc2.com/tb.php/9-f8c002d3

