Monthly Archives: August 2014

調整成功 (NO.23)

おはようございます。

1,2ヶ月前に初めて指定した場所にゴールできたはずの自分のマウスが最近は走らせていなく上手く直線も走れなかったですが、いろいろと原因を発見し、また上手く走らせることができました。

最初に初歩的なミスは以前設定したと思われたシリアルポート値の数値が違っていたこと。(何で変わっていたかは不明)

次に最近入れた10回転でトレッド幅とセンサの調整、そして新しくいじってみたゲイン(CON_WALL_KP), 走行パラメータと以前もやった他のことも含め走らせることができました。

コード

スクリーンショット 2014-08-28 10.47.34_R

足立法

最短走行

続きを読む ›

Posted in Pi:Co Classic2 製作記


調整 (No.22)

こんにちは、先週は以前よりも悪い走行になってしまい進歩感しているのか逆に後退しているのかよくわからないまま終わってしまいましたが、再度調整し直したいと思います。

調整しなおす前に電子ブザーの音が大きかったのでそれの調整もしました。

R0014175_R

次は前回失敗した10回転の再確認しました。
数値の値はこうなりましたがこれからまた先スラロームや速度を上げるために誤差をほぼ無くすところまで次回は持っていきたいと思います。

スクリーンショット 2014-08-25 11.46.10_R

動画はこちら。

続きを読む ›

Posted in Pi:Co Classic2 製作記


調整、課題 (No.21)

こんにちは前回はpicoclassic2のにプログラムされているステップ8までザッとおさらいをしていきましたが中部地区大会が近くなってきたので、できたら来月までにスラロームを目標に最初は現段階でできる調整をしていきたいと思います。

注目した点は、rotate,len,accel speed,TREAD_WIDTH,タイヤの直径、テフロンテープを使って機体の調整などなどここ何日か繰り返し調整していましたがいろいろ問題点が多すぎて全く会社にあるコース内を走らせても逆に前よりも上手く走らなくってしまったという結果になってしまいました。

10回転を綺麗に調整させるためにTREAD_WIDTHの調整の値が(71-4.28633)こんなに細かくミリ単位でずれを無くすために自分の使っている机(平らで綺麗ですが、、、)の上で長いこと調整に時間を当てましたがコース内の地面とは違い全く10回転目が終わった後に元の位置に止まらないという結果に終わってしまいました。

ここはまたコース内で調整し直せばいいと思い東北合宿で以前したモードで走らせてみたのですが壁にぶつかったり、スピードが速すぎて勢い良く正面の壁にぶつかったりと4×4の社内のコースゴールできなく終わる結果になりました。
ここもセンサの値をもう一度最初から調整しなおす必要があるのかと思いました。

今日やった失敗例。

1、足立法

2、最短走行

3、10回転

続きを読む ›

Posted in Pi:Co Classic2 製作記


step8中身の内容2 (No.20)

こんにちは立野です、お盆はどうでしたか?

自分は、引きこもって時たま甲子園を見たり、マウスをいじったり、プロダクトデザインとマイコン、ハード系についての本をずっとかじりついていたらあっという間に終わったという感じです。

それでは最初に先週の引き続きStep8のC source fileににあるpicoclassic2.cのファイルの中の#includeされている全ての中身でまだわかっていないことを記述していきます。

#portdef.hの中の#define MOT_CWCCW_R (PE.DRL.BIT.B9),#define MOT_CWCCW_L (PE.DRL.BIT.B10)の部分のCWCCWの意味 – clock wize counter clock wizeのことで、ルネサスのカタログ資料SH7125を見るとここの部分I/Oのことを説明しています。

スクリーンショット 2014-08-18 11.28.59_R

portdefの最後のBLEDはLEDバッテリのことでportdefはここで終わり、macroの方に入ろうと思ったんですが大会が来月始めにあるのでプログラムの方も同時進行でやっていきたいと思います、個人的にはマイコンや回路の事をもっと知りたかったのですが、、、

なのでソフト、ハードの記述をランダムで書いていくので少しわかりにくくなってくると思いますが。。。

それでは次は、#include “mytypedef.h”の中から。

typedef enum //新しい型で定義をしてる。変数の宣言は行われない。

typedef struct // データ型の名前が変わるだけで処理内容自体に違いは無い。
// ただ、構造体を普通に作った時は、データ型の頭に「struct 」が絶対に付いちゃうから、
// それが煩わしいってことでtypedefで別名付ける多い。

short – 2bite分の大きさの入れ物とする、数は-32768 ~ 32767。

float – 32bit,符号、指数、仮数をあらわすために用いる。

unsigned char – 0 ~ 255までの符号がない値。

次は、#include “glob_var.h”の中から。

extern – 変数の本体画別のファイルにあることを意味する、役割としては変数宣言を外部宣言にするやり方。

unsigned char – のintは特に意味はない。入る値の範囲はシステムにより異なる。

今日はここで終わります。

続きを読む ›

Posted in Pi:Co Classic2 製作記


中身の内容 (No.19)

こんにちは立野です。

前回まではstep1~step4(LED,Buzzer)などの中身を変えていましたが、今までは変える所ピンポイントで変えていたので今後の予定は、文の中身を1つずつ理解して、加えてその文の中身も最終的に変えていくことです。

自分で置き換える文がわかりやすくするために、例えば#include “iodefine.h”だったらhの後にSTと付け加えていきます。

step1(LED)
step2(Buzzer)
step3(switch)
step4(Buzzer)
step5(sensor)
step6(motor)
step7(feedback)
step8(まとめ)

まず最初にゴールまで走るために必要なstep8の中身から上から順に、

#include “iodefine.h”
#include “portdef.h”
#include “macro.h”
#include “mytypedef.h”
#include “parameters.h”
#include “glob_var.h”

この文の#include “portdef.h”の中身から。

スクリーンショット 2014-08-08 11.58.12_R

最初に出てくる#ifdefとは、defineで定義された識別子があるかチェックするコマンドで後の処理はifと同じと条件付コンパイル機能となります。

#elseは、他に(if文以外の条件の文が出てきた時の処理の事)

#defineは、その文の中を定義していくこと。例えばdefine AをBとするとソース内のAの部分がコンパイル時に全てBに置き換えられる、定数などで用いられます。

この中の#define BUZZER (PE.DRL.BIT.B6)は何処を指しているか探していきます。

#include “iodefine.h”の文の中にDRLと検索(Ctrlキーとfボタンを押すと出てくる) してここの事を指していることがわかりました。(下記)

スクリーンショット 2014-08-08 10.47.23_R

の中のこの部分です。

PEといのはファイルから回路図で表すとこの部分を指します。

スクリーンショット 2014-08-08 17.59.54_R

DRLとは、ルネサスエレクトロニクス社のカタログ資料を見ると16.6のところにI/Oポートレジスタの説明に記述されています。(下記)

スクリーンショット 2014-08-08 17.59.01_R

struct st_pe { /* struct PE */
union { /* PEDRL */
unsigned short WORD;

続きを読む ›

Posted in Pi:Co Classic2 製作記


ブザー音変更完成 (No.18)

こんにちは今日は前回に引き続きstep4のブザーについて行っていきますが、前回はドレミファソラシドの音の値を設定したところで終えましたが今日はその音を連続して流すところまでやりました。

前回と違うところは、最初に

DISABLE_BUZZER; //ブザーの発振を停止させる
の後にbreak;(途中で文を中断させる)と入れていましたが連続して音を流すために消しました。

その後に、1つずつの音の間を入れるためにwait_ms(100);を入れて音の間に時間を作りました。

その他の細かなプログラムは、init_all();に始めから書き込んであるのでinit_all();を持ってきて連続して音が流れるようになります。

完成したプログラムがこちら。(下記)

#include “iodefine.h”
#include “portdef.h”
#include “macro.h”
#include “parameters.h”

#define FREQ_C 523 //ドの周波数
#define FREQ_D 587 //レの周波数
#define FREQ_E 659 //ミの周波数
#define FREQ_F 700 //ファの周波数
#define FREQ_G 784 //ソの周波数
#define FREQ_A 880 //ラの周波数
#define FREQ_B 988 //シの周波数
#define FREQ_C2 1046 //ドの周波数

void main(void)

{

int i;

init_all();

for(i = 0; i < 1; i++)
{

SET_BUZZER_FREQ(FREQ_C); //ブザーの周波数をドに設定
ENABLE_BUZZER;

続きを読む ›

Posted in Pi:Co Classic2 製作記