Amalgam Blog

カテゴリ: 開発

BricxccのEV3対応版のβ版が、公開されていました!!!
NXC EV3

Bricxcc EV3 -2-

バージョン番号としては、3.3.8.11
 Bricxcc EV3 -3-
かなり前から、公開されていたらしいです...
でも、EV3持っていないので試せない...
誰か、試したら、感触等をコメントで教えてください!!


ダウンロードは、以下から...
http://bricxcc.sourceforge.net/test_releases/ 

の、「test_release[リリースされた日付].zip」をクリックします。
 

2014年度のロボットのライントレースにPID制御を導入しようと、ここ数日、研究していたのですが...無理でした。
やはり、LEGO社のRCX用光センサーを床に密着させて使うと、PIDに必要な、反射の範囲(?)が確保できないようです。
一応、0~1023までの数値で取得する、RAWモードでも実験してみたのですが、ON-OFF制御と、ほぼほぼ挙動が変わらないため、ON-OFF制御を引き続き採用することになりそうです。
残念...
LEGO以外の光センサーを使う機会があったら、また、挑戦してみます! 

以上、近況報告でした。 

ロボット製作中...


現在、学校の部活動の時間に、ロボカップ2014シーズン向けのロボットを製作中です。
ロボットは、坂の登り・下りを考えて、とっても低重心になる予定...
完成が楽しみです。
 

慣性センサーとは...↓ですね。
XG1300L

例のジャイロと加速度が両方ついた、凄いやつです。(しかも、積分機能も!)
今回は、そのNXCでの使い方について説明します。 

続きを読む

いきなり専門用語です。

プリプロセッサとは…僕も説明しろと言われると困るのですが、簡単に言うと…簡単に言えません。
適当に言うと、プログラムの本文をコンパイルする前に先にコンパイルされて、プログラム全体に影響する特殊能力みたいなものを持っています。

Amalgamでは#include, #define, #ifdefを使っており、次の効果があります。
 
#include
指定したテキストファイルの内容をそのまんまそこにコピペします。
これでセンサーの設定や絶対に変更を加えない部分をまとめる事が出来ます。
僕等の場合、距離センサー(通称DIST)の設定に使っています。
元が何百行もあってしかも意味不明な文字の羅列なのでちょうどいいです。

#define
確実に一番多く使っています。
どんな事が出来るかというと、「定数」を作る事が出来ます。
例えば「
#define A 10」と打てば、Aと言う入れ物に10という数字が入り、プログラム内での変更は出来ません。
センサーの閾値など、数値を固定したいときに便利です。
また、便利な事に数値だけでなくテキストも 入れる事が出来、例えば「
#define SET_I2C_S1 SetSensorLowspeed(IN_1)」と打ち込み、その後SET_I2C_S1と命令すればSetSensorLowspeed(IN_1)と命令したのと同じになります。凄く便利です。これのおかげでプログラムが解りやすくなります。
この「
#define」は応用性が非常に高く、他にも使い方がたくさんあります。

因にこれ、全関数・タスク内で有効になるのでその点でも便利です。 

#ifdef
一種のスイッチのような物で、ON/OFFを切り替える事で、プログラム本文の指定した場所をコンパイルしな事が可能です。
様々な状況を想定し、それに対応したプログラムを作った時の使い分けに便利です。

他にも#ifndef, #endif, #if, #elif, #undef, ##, #line, #error, #pragmaがあります。
はっきり言って用途が解りませんが調べれば簡単に解ると思います。

で、Amalgamではこのプリプロセッサだけで50行使っていますが、人によっては200行あったりプログラムの半分がこれだったりと、いろいろです。
もちろん全く使ってない人もいます。

ではでは 

このページのトップヘ