忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[78]  [79]  [80]  [81]  [82]  [83]  [84]  [85]  [86]  [87]  [88
今まで、このカテゴリーでは、

PWMの説明

アナログとデジタル

・回路作成に必要なもの 材料 工具

電流、電圧、電力について

・抵抗の話 123

・コンデンサの話 1234

回路図について

・ダイオードの話 123


と、このように色々な説明をしてきました。

まぁまだまだ回路についての記事は沢山書けるもの(特に素子の紹介)があるのですが、


とりあえずそれは置いておいて、今回、ようやくPICについての話をしようと思います。
PICの例です。懐かしい黒歴史ですね
PICというのは講習でもやったように、Peripheral Interface Controllerの略で、


要するになにかというと、ちっちゃなコンピューター=マイクロコントローラー、所謂マイコンの一種です。
専門用語だとLSIの1種っていう扱いになるんですけど・・・めんどくさい!


まぁPICはその中でもちょっと性能は残念だけど、

資料も多くて使いやすく、安いことから世界中で(主に日本だけど)人気があるマイコンです。

マイコンというのは・・・電気で動いて、プログラムをPCから書き込むことで、色々な動作を行うことができる・・・

所謂RCXNXTの中の人、と言ったらいいでしょうか。そんな感じものです。人間でいう頭脳だね。


それでこのマイコンたちは全部、デジタルで動いています。

つまり電圧があるorない、これだけで全てのプログラムを電気的に表現して、動作をしています。


ちょっと難しいですね。まぁ要するにマイコンの中には沢山スイッチがはいっていて、

そのスイッチがついているかついていないか、これを内部で判断して別のスイッチを付けたり消したり・・・

ということを何千何万と行って動いているということです。実際はちょっと違いますけど・・・まぁこんなもんでしょう。


それで、そのスイッチの開け閉めを命令するのがプログラムと、まぁこんな感じです。

そうそう、PCとかでよく、クロックの周波数、とか聞きますよね、1.6Gとか2.4Gとか。最近は3G越えも珍しくないですよね。

あれはそのPCが一秒間でスイッチを開け閉めできる回数を意味しているのです。

つまりクロック数が1Gとかだと1秒間に10億回スイッチの開け閉めができるという訳です。

無論この回数が多くなればなるほどプログラムの実行の速度が速くなりますよね。

だからクロックが速い方がPCの動作は早いのですね。

まぁこのクロックというものは、もちろんマイコンにもついていて、

PICの場合だと大体8~120MHzくらいものがありますね。PCを比べると極端に遅いことがわかります。


また、古いPICだとこのクロックを生み出す発振子がPIC内部に搭載されていなかったりするので


このようなセラミック発振子を使ったりしていました。
セラミック発振子です。昔はよく使ったなぁ・・・因みにもっと精度のいいやつに、水晶発振子ってのがあります。時計などでは定番ですが、ちょっと問題があってPICではあまり使われません。
今のPICは発信子が内蔵されていますのでこれは必要ありませんね。 


そういった経緯があって今のPICは電源をつなぐだけで動作してくれるといっていいでしょう。

昔と比べて非常に簡単になりました。


まぁこれなら誰でも扱える・・・はず!


という訳で今日はPICについてさらっとお話ししました。


もうちょっと深いところはまた今度ということで


それではそれでは。

(^・ω・)ノRadiumProduction in RoboCup Junior
改悪だろこれ。見にくい・・・(笑) 

という訳で、以前お話しした耀に今回は、scanf文のもっとコアな使い方について説明したいと思います。

前回の話では、通常はscanfの文は


こんな風や、

scanf("%c",&s);

こんな風に

scanf("%d",&x);


記述することで、キーボードから値を入力することができるものであるというで辺りで終わったかと思います。


今回はこの入力をもっと複雑に行う方法について紹介します。

例えばこんな感じのプログラム。

#include <stdio.h>
int main(void)
{
     char s;
     printf("PIC講習は終了しましたか?(y/n)");
     scanf("%[yn]",&s);
     printf("貴方の答えは%cです。",s);
     return 0;
}



このプログラムだと、scanfは小文字のyとnしか認識しません。

yかn以外の文字や数字が入力された場合は、強制的に読み取りを中止します。

つまりyかn以外の返答は無視されるようなプログラムが作成できます。


このように[]内で指定した文字のみを入力し、それ以外を入力しないシステムを、スキャン集合指定子といいます。

なんだかフィルタのようなものですよね。実際そんな感じです。



でも、この読み取る文字が例えば、数字以外、なんて感じにしたい場合に、これだと大変ですよね。

なので逆に今度は「読み取らない文字」を指定する方法を紹介します。

#include <stdio.h>
int main(void)
{
     char s;
     printf("評価を入力してください(A~Zランク)");
     scanf("%[^0123456789\n]",&s);
     printf("評価ランクは%cです。",s);
     return 0;
}

このように読み取らない文字を指定する場合は、先程と同じように指定したい文字を[]で囲います。

そして指定する文字の前に^を付けます。これで読み取らない文字の指定をすることができます。


このプログラムで読み取らない文字は0から9の数字と\nという記号です。

これは\とnではなく、\nで一つの記号を意味しています。記号の意味はズバリ、「改行」です。

C言語においては、改行を\nという記号で示しているのです。これをそのまま改行記号といいます。

だから例えばprintfで








と表示したい場合は

printf("あ




");

と記述するのではなく、

printf("あ\nい\nう\nえ\nお\n");


と記述すればいいという訳です。


また先程の0から9の指定は

scanf("%[^0-9\n]",&s);

このようにハイフンを使って簡略化することができます。

これは全てのコンパイラで対応している訳ではないんですが、

一般的に使える方法なので覚えておくとさらに便利ですね。



まだまだscanfには色々と複雑な記述方法がありますが、

scanfだけをいつまでもぐだぐだやっている訳にもいかないので、

scanfの話はこの辺で一度終了とさせていただきます。

まぁまた時間があればこの話はしていこうかな。

それで次回ですが、次回はいよいよ条件式、まずはif文について書いていこうと思います。


それではまたまた。

(^・ω・)ノRadiumProduction in RoboCup Junior
今日の講習会は、PICについての一連の開発の流れを紹介しました。

これでもう総書記様はPICについては完璧になってくれるでしょう。

という訳で部のPIC講習は今日で終了いたします。


詳しい内容は今度。

(^・ω・)ノRadiumProduction in RoboCupJunior
 産技祭とは?


所謂一つの高専祭です。昨年、名称変更されたようです。

でもやっぱり高専祭で定着していますからね。産技祭と呼んでいる人はごく少数派です。


という訳で、ここでも高専祭ってことで記事を書いていきます。

産技祭って言っても誰もわからないからね(笑)



まぁなんでロボカップで高専祭に出店するという話になったかといいますと、

端的に言って「おカネが殆どない」からなんですね。

LEGOで作る際には学校に部品があるので、何の問題もないのですが、

やっぱり自作などをする場合、ロボットの作成を全部自費となると、結構痛い額きちゃうんですね。


となるとやはり方法はひとつ。「稼ぐしかない。」

という単純思考です。


そしてもう一つの目的、金儲けという大きな目的の陰になっているのですが、これも結構大きいです。

実は昔はロボカップは高専祭でちゃんとまともな出店をしていたんです。

なんか競技会とかもやっていたl記憶があります。まぁ5年以上前の話のような気もしますけど。


なのに、ここ数年はニートしてます。他の部活は色々してるのに・・・さすがにこれはマズくないですか?色々と。

という訳です。部活の宣伝もしなくちゃですしね。来年度の新入部員の為にもね・・・

そんな感じで、今年は高専祭も視野に入れての活動をする予定です。


なにをするかといいますと、うーん大会の宣伝とか、過去の戦歴と最近の黒歴史の暴露


あとはRCXのロボットを大量にサッカーフィールドに押し込んで暴れさせる、という恒例の

いつもやっているよくわからないアレとか・・・


にプラスしてなんかネタ商品の販売でもしようかと考えています。

此方の方はどう考えてもロボカップと関係ないものを販売することになるでしょうが。

当初ユッケも考えましたが、食べ物は衛生上色々めんどくさそうなので、

回路でも、キホルダでも作って売ろうかなの流れになってきています。

まぁまだ正式にやるかも決まっていないのでアレですが、

財布に余裕のある方は高専祭にぜひ来ていただけると嬉しいです。

10月の29,30日に開催ですよー。

それでは。今日は4か月後の宣伝でした。


まずは出店の顧問の先生みつけなきゃ。


(^・ω・)ノRadiumProduction in RoboCupJunior
講習は副部長にお任せです。

まぁ月曜日の短い時間の中でやったことを時間のある火曜にのんびりとやるわけですから、

副部長の能力なら問題なく終わらせられたことでしょう。


此方はというと・・・

「実技試験なのに算数の計算があるなんて・・・くそぉ。」

線の切る長さを間違えまくりました。(っていうか最初の時点で長さ足りないし!)

ってあ。被膜もげた(笑)

みたいなことをずっとしていました。この先・・・大丈夫か?


今日はそんな感じで過ぎていきました。


とりあえず来週、ダンスのプレゼンの発表会とクリーンルームの掃除を行います。

時間的に掃除の方を優先したいので、もしかしたらプレゼンの方は次週に先延ばしになるかも知れません。


どうにせよ、掃除は行うので、部員の方はできる限り参加してください。


あと、ロボカップ初心者の部員はサマーチャレンジに参加するような方向の流れの話が今着ています。


多分参加することになると思いますので、該当する部員は腹をくくってください。

それでは。詳細は後日。


(^・ω・)ノRadiumProduction in RoboCupJunior
8限終了後に部室に集合してくださいな。

PCと電池をお忘れなく。

といっても今ここに書いて何人見てるやら・・・(笑)


 今日はNQCの基本的な使い方と単純なプログラムについての講習会を行います。

事前予告したとおりですね。

なんかUSBタワーのwin7とMACでの動作が不安定なので

下手したらソフトのインストールだけで終了するかもしれませんが・・・・

まぁそれはないようにしたいですね。


ちなみに明日の講習会ですが、電気工事士の講習があるので、

僕は途中から抜けて、それ以降は副部長に全部任せることになります。

なので頑張れ副部長(笑)

また、講習会とは関係ないですが、今度クリーンルームの掃除も行いたいと考えています。


まぁその時は事前告知するので、なるべく皆さん来るようにしてください。


それでは。


(^・ω・)ノRadiumProduction in RoboCupJunior
今年度、うちの部活で完全封印したソフトがあります。

その名はROBOLAB。さて、どういったソフトなのでしょう。

まず、起動してみます。
まずこんな感じの画面が出ます。僕のPCの場合、ほんの一瞬ですけど。
まずこんな画面がでます。この画面の出ている時間はPCのスペックに反比例しています。

つまりこの画面の出ている時間で自分のPCのスペックがわかるという、

素晴らしい機能がまず最初に作動するという訳です。

特に意味はありませんが。



そしてこれが終わるとこんな画面に。
ROBOLABのメニュー画面です。これは2.9.4なのでなんか上の方に色々くっついています。確か他には2.9.3と2.9と2.5.4と1.5ってのがあったっけ。因みに2.9はトラウマです。

ここで右下の終了を押すと
ROBOLAB終了のお知らせ。

このように表示されてここで「終了」を押すと、RABOLABが終了します。


これがあらかたのROBOLABソフトウェアの使い方は説明したかと思います。











・・・と部活の講習ではこういった感じの説明をしてROBOLABについては一切話さない予定なのですが・・・


これではROBOLABを作ったタフツ大学とNational Instruments 社に怒られそうなので続きの説明を行います。

まずさっきの画面でプログラマを選択します。

それでこの画面に、因みにファームを入れる際にはアドミニストレーターを開いてください。
パイロットとインベンタ、君はどっち?

それでパイロット1からインベンタ4までで使いたい環境を設定します。

パイロットは本当に最初の最初、最小限のことしかできないのであまりお勧めしません。

1から4の数字はなにが違うかというと、使えるプログラムの命令の種類が違います。

数字が大きい方が多いです。

という訳で、ここでは一番大きなインベンタ4を動かしてみます。

一回クリックすると光って隣の欄ができます。因みに隣の欄も光らせるとさらに隣の欄ができて、一番右の欄の項目を光らせるとそれに応じたサンプルプログラムが出てきます。

とりあえずはこんな感じになります。
後ろは音声編集ソフトです。ROBOLABとはなんも関係ありません

右下にあるパレットから命令を引っ張り出して真ん中の白いところに置いて、

それをピンクの線でつないでプログラムするという仕組みです。


例えば、単純にロボットを一秒間前進させて停止させるプログラムだと、

ロボットを1秒間前進させて停止させるプログラム。ROBOLABでプログラム作るの何年振りだろう・・・?

こんな感じです。青信号がプログラムの開始、赤信号がプログラムの終了を意味しています。

その中で灰色のモーターっぽいやつがモーターを動かす命令です。

ここではAモーターとCモーターを駆動させることを別々に命令しています。

その次の黄色い時計みたいなものが、時間待ちの指定です。これは一秒待ちの命令なので、

A,Cモーターを駆動させたまま、1秒間その状態を保持するという命令です。

最後の真赤な丸がモーター停止の命令。これをいれることで1秒たった後でモーターは停止します。


まぁこのような感じでプログラムを作っていきます。


そのパターンで作られたレスキューのプログラムが此方。

これは恐らく2007か8のJAPANオープンの時のプログラムでしょうか?あんまり記憶にない・・・


殆どなんにも無いように見えますが、下のタスクバーを見てください。

プログラムが巨大すぎて、全然画面に収まり切っていないのです。


この時のプログラムは4Mbyteほどいったでしょうか。RCXにダウンロードできるギリギリのサイズのプログラムでした。

当時だとROBOLABでこれだけのサイズというのは他に見たことがないですね・・・悪い例の一つということで・・・

このような感じでROBOLABではプログラムを作っていきます。

またプログラムを開いた状態からROBOLABを終了させる際にはCtrl+Qを使います。

すると、まずこのような画面が出て、
viとはプログラムことです。ROBOLABのプログラムの拡張子はviですからね。


ここで終了を押すとこうなって
いちいちしつこいですね・・・。これでも普通に右上のバツ押すよりは早いんですよ


ここで終了を押すと勝手に終了します。

プログラムの変更が保存されていないと、保存の確認はちゃんと聞いてくれるのでその辺りの心配はいりません。

とまぁこれで簡単な説明は終了です、命令の説明とかはROBOLABのヘルプがやってくれるので省略します。


こんな風に便利なROBOLABですが、プログラムが複雑になると意味不明になる上、

どうにも容量を食うのでうちの部活では封印しました。

うちの部活ではこれの代わりにNQCというものを採用しています。

まぁ時間があればこちらの説明もいつか行おうと考えています、

それでは。


(^・ω・)ノRadiumProduction in RoboCupJunior

P.s 
よく、ROBORAB とかROBOLABOとか、酷い時にはROBORABOと間違われることがあるそうです。

プログラムの記事の続きです。

前回は文字の出力の仕方について記載したかと思います。

今度は逆に文字を入力するときについて記載しようと思います。


入力した文字(一文字)を出力するプログラムはこんな感じ




#include <stdio.h>
int main(void)
{
     char s;
     printf("文字を入力してください。");
     scanf("%c",&s);
     printf("入力された文字は%cです。",s);
     return 0;
}

数字だとこんな感じになります。

#include <stdio.h>
int main(void)
{
     int x;
     printf("数字を入力してください。");
     scanf("%d",&x);
     printf("入力された数字は%dです。",x);
     return 0;
}

とまぁこのようなプログラムになります。数字の時はint型を、

文字の時はchar型を使っている。ただそれだけの違いですね。

それで大体感じで分かるとは思いますが、このプログラムはどちらも入力された値を変数に入れて、

そのままprintfで出力するというものです。

プログラムを実行して、キーボードで文字や数字(文字の場合は一文字のみ)を入力すると、

その入力した文字が表示されるというものですね。




pirntfがわからなければこちらの記事を参照ください。


このプログラムで値の入力を行っているのが、6行目のscanfという文です。

文の書き方はprintfに似ていますね。括弧があって、””でくくわれていて・・・

一般的なscanf文の書き方はこのようになっています

scanf("変換指定文字",&値を入れたい変数名);

この変換指定文字というのがprintfでもでてきた%dや%cのことです。

int型の整数のときには%dを、char型の文字の時には%cを使います。

またfloat型やdouble型の時は一般的に、%fを使います。指数表示させたい時は%eになります。




値を入れたい変数名とはそのままの意味です。上のプログラムだとsとかxになります。

ここで重要なのが、printf文の時はカンマの後にすぐ変数名になりましたが、

scanf文の場合は、カンマと変数名の間に&が入ります。


なぜこれが必要かという話はアドレスというものを理解しなくてはなりません。

その話はこのペースだとだいぶ先になるので、今はこういうものだと割り切ってください(笑)

まぁこのような感じでscanf文は使います。


次のProgram記事ではscanf文のもうちょっと発展した使い方を紹介します。


それでは

(^・ω・)ノRadiumProduction in RoboCup Junior
予告通り、総書記様と秋葉の方に凱旋に行って参りました。今週3回目(笑)

とりあえず今日の目的は電気工事士の実技試験の材料の購入と、PIC講習の第一回目です。

 
副部長もソフトを買うということだったので、途中まで3人で行くことに。

まぁ駅で副部長とは別れる訳ですけど・・・。

そしでまず向かったのが、実技試験の材料購入です。これが大きな間違いだったね。

まぁ3度目の正直を目指して正直焦っていたんですね。それがこのような惨劇を生むなんて・・・予想外でした。


その惨劇の内容というのが・・・

材料、重い(笑)

7㎏ほどあったでしょうか。無茶苦茶に重いです。


これをもってこれからのPIC講習基、部品の買い出しに行くのか・・・。

何度帰りたいと言ったことか。でも、もう後の祭りです。

とりあえず秋月と千石に行って適当に買い揃えました。


買ったものは・・・PK2とPICと回路部品と・・・みたいな感じです。

また、色々議論を重ねた結果、今回の講習で扱うPICが、24FシリーズのJ64GA002に決まりました。
PIC24FJ64GA002、世界大会でも使用したPICですね。うちの部活の定番のPICです。

アナログの数とかが要因ですかね。あと動作速度とか、値段とか。

まぁとにかくこれでやっていきますよ。爆発しない程度に・・・


そんな感じで時間が過ぎ、遊びで寄ったツクモのロボットショップを出た時には6時を過ぎていました。

そしてその後、時間が余ったので、テクノロジアに行ってみたら・・・

完全に事故ですね。まさか・・・こんなことって・・・

orz


という訳で第一回目の講習は回路部品の購入で終了しました。

次は・・・PICについて・・・かなぁ?それとも電源に走るかも。まだ未定ですね(笑)

とりあえずリアルの講習の内容はそのままこっちの記事にしていこうかなー。なんて考えている次第です。

なので、記事見てたらいつの間にかPICができるように・・・!みたいな記事が書けると・・・いいな。

まぁそのような感じで講習はやっていこうと思っています。

それでは今日はこの辺で。


そういえば今日、UDXの前でこれが踊ってました。
知ってますか?あと7日でアナログ終了ですよ!?
帰ったらニュースになってたなぁ。なんだったんだろう。

(^・ω・)ノRadiumProduction in RoboCupJunior
今年も暑いです。

特に今年はうちの学校は冷房が止まっているので 死ねるような暑さです。


まぁこういう季節がやってきたということですね。

と。いうことは・・・今年も・・・


サマーチャレンジ・・・やるんですね(笑)ルールが発表されていました

今年はどうも、次年度の大会が近いこともあってか、

今までの鬼畜ワンワン(満点が絶対に出ないといわれている)は初心者用競技ということになっていて、

中、上級者はロボカップジュニアのサッカー、レスキューの競技をオマージュしたような競技をする。という風に、

競技を合計で3つに分けられているのが大きな特徴でしょうか。というよりこれからはこのスタンスで行くのかな?


会場はいつも通りうちの高専の中央ホールです。日付は8月の28日、8月の最後の日曜日ですね。


なんかレスキューはシンガポール世界大会で行われたレスキューCのような競技を行うようです。

なかなか面白そうだけど、うーん。今年のトゥルースのレスキューの競技結果を見るとなぁ・・・

レスキュー、やっちゃっていいのかなぁ(笑)


まぁ練習競技会ですし、細かいことは気にしないことにしましょう。


とりあえず暇なときにでもルールの解析でもしようかな・・・でも暇なときないか(笑)


それでは

(^・ω・)ノRadiumProduction in RoboCupJunior
まさか2があるなんて(笑)

今日はRCXのボタンの説明でもしたいと思います。
RCX作品2作目、RCXピラミッドです。もっと頑張ろうよ。自分。























RCXはこのように液晶の4隅に赤、緑、黒、灰の4つのボタンがついています。

まぁボタンの上に書いてあるのでわかるとは思いますが、赤いのが電源ボタンです。このボタンを押すと電源が入ります。

んで電源が入るとこんな画面が出てきます。
RCXの電源が入るとこんな感じになります。
真ん中の数字はロボットの電源が入ってからの時間を示しています、

秒単位だったり、分単位だったりしますが、それはファームウェアによって違います。

また、この数字が表示されていない場合はファームが入っていない状態を指します。

NXTと違ってファームがなくても電源は入るので注意してください。

そんで数字の右に、人のような何かがいると思います。これがプログラムの実行の有無を示しています。

プログラムが動いていないときは静止していますが、プログラムを実行すると、足踏みをしだします。


それでその隣の数字が現在のプログラム番号を指しています。なので写真だと3番ですね。

RCX
NXTと違い、5個しかプログラムを入れることができません。

そしてそれはそれぞれ、プログラム番号1番から5番という感じで割り当てられます。

何番にプログラムを入れるかはプログラムのダウンロードの時に決めることができます。

普通は1番2番がロックされていますが、ロックを解除すれば入れることができます。


このプログラム番号は灰色のボタンを押して変更することができます。


また、プログラムの実行、停止は緑のボタンです。押すと現在表示されているプログラム番号のプログラムを実行します。

まぁこれは簡単ですね。押すだけですから。


最後に黒のボタン、これは、センサーの値とモーターのパワーを表示します。

只、一個ずつしか表示ができません。一回押すと1のセンサー、また押すと、2のセンサー

また押すと3のセンサーAモーターBモーターCモーターと変わっていきます。


ぶっちゃけモーターに関しては実用性が皆無です。


とりあえずはこの辺でしょうか。あと、RCXのプログラムメモリがいっぱいになると

ピザマークとか言われている謎のべイル↓的な物が画面上に出てきます。
これはベイル。
まぁこの状態でも問題はないですが、重いプログラムとかが入らなくなる恐れがあるので、

時間があるときにでも、ファームウェアを再インストールなどをして消しておくといいでしょう。


まぁとりあえず今日の説明はこの辺で


ではーノ


(^・ω・)ノRadiumProduction in RoboCupJunior
カレンダー
08 2026/09 10
S M T W T F S
1 2 3 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
最新CM
[05/09 ONE RoboCuper]
[05/07 HDD ほしいよー]
[04/21 ブラック3辛]
[12/26 bols-blue]
[06/08 ONE RoboCuper]
かうんた
カウンター カウンター
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
性別:
男性

PR

忍者ブログ 2007-2021,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...