忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[80]  [81]  [82]  [83]  [84]  [85]  [86]  [87]  [88]  [89]  [90
3年生は一足早く一日目が終了しました。

教科は電気と政治経済。一部の人は物理もあったっぽいです。

まぁ適当に済ませ、(コラ)2日間のインターバルにはいるかな・・・と思いきや。


実は明後日、第2種電気工事士の筆記試験があったりします(笑)


インターバルなんてなかった(笑)なんで毎年試験期間に被るんだろう。

要するに資格試験ですね。どういったものかというと、まぁ基本的な電気工事をするための免許を取るための試験です。


例えば、身近なところだと、コンセントとか、コンセントとか、コンセントとか。

屋内の内装の配線等を主にするための資格です。


実はコンセントといじるのにも免許いるんですよね。

結構みんな普通に家のコンセント勝手に増やしたりしていますが、実は自宅でも違法なんですよー。


まぁこれ本来は電気科の人が受けるようなものなのですが・・・まぁ暇だし単位になるし、とっとくか。みたいな感じです。


本当は去年受けたかったんだけど、存在を知った時には既に締め切りすぎてましたからね。残念。


まぁでも2種ははっきり言って簡単で、筆記は落ちる人4割ぐらいしかいないそうです。

うちの学校なら9割は受かるんだとか。

まぁ僕も友達もノー勉で過去問やって先生の言う合格ボーダーラインを割った点数をとったことがありません。

要するにそういうことなのでしょう。結構みんな受かるんですよ。きっと。


なんて油断をしているとこれは確実に落ちるフラグなので明日ぐらいはちょっと勉強しようかな・・・受験料払ってるし・・・

学校で朝から講習もやっているようなので行ってみようかと思います。

それでは今日はこの辺で


月曜日、線形に電子回路に電磁気だ・・・最初と最後が詰みに詰んでいる・・・(笑)

(^・ω・)ノRadiumProduction in RoboCupJunior

やっべノー勉(笑)

まぁなんとかなるでしょう。


そんなことより今年のロボコンの予算を確認したのですが・・・


これじゃなんにも作れない・・・ってくらい少ないです(泣)

額でいうと某サ○○オ高専の○分の1ぐらいの金額でしょうか。


これは自己負担額が楽しいことになるかも知れませんね。または中途半端に残念な物作るパターンかも・・・


まぁ結局金貰ったところで、みんな基本的にお金の使い方とかわからないので

結果変わらないと言われればそれまでなのですが・・・

でもこれ、どうするんでしょうね(笑)「時間もないお金もない場所もない」例年のパターンが始まりました。

しかも今年は「人もいない」のおまけつきです。あれ?いつも以上にひどい・・・?


ちょっと昔の年には大会当日にまだ学校でロボット作っていた年もあったらしいのですが、

今年はそのルートに入ってしまっていたのでしょうか?


どうしようか・・・。といっても時間は戻ってこないし、部員はもう絶対増えないし、結局この辺は考えても無駄ですね。

いつも毎年その対策考えてさらに時間削ってるんですよね(笑)


全くどうしたものやら。


今思ったけどロボコン関連の記事って大体愚痴で染まってますね(笑)


(^・ω・)ノRadiumProduction in RoboCupJunior
これは先週わかった事項なのですが、どうやら今年のロボコンまで実質あと10週間しかないみたいなんです。


え?普通に間に合わない・・・。

只でさえ夏の計画停電や大会の前倒しで時間がないのに、この人員不足では・・・厳しい・・・


機械班によると、機械を作れる人が、今のところ3人しかいないそうです。一体どうすればいいんだか。

回路担当の人間が機械やるようなことをすると言う話もでていますが、逆に足を引っ張るような気がしてなりません。

機械作業経験ほぼ0の人が大半ですから・・・まぁ無理と考えるのが妥当でしょう。


この打開策をなんとかして編み出さなくては、今年はまともにロボットすら作れてないような状態になるかも知れません。
一年生もこっちは殆ど取れなかったし・・・

実はこの部員不足の問題は去年の秋には既に分かっていたのですが、

何故なんだか、中核が誰も対策をとらなかったようなのですね・・・


一体どうなっているんだか。

(^・ω・)ノRadiumProduction in RoboCupJunior
簡単に説明すると、今後10年以内に国内の原子力発電所を全て廃炉にして、

それによって不足した電力は他国の原子力発電所から売電してもらう。というもののようです。


なんのための反原発だか、意味不明です(笑)

結局あの辺の国は全部陸続きだから国の境が放射線濃度の境になるわけでもないのに・・・



という訳で今日は・・・実はまったくネタがありません。

ひとつあるといえば部員に対しての連絡事項だけですね。

試験明けの月曜日に会議がありますよ。いつもの時間にいつもの場所で。

といってもメールしたから大丈夫・・・かな?

一応年度最初の会議なので全員参加してください。ということが言いたかっただけです。


まぁそれよりも今は試験の方が大事・・・といっておくべきなのかなぁ。

でもうちの学校の試験って基本的に簡単だけど、詰んでる教科は勉強とか無意味なぐらいに詰んでるからなぁ・・・


平均が8割5分を超えるようなテストもあれば、2割に届かないようなものも稀にあるようなので、

しっかり勉強する教科は考えた方がいいかもしれませんよー(笑)一年生にそんな危ない教科ないけど


例えば今日発覚したのが3年の情報のテスト。

プログラム自体はまだ全然簡単なことをやっているので楽勝!なんて思っていましたが、

今日試験範囲を聞いてクラスの壊滅が予知されました。

このような具合に。

先生:試験範囲ですが、~(中略)~よって、漸化式も覚えていた方がいいと思いますよ。

生徒:漸化式って・・・何!?


1年の頃に数列でやったと先生は主張しましたが、一年のころのプリントを見返してみても、そんなものはありません。

そもそも、覚えていないんだからやっているはずもありません。

とりあえず即帰してでググってみたら、なんか差分方程式なんていうものが。

・・・なにこれ?



という訳で部員の皆さん会議遅れないように、ということでした。

それでは。


(^・ω・)ノRadiumProduction in RoboCupJunior
一昨日のプログラムの記事の続きです 。

今日はいきなりですが、変数というものについてのお話をしようと思います。


変数とは、まぁ所謂箱です。

プログラム上でいう箱なんです。


まぁ何を入れる箱かというと、具体的には値、即ち数値です。

ROBOLABでいうところのコンテナというやつです。

例えばセンサーの値だったり、時間の値だったり、まぁ色々です。

そういった数字を入れておく箱みたいなものだと思っていてください。


そんでもって変数は計算を行うこともできます。変数内の値を足したり引いたり・・・と色々できます。


また変数にはいくつか種類があって、この種類を型といいます。変数の型には、よく使うもので・・・

説明(簡易)
char 文字の格納に使われる。
int 整数の格納に使われる。 
float 少数の格納に使われる。 
double 少数の格納に使われる。 

このようなものがありますね。

まぁあとはlongとかshortとかbyteとかがあるかな。

変数という概念はC以外でもあっちこっちにあるので、結構言語によって色々な型があったりします。

なので、たくさんの言語を知っていると、こんがらがること必須ですが、その辺りは「慣れ」ですね。


それで変数の使い方ですが、変数は使用する前に、「変数の定義」をしなくてはありません。

これは、コンパイラに「このプログラムではこの変数を使いますよ」ということを教える為のもので、

変数を使う際には必ず変数ごとに必要な作業です。

変数の定義はプログラム上ででき、このように書くと変数の定義ができます。


型 変数名;


型は先程紹介した、intやchar等のところから使いたい型の種類を、選んで書いて

変数名の所には任意の文字を書いてください(半角英数一部記号が使えます。)

但し、最初の文字はアルファベットでないとコンパイルが通りません。

また、大文字、小文字は区別されますが、基本的に小文字を使うのが慣例です。

この辺りの理由はまた今度説明するかもです。


なので例と挙げるとこんな感じ。

int x;

char s;

float a;

double b;


これでint 型の変数xと、char型の変数sと、float型の変数aと、double型の変数bが定義されました。

これで例えば、

x=10;

とすることでxという変数に10という数字を入れることができます。


これを実際のプログラムにすると、

#include "stdio.h"

int main(void)
{
     int x;
     x=10;
     return 0;
}

となります。最初の一行は今はおまじないと覚えていてください。また今度説明します。

プログラムは基本、int main(void)というもので囲われた中に書くことになります。

この辺りも今はおまじないで大丈夫です。

Cには最初の段階だと結構の頻度でおまじないが出てきます。

最初の段階でこのおまじないを理解しようとするとC言語はまず理解できなくなるので

あっちこっちの参考書でも、この辺をおまじないにする傾向は強いようです。

という訳でプログラムの中を説明します。

このプログラムではまずint型の変数xを定義して、そのあとでxに10を代入しています。

それだけの意味のないプログラムです。


(因みにreturn 0;も今の段階ではおまじないです。とりあえず書けば動く。それだけです。)


また変数の値を計算する場合は

足し算なら(x+10の結果をxに代入する)

x=x+10;

引き算なら(x-10の結果をxに代入する)

x=x-10;

かけ算なら(x×10の結果をxに代入する)

x=x*10;

割り算なら(x÷10の結果をxに代入する)

x=x/10;

と書くことができます。

だからこのプログラムだとxの値は

#include "stdio.h"

int main(void)
{
     int x;
     x=10;
     x=x+10;//(この段階でx=20)
     x=x-10;//(この段階でx=10)
     x=x*10;//(この段階でx=100)
     x=x/10;//(この段階でx=10)
     return 0;
}

という訳でこのプログラムだと最終的にxは10になることになります。(あ。戻った(笑))


変数は基本的にこんな感じで使います。また変数の計算の方法や定義の方法はもっと短く書く方法などもありますが


今日はその辺りは省略させて頂きます。

とりあえず最初はこのくらいかな。

次は画面への表示の方法について書いていこうと思います。

(^・ω・)ノRadiumProduction in RoboCup Junior
以前のダイオードの記事の続きです。

前回はとりあえずダイオードの特徴についてさらっと書きました。

今回はダイオードの使い方・・というより使いどころについて書いていこうと思います。

まずダイオードの効果。これは電流を1方向にしか流さないということでしたね。


これを利用して回路を作るわけですが・・・

一番有名なのが整流回路でしょうか。

例えばコンセントのAC電源。これはご存じの通り、このような交流波形ですよね。
コンセントの波形です。コンセントからくる電気の電圧と電流はこのような感じで送られています。

縦線が入っているところが0です。

縦軸が電圧、横軸が時間です。つまり時間によって送られている電圧が周期的に変化しています。


ここでこのような回路を作製すると
こんな回路があると考えてください。


ここでAB間の電圧のグラフは
このようにマイナスの電圧部分が消えます。このような波形を半波整流といいます

こんな風になります。

これは電圧がマイナスになる部分はダイオードによって遮断されるため、

プラスの部分の電圧しか流れないのでこのようになるのです。


また、このようにするとこうなります。
これを全波清流といいます。

なんでこうなるかは・・・電流の流れを目で追っていけばわかるはずです。


とりあえず追ってみればわかると思いますよ。説明は省略します。



まぁダイオードは基本こんな感じで使います。あとは論理回路で使うかな・・・

まぁこの話はまた今度ということで


それでは。


次はダイオードの種類かな。

(^・ω・)ノRadiumProduction in RoboCupJunior
といってもまだ基本中の基本ですけど。

とりあえず。書いていこうと思います。


例えばまずこんな簡単なプログラム。

#include "stdio.h"

int main(void)
{
     printf("このブログは普通に読むと、どうも「酔う」らしいので読むときは酔い止め推奨です。 \n");
     return 0;
}

こんなプログラムを打って、コンパイルして、実行してみると、


このブログは普通に読むと、どうも「酔う」らしいので読むときは酔い止め推奨です。 


という文字が画面に出力されてプログラムが終了します。

まぁこのように、プログラムを使うことで、何かのデータを画面などに表示(出力)させることができます。


また、このようなプログラムを打つと

#include "stdio.h"

int main(void)
{
     int i;
     printf("値を入力してください。 \n");
     scanf("%d",&i);
     printf("入力された値は%dです。 \n",i);
     return 0;
}


値を入力してください。
10
入力された値は10です。 


という風な出力の結果が得られます。

まぁこのように、このプログラムではキーボード等からデータを受け取ること(入力)ができます。


また、このようなプログラムを書くと


#include "stdio.h"

int main(void)
{
     int i;
     printf("値を入力してください。 \n");
     scanf("%d",&i);
     i=i+10;
     printf("入力された値は%dです。 \n",i);
     return 0;
}



値を入力してください。
10
入力された値は20です。


と、このように、このプログラムでは、データ同士の計算(演算)をすることができます。


このように、大体のプログラムというものは、

・外部からのデータの入力

・入力された値を演算

・演算された結果を出力


この3つの動作の1パターンの連続で成り立っているものなのです。まぁ多少の例外はありますけど・・・。

という訳でまずは、この3つの動作を簡単に行うことのできるプログラムを使ってこの3つを説明していこうと思います。


でもその前に、データの入力をするにも、そのデータの演算をするにも、データの出力をするにも、

そのデータを保存する場所がなければ、データなんて扱えませんよね?

という訳で次回はこのデータを保存する場所。変数について書いていこうと思います。

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


(^・ω・)ノRadiumProduction in RoboCup Junior
もちろん一部地域限定ですが(笑)



その正体はこれ。
まぐまぐセンサーこと、Magneticセンサーです。磁石じゃないですよ。
英語でカッコよく言うと「Magnetic Sensor」です。

まぁ実際にまぐまぐ呼ばれているのはNXTのセンサーではなくて市販のセンサーの方ですけど・・・。


このセンサー日本語に訳すと、磁石センサー?みたいにも思えますが、正しくは磁気センサー。

それも地磁気に特化した地磁気センサーのようです。(どこら辺が特化なのかわかりませんが(笑))


このセンサーはHiTechnic社のセンサーで、またまた他のセンサーと区別がつかない仕様となっています。



地磁気センサーなので、検知する対象はもちろん「磁場」です。一部では磁界と言ったりもするようですね。

まぁ英語でいうmagnetic fieldsのことだといえばわかりやすいでしょうか。日本語だとここらへん曖昧ですから・・・
磁場のことを磁界と言ったり磁界のとこを磁場と言ったり、磁場と言って実は磁束密度のことだったり・・・

とりあえずこの場合は単位は[A/m]の筈です。密度なんて調べてないはず・・・。


つまり、磁場の強さを測定しているセンサーなのですね。



・・・ということは。今まで皆様(というか僕が)今まで苦しんでいた、

所謂「会場の地磁気の違い」によるロボットの誤作動がこのセンサーを使えばなくせるかもしれない!

ということです。

興味のある方はぜひ使ってみることをお勧めします。

まぁNXTのコンパスセンサーにはこの機能が含まれていますが・・・


また、使う際にはオフセットをセットして基準磁場を作ってやらないといけません。

あとはI2Cのセンサー・・・と思いきやアナログみたいですよ。というぐらいが特徴ですかね。

でもオフセットの設定の際にI2Cを使用しているのかいないのか、とりあえず通信用の線は使用しているみたいです。

そのせいで測定速度が秒間300回と他のNXTのI2Cセンサーと変わりません。


こうなってくるとなんか、使ってあまりいいことないような気もしますが、

とりあえず使ってみればいいのではないでしょうか(投げやり)


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

知らないうちに明日から試験1週間前だったり。



過去に紹介したLEGOセンサー↓
・NXTライトセンサー
・NXT3次元加速度センサー
・NXTタッチセンサー
・NXT超音波センサー
・RCXタッチセンサー
・NXT音センサー
・RCXライトセンサー
・バーニアNXTセンサアダプタV46

・RCX温度センサー
・NXT EOPDセンサー
・NXT IRLink

・NXT IRSeekerV2
・RCX角度センサー

・NXT角度センサー
・NXTコンパスセンサー
NXT磁気センサー
・NXTジャイロセンサー
NXT慣性センサー
・NXT RFIDセンサー

(^・ω・)ノRadiumProduction in RoboCupJunior

P.s因みにまぐまぐの由来はマグネットの「まぐ」だったりします。
3年生の工場見学の為に休業してました。

どうやら詰め込みの際に弁当を電気科のと情報科のを間違えたらしく、無駄に弁当の数が7個ほど余ってましたが・・・

(電気科一体どうしたんだろう?)

まぁ電気と情報では(最終的な)人気が違いますからね。この人数差は仕方ないですよね。(5人ほど違います。)

これでも上級学年に比べてば人数差は少ない方なんですよ。某5年機械なんて50人・・・(笑)

そんなこんなで。無事、戻って参りました。


もう今日は疲れたのでそろそろ寝たい・・・(笑)


あと、先週の金曜日にロボカップ部の部員の募集を「一応」締め切りました。

とりあえず現状としては、在籍が


5年生2人
4年生4人
3年生5人
2年生0人
1年生9人

という状態です。2年生なんてなかった(笑)

やっぱり一年生多いですね・・・今年は当たり年かなぁ。←何が


まぁ形上はこうなっていても、今実際にロボカップに来れる人は


5年生0人
4年生0人
3年生2人
2年生0人
1年生9人

だったりしていますけど(笑)

これ・・・大丈夫なのか?

もうこうなったら一年生のロボカップ経験者に頼るしかないですね。指導とか指導とか指導とか・・・。



(^・ω・)ノRadiumProduction in RoboCupJunior



明日は工場見学。

学校8時集合だそうです。

遅刻した子は置いてけぼり・・・

置いてけぼり食らうと、恐怖の課題地獄なんだとか。コワイコワイ。

明日は何人地獄を見ることになるでしょうかね(笑)


今日の記事は、またまたNBCについてです。

とりあえず一番基礎的なライントレースができるようになった。という話を以前しました。

まぁこのライントレースプログラムについてちょっと書いていこうと思います。

今回、作製したプログラムは、ほんっとにライントレースの基本だけを行ったプログラムです。

センサーの数は3つ。ギャップや直角などの対応プログラムは一切入っていません。

っていうかそんなもの入れる気力がありません。


というのも・・・プログラムがこんなに長くなってしまうんです(笑)

#include "NXTDefs.h"
 
//sensor set
#define kurosiro1 450
#define kurosiro2 450
#define kurosiro3 380
#define sirogin1 630
#define sirogin2 670
#define sirogin3 630
 
//vl set
dseg segment
    motorA byte  100
    motorC byte  100
    curveA byte  100
    curveC byte  100
    sensor_1vl sword
    sensor_2vl sword
    sensor_3vl sword
dseg ends
 
 
//fnc set
subroutine FRONT
OnFwd(OUT_A,motorA)
OnFwd(OUT_C,motorC)
return
ends
 
subroutine BACK
OnRev(OUT_A,motorA)
OnRev(OUT_C,motorC)
return
ends
 
subroutine RIGHT
OnFwd(OUT_A,curveA)
OnRev(OUT_C,curveC)
return
ends
 
subroutine LEFT
OnRev(OUT_A,curveA)
OnFwd(OUT_C,curveC)
return
ends
 
 
//main
 
thread main
dseg segment
 
dseg ends
 
 
SetSensorType(IN_1,IN_TYPE_REFLECTION)
SetSensorType(IN_2,IN_TYPE_REFLECTION)
SetSensorType(IN_3,IN_TYPE_REFLECTION)
 
Loop:
ReadSensor(IN_1,sensor_1vl)
sub sensor_1vl, kurosiro1,sensor_1vl
ReadSensor(IN_2,sensor_2vl)
sub sensor_2vl, kurosiro2,sensor_2vl
ReadSensor(IN_3,sensor_3vl)
sub sensor_3vl, kurosiro3,sensor_3vl
NumOut(1,LCD_LINE1,sensor_1vl)
NumOut(1,LCD_LINE2,sensor_2vl)
NumOut(1,LCD_LINE3,sensor_3vl)
 
call FRONT
 
brtst GT,Loop,sensor_2vl
 
brtst GT,curvel,sensor_1vl
brtst GT,curver,sensor_3vl
 
 
jmp Loop
  
curvel:
call LEFT
jmp Loop
 
curver:
call RIGHT
jmp Loop
  
 
endt


これは、只普通に右のセンサーが黒くなったら右回転、

左のセンサーが黒くなったら左回転というプログラムしか入っていません。

なので実質使っているセンサーは2つですね(笑)


ちゃんと楽してNXCと同じ関数を使用したのにこの長さって・・・(笑)

やっぱりNXCと比べると格段に難しくなっているのがわかります。

でも、関数はNXCと同じですし、そもそもどういった動きをするかはわかっている訳なので、

見れば、大体何がどうなっているのかはわかりますよね。NXCの経験者なら・・・。


まぁこの辺は簡単だからいいのですけど、例えば配列だったり、関数に引数を使ってみたり、戻り値・・・なんてことになると


途端に意味不明になります。(それがASMです(笑))

これで本当にレスキューのプログラムが書けるのか・・・とてつもなく不安です。


あ。このプログラムのファイル挙げときますね。

それではー。


(^・ω・)ノRadiumProduction in RoboCupJunior
たまたま今日午後、秋葉に行ったのですが。

そんでたまたま、秋月に行ったんですね。

そしたらこんなものが・・・
PIC16F1938です。一体いつの間に出たんだか。

こんなPIC、みたことない。

初めて見る系列のPICが店頭にあったので買ってきちゃいました。PIC16Fって887までじゃなかったのか・・・ 


調べてみたら、どうにもPICを販売しているMicrochip社がつい最近、

新しいPICを短期間に何種類も市場に投入したことがわかりました。

つまり、これはその時に発売された新型のPICのひとつという訳ですね。道理で知らないわけだ・・・

もちろんまだ詳細なデータは調べていません。でも18F24FDS30FDS33F

さらには32bitのPIC32MXまで発売したというのに今更PIC16Fの最新機って・・・どうなんだろう。


でも大きな特徴は、とにかく安い。

今までの同サイズのPICと比べると、200円も安くなっています。

16F873と比べたら3倍以上値段が違いますよ・・・これは凄い・・・

まぁその分なんか性能が残念なんでしょう。どうせ16Fだし・・・

でもなんか面白そうなので、ちょっと遊んでみようと思います。


それでは。

(^・ω・)ノRadiumProduction in RoboCupJunior


P.sナメててスンマセン。やっぱりほかの16Fとは桁違いでした。

これ、普通に使えますね。

カレンダー
02 2026/03 04
S M T W T F S
1 2 3 4 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 31
最新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...