ロボコンでは、会場も狭くて電源の確保も困難・・・ということが多くありませんか。
ということで、小型のPCで安くて・・・と探していたら
NetWalker・・・ぉお!
Arduino動くのか?!
試してみました。コンパイル・・・ちょっとエラーが出ますが、動いちゃいました。
サンプルの動作も確認できました。
乱視の目には厳しいですが、この大きさで、Arduinoの開発が出きるのは、嬉しいです。
ポケットに入れて、ロボットの開発ができちゃいます。
2009年11月16日月曜日
2009年11月8日日曜日
ArduinoでJoyStick
300円でアナログコントローラが売っていたので、買ってきました。Arduinoにつないで、サーボをコントロールしてみます。
DigitalPin7 Servo01
DigitalPin8 Servo02
Analog IN 0 JoyStickの垂直方向の出力
Analog IN 1 JoyStickの水平方向の出力
あとは、電源を適当につないでスケッチ書きました。
こんな感じです。
の部分で、アナログコントローラの出力を、使用するサーボ(今回は、PARALLAX製無限回転サーボ)にあわせて変換しています。
DigitalPin7 Servo01
DigitalPin8 Servo02
Analog IN 0 JoyStickの垂直方向の出力
Analog IN 1 JoyStickの水平方向の出力
あとは、電源を適当につないでスケッチ書きました。
#include <Servo.h>
int joyPin1 = 0;
int joyPin2 = 1;
int value1 = 0;
int value2 = 0;
int pos, Szero01=73, Szero02=73;
Servo servo01;
Servo servo02;
void setup() {
servo01.attach(8);
servo02.attach(9);
}
int posValue(int data, int zero) {
return(data/20.5+zero);
}
void loop() {
value1 = analogRead(joyPin1);
value2 = analogRead(joyPin2);
pos = posValue(value1,Szero01);
servo01.write(pos);
pos = posValue(value2,Szero02);
servo02.write(pos);
delay(10);
}
こんな感じです。
int posValue(int data, int zero) {
return(data/20.5+zero);
}
の部分で、アナログコントローラの出力を、使用するサーボ(今回は、PARALLAX製無限回転サーボ)にあわせて変換しています。
2009年9月4日金曜日
GPS Robot Car Shield
東京海洋大学 で実施されるコンテストで使用するShieldです。
高校生の課題研究テーマで偶然同じような内容を指導していたので,配布の公募に申し込んでおきました。
抽選に当たって,先日送られてきました。ありがとうございます。

早速,イラスト描きました。

これから,ピンなどをハンダ付けしてArduinoに載せてスケッチを書いてみます。
高校生の課題研究テーマで偶然同じような内容を指導していたので,配布の公募に申し込んでおきました。
抽選に当たって,先日送られてきました。ありがとうございます。

早速,イラスト描きました。

これから,ピンなどをハンダ付けしてArduinoに載せてスケッチを書いてみます。
2009年8月30日日曜日
Arduino Pro Mini とLR44でLED点滅(analogWrite())
携帯で撮影したら、90度まわった感じです。
3.3Vバージョンですが、LED結構明るいです。
これなら、フォトインタラプタの駆動も大丈夫な気がします。
LR44が大きく見えませんか?
2009年8月27日木曜日
Arduino Pro Mini
2009年8月11日火曜日
DCモータ駆動シールド
DCモータを制御するための回路を考えていたんだけど
パーツで集めてもけっこうな値段になる。
そんなとき\3,000-以下で2モータ起動しかも2AまでOKというシールドを見つけたので購入しました。
Ardumotoです。
最近は、国内でもいろんなところで販売されているようです。
ピンなどは、手元にあったものをハンダ付けして早速試しました。
・・・本当は、19日の研修会に向けてあせって資料収集してます。
パーツで集めてもけっこうな値段になる。
そんなとき\3,000-以下で2モータ起動しかも2AまでOKというシールドを見つけたので購入しました。
Ardumotoです。
最近は、国内でもいろんなところで販売されているようです。
ピンなどは、手元にあったものをハンダ付けして早速試しました。
・・・本当は、19日の研修会に向けてあせって資料収集してます。
2009年6月20日土曜日
6月15日の研修会
報告が遅くなりました。
6月15日の研修会 多くの方に参加していただいて実施できました。
講師の船田さんのお話は、資料も綺麗で、あっという間に終わってしまって、もっと聞きたい、もっと見たいという内容でした。
Arduinoの楽しそうな世界に憧れを持ちました。
ロボットだけでなくいろんなものを作れるようになりたいです。
午後の実習のライントレーサは、わたしの準備不足で、最後の走行で途中になってしまいました。
モータは、別電源でと思っていたのが失敗の原因でした。用意したモータドライブICが、4.5V以上のモータ駆動電源用なのに、確認しないで単3電池2本の電池ボックスを用意してしまいました。
その後試したのが、動画です。以外にあっけなく動きました。事前に試しておけばみんなで動作確認できた内容です。ごめんなさい。
この次は、夏休みです。今度こそしっかり準備しておきます。懲りずに参加してください。
6月15日の研修会 多くの方に参加していただいて実施できました。
講師の船田さんのお話は、資料も綺麗で、あっという間に終わってしまって、もっと聞きたい、もっと見たいという内容でした。
Arduinoの楽しそうな世界に憧れを持ちました。
ロボットだけでなくいろんなものを作れるようになりたいです。
午後の実習のライントレーサは、わたしの準備不足で、最後の走行で途中になってしまいました。
モータは、別電源でと思っていたのが失敗の原因でした。用意したモータドライブICが、4.5V以上のモータ駆動電源用なのに、確認しないで単3電池2本の電池ボックスを用意してしまいました。
その後試したのが、動画です。以外にあっけなく動きました。事前に試しておけばみんなで動作確認できた内容です。ごめんなさい。
この次は、夏休みです。今度こそしっかり準備しておきます。懲りずに参加してください。
2009年6月19日金曜日
Arduinoでライントレーサの動画
センサ1つで動いてます。
モータドライブICの電源も、モータ駆動電源も、Arduinoからとっています。
だめかな?・・と思いましたが、動きました。
PICとかで、ライントレーサ作ったことがある人には、わかる話題でしょうか?
マイコンとモータが同じ電源だと、モータが回った途端、マイコンがリセットしてしまって動作不能・・・となることがあります。
Arduino素晴らしい!!!
簡単!!
実は、研修会でここまで、やりたかったのですが、準備不足でだめでした。
参加した皆さん、作成した電池ボックスを繋いで、回路を変更して試してください。
2009年6月18日木曜日
ArduinoにGPS
ArduinoにGPSを接続できるのか??
秋月に安いGPSがある・・・ということで
Arduinoに付けてデータを利用できるのか?????
買う前に情報収集してます。
まず秋月のGPS
RS232Cレベルコンバータ内蔵 GPSモジュール
安いです。RS-232Cの出力があるので、Arduinoでシリアル通信ができればいいのかな?
Arduinoの説明を見てみたら「Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the FTDI USB-to-TTL Serial chip.」とあります。
シリアル信号のRXとTXが、ピン0、ピン1に接続されているようです。
GPSモジュールの説明には
1.GND
2.POWER
3.RS232C IN
4.RS232C OUT
とあるので、
3をArduinoのデジタルピン0
4をArduinoのデジタルピン1
につないでスケッチを書けば良いのでしょうか?
うーん、なんだか意外と動きそうな気がする!
注文して確認してみたい気がしてきた。
秋月に安いGPSがある・・・ということで
Arduinoに付けてデータを利用できるのか?????
買う前に情報収集してます。
まず秋月のGPS
RS232Cレベルコンバータ内蔵 GPSモジュール
安いです。RS-232Cの出力があるので、Arduinoでシリアル通信ができればいいのかな?
Arduinoの説明を見てみたら「Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the FTDI USB-to-TTL Serial chip.」とあります。
シリアル信号のRXとTXが、ピン0、ピン1に接続されているようです。
GPSモジュールの説明には
1.GND
2.POWER
3.RS232C IN
4.RS232C OUT
とあるので、
3をArduinoのデジタルピン0
4をArduinoのデジタルピン1
につないでスケッチを書けば良いのでしょうか?
うーん、なんだか意外と動きそうな気がする!
注文して確認してみたい気がしてきた。
2009年6月14日日曜日
モータドライブICは便利!?

この回路、おぼえてますか?
LB1650というICを使って2つのDCモータを制御できる回路です。
LB1650のデータシートは、ここなどから入手できます。
さて、この回路とArduinoをどうつなぐか?
モータ用の電源は、Arduinoとは別に用意して接続します。
IN1 IN2 IN3 IN4にどのような状態にするとモータがどうなるか?
左モータ IN1 IN2
正転 1 0
逆転 0 1
ブレーキ 1 1
ブレーキ 0 0
右モータは、同様にIN3 IN4で制御できます。
正転・逆転は、モータとの接続によって変化します。
出来上がった回路に、Arduinoをつないで、スケッチを動かして、思ったのと逆に動いてしまったら、スケッチの1/0を逆にすれば大丈夫です。
pwmも使いたいので
左モータ用 5 6
右モータ用 10 11
と接続することにしました。
スケッチは、FETのライントレーサを手直しして
#define LmotorPin1 5 // Right Motor in1 connected to analog pin 5
#define LmotorPin2 6 // Right Motor in2 connected to analog pin 6
#define RmotorPin3 10 // Left Motot in3 connected to analog pin 10
#define RmotorPin4 11 // Left Motot in3 connected to analog pin 11
#define Rpower 100
#define Lpower 100
#define photPin 0
#define ledPin 13
int pt = 0;
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT);
pinMode(LmotorPin1, OUTPUT); // sets the analog pin as output
pinMode(LmotorPin2, OUTPUT);
pinMode(RmotorPin3, OUTPUT);
pinMode(RmotorPin4, OUTPUT);
Serial.begin(9600);
}
void loop() // run over and over again
{
pt = readPhot(photPin);
if(pt > 80)
right(50);
else
left(50);
}
int readPhot(int p){
int val = 0;
digitalWrite(ledPin, HIGH);
delay(5);
val = analogRead(p);
Serial.print(val);
Serial.print("\n");
digitalWrite(ledPin, LOW);
return val;
}
void right(int t){
analogWrite(LmotorPin1, Lpower); // sets the LeftMotor on
analogWrite(LmotorPin2, 0);
analogWrite(RmotorPin3, 0);
analogWrite(RmotorPin4, 0);
delay(t);
}
void left(int t){
analogWrite(LmotorPin1, 0); // sets the RightMotor on
analogWrite(LmotorPin2, 0);
analogWrite(RmotorPin3, Rpower);
analogWrite(RmotorPin4, 0);
delay(t);
}
関数にしておいたので、修正も簡単でしたね。
2009年6月13日土曜日
2009年6月12日金曜日
実際に動かしてみた
2009年6月10日水曜日
スケッチを、ちょっと手直し
まえと同じ内容ですが
定数と変数、関数を使ってloopの中をすっきり・・・という印象です。
どうでしょう?
#define
という部分が定数の設定です。
一度決めたら変化しないものは、これで設定できます。
loop
の部分も
センサ読んで
判断する
という内容が読みやすいと思いませんか?
定数と変数、関数を使ってloopの中をすっきり・・・という印象です。
/* 定数の設定 */
#define RmotorPin 3 // Right FET connected to analog pin 3
#define LmotorPin 5 // Left FET connected to analog pin 5
#define photPin 0
#define ledPin 13
/* 変数の宣言 */
int pt = 0;
int Rpower = 100;
int Lpower = 100;
/* 関数のプロトタイプ宣言 */
int readPhot(int);
void right(int);
void left(int);
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT);
pinMode(RmotorPin, OUTPUT); // sets the analog pin as output
pinMode(LmotorPin, OUTPUT);
Serial.begin(9600);
}
void loop() // run over and over again
{
pt = readPhot(photPin);
if(pt > 80)
right(50);
else
left(50);
}
int readPhot(int p){
int val = 0;
digitalWrite(ledPin, HIGH);
delay(5);
val = analogRead(p);
digitalWrite(ledPin, LOW);
Serial.print(val);
Serial.print("\n");
return val;
}
void right(int t){
analogWrite(RmotorPin, 0); // sets the LeftMotor on
analogWrite(LmotorPin, Lpower);
delay(t);
}
void left(int t){
analogWrite(RmotorPin, Rpower); // sets the RightMotor on
analogWrite(LmotorPin, 0);
delay(t);
}
どうでしょう?
#define
という部分が定数の設定です。
一度決めたら変化しないものは、これで設定できます。
loop
の部分も
センサ読んで
判断する
という内容が読みやすいと思いませんか?
2009年6月9日火曜日
ライントレーサのスケッチ
モータは、3、5
についているものとします。
センサの状況をパソコンに送る命令も残っています。
きちんと動作しない時は、値を確かめてif文の条件式を変更します。
白っぽい床などに、黒いビニルテープを貼って、コースを作って走らせてみましょう。
以外に簡単に走行しますね。
についているものとします。
センサの状況をパソコンに送る命令も残っています。
きちんと動作しない時は、値を確かめてif文の条件式を変更します。
int RmotorPin = 3; // Right FET connected to analog pin 3
int LmotorPin = 5; // Left FET connected to analog pin 5
int Rpower = 100;
int Lpower = 100;
int photPin = 0;
int ledPin =13;
int val = 0;
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT);
pinMode(RmotorPin, OUTPUT); // sets the analog pin as output
pinMode(LmotorPin, OUTPUT);
Serial.begin(9600);
}
void loop() // run over and over again
{
digitalWrite(ledPin, HIGH);
delay(5);
val = analogRead(photPin);
Serial.print(val);
Serial.print("\n");
digitalWrite(ledPin, LOW);
if(val > 80)
right(50);
else
left(50);
}
void right(int t){
analogWrite(RmotorPin, 0); // sets the LeftMotor on
analogWrite(LmotorPin, Lpower);
delay(t);
}
void left(int t){
analogWrite(RmotorPin, Rpower); // sets the RightMotor on
analogWrite(LmotorPin, 0);
delay(t);
}
白っぽい床などに、黒いビニルテープを貼って、コースを作って走らせてみましょう。
以外に簡単に走行しますね。
ライントレーサとしてまとめる
RPR-220を試すスケッチ
回路ができたのでスケッチを考えます。
LEDを点灯
フォトトランジスタの状態を読み込んで
LEDを消灯
コンピュータへデータを送る
これを繰り返す
こんな感じかな?
スケッチしてみましょう
実行したら、Arduino IDE のseriarl MonitorをONにするとデータが表示されます。
センサの前に色の違う紙をかざしたりして、変化を確認してみましょう。

うまくいきましたか?
あーうっかりしてました。
LED側の抵抗は、電流制限用なので480Ωぐらい
フォトトランジスタ側は、かなり大きめです。いくつか変更して確かめてみてください。
LEDを点灯
フォトトランジスタの状態を読み込んで
LEDを消灯
コンピュータへデータを送る
これを繰り返す
こんな感じかな?
スケッチしてみましょう
int photPin = 0;
int ledPin = 13;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(5);
val = analogRead(photPin);
delay(5);
digitalWrite(ledPin, LOW);
Serial.print(val);
Serial.print("\n");
delay(990);
}
実行したら、Arduino IDE のseriarl MonitorをONにするとデータが表示されます。
センサの前に色の違う紙をかざしたりして、変化を確認してみましょう。

うまくいきましたか?
あーうっかりしてました。
LED側の抵抗は、電流制限用なので480Ωぐらい
フォトトランジスタ側は、かなり大きめです。いくつか変更して確かめてみてください。
ブレッドボードで配線
RPR-220という素子を例に実際の回路を作ります。
まず、素子のしくみを調べます。
インターネットで検索してデータシートという素子のしくみが説明された文書を入手します。
例えば、ここにあります。
データシートに、LEDとフォトトランジスタのピン配置がかかれています。角の切り欠き部分を目印に配置を確認します。どちら側が、+なのか、どのくらい電流を流せるかなどを確認したら回路を考えます。
まず、LEDは、電流が流れすぎないようにする抵抗をつけて、+とーにつなげば光ので簡単です。
問題は、フォトトランジスタです。ArduinoのANALOG INに接続して変化が大きくなるようにします。抵抗をつないで、その部分をANALOG INに接続します。

LEDは、13番ピンに接続して、必要な時だけ点灯できるようにしてあります。
まず、素子のしくみを調べます。
インターネットで検索してデータシートという素子のしくみが説明された文書を入手します。
例えば、ここにあります。
データシートに、LEDとフォトトランジスタのピン配置がかかれています。角の切り欠き部分を目印に配置を確認します。どちら側が、+なのか、どのくらい電流を流せるかなどを確認したら回路を考えます。
まず、LEDは、電流が流れすぎないようにする抵抗をつけて、+とーにつなげば光ので簡単です。
問題は、フォトトランジスタです。ArduinoのANALOG INに接続して変化が大きくなるようにします。抵抗をつないで、その部分をANALOG INに接続します。

LEDは、13番ピンに接続して、必要な時だけ点灯できるようにしてあります。
2009年6月8日月曜日
そろそろセンサのこと
センサは、身の回りの現象をコンピュータに分かってもらうために必要な電子部品です。
ライントレーサをつくる場合、床に描かれた線を見つけるセンサが必要です。
白い床に、黒い線を描いたとします。色を見分けることは、光を見分けることです。
光センサを使います。

この例は、LEDから出た光の反射をフォトトランジスタで捉える反射型センサです。
フォトトランジスタは、FETのゲート電流にあたるものが、光を捉えることで流れます。
簡単に言えば、光を捉えると、電流が流れるものです。
Arduinoには、ANALOG IN と書かれたピンがあります。このピンとセンサを電圧の変化が出るような回路を作って接続します。
電圧が変化する回路???・・・・ですねー
電流計と電圧計の回路との関係を思い出してみましょう。

電流計は、回路に直列に、電圧計は、回路に並列に接続して使用します。
Arduinoは、電圧計のようにセンサと並列に接続するのが一般的です。
ライントレーサをつくる場合、床に描かれた線を見つけるセンサが必要です。
白い床に、黒い線を描いたとします。色を見分けることは、光を見分けることです。
光センサを使います。

この例は、LEDから出た光の反射をフォトトランジスタで捉える反射型センサです。
フォトトランジスタは、FETのゲート電流にあたるものが、光を捉えることで流れます。
簡単に言えば、光を捉えると、電流が流れるものです。
Arduinoには、ANALOG IN と書かれたピンがあります。このピンとセンサを電圧の変化が出るような回路を作って接続します。
電圧が変化する回路???・・・・ですねー
電流計と電圧計の回路との関係を思い出してみましょう。

電流計は、回路に直列に、電圧計は、回路に並列に接続して使用します。
Arduinoは、電圧計のようにセンサと並列に接続するのが一般的です。
関数・・・ってなんだっけ?
関数は、ひとつのスケッチのなかで、同じ操作を繰り返して行いたいときに便利です。
関数名(){
操作手順;
}
のような形で記述します。
FETでモータをコントロールするロボットを前進させる関数を考えてみます。
前進は、左右のモータを同じ力で回転させれば良いですね。できれば、指定した時間前進するようにしたいです。
forward(前進時間){
右モータON;
左モータON;
指定時間待つ;
}
のような形にしてみます。
実際のプログラムでは
のようになります。
前進とストップだけです。
左折・右折も同様に考えてみましょう。
パワーも関数で変えられるようにするのも良いアイデアです。
試してみてください。
関数名(){
操作手順;
}
のような形で記述します。
FETでモータをコントロールするロボットを前進させる関数を考えてみます。
前進は、左右のモータを同じ力で回転させれば良いですね。できれば、指定した時間前進するようにしたいです。
forward(前進時間){
右モータON;
左モータON;
指定時間待つ;
}
のような形にしてみます。
実際のプログラムでは
int RmotorPin = 3; // Right FET connected to analog pin 3
int LmotorPin = 5; // Left FET connected to analog pin 5
int Rpower = 100;
int Lpower = 100;
void setup() // run once, when the sketch starts
{
pinMode(RmotorPin, OUTPUT); // sets the analog pin as output
pinMode(LmotorPin, OUTPUT);
}
void loop() // run over and over again
{
forward(1000);
stop(100); // wait
forward(500);
stop(200); // wait
}
void forward(int t){
analogWrite(RmotorPin, Rpower); // sets the Motor on
analogWrite(LmotorPin, Lpower);
delay(t);
}
void stop(int t){
analogWrite(RmotorPin, 0); // sets the Motor off
analogWrite(LmotorPin, 0);
delay(t);
}
のようになります。
前進とストップだけです。
左折・右折も同様に考えてみましょう。
パワーも関数で変えられるようにするのも良いアイデアです。
試してみてください。
Arduinoでコントロールする
車体ができたので
Arduinoでコントロールしてみましょう。
以前のFETのスケッチを手直しして
こんな感じでしょうか?
実際に走らせるときは、前進するようにモータのつなぎ方を変えてください。
速度を変化させながら右に曲がって行くような動きをする・・・のかな??
スケッチは、関数も作れるので、前進、左折、右折の3種類の関数を作れば、いろんな動きをさせることが簡単にできます。
Arduinoでコントロールしてみましょう。
以前のFETのスケッチを手直しして
int RmotorPin = 3; // Right FET connected to analog pin 3
int LmotorPin = 5; // Left FET connected to analog pin 5
int Rpower = 0;
int Lpower = 0;
void setup() // run once, when the sketch starts
{
pinMode(RmotorPin, OUTPUT); // sets the analog pin as output
pinMode(LmotorPin, OUTPUT);
}
void loop() // run over and over again
{
analogWrite(RmotorPin, Rpower); // sets the Motor on
analogWrite(LmotorPin, Lpower);
Rpower = Rpower + 10 % 256; // power change
Lpower = Lpower + 20 % 256;
delay(100); // wait
}
こんな感じでしょうか?
実際に走らせるときは、前進するようにモータのつなぎ方を変えてください。
速度を変化させながら右に曲がって行くような動きをする・・・のかな??
スケッチは、関数も作れるので、前進、左折、右折の3種類の関数を作れば、いろんな動きをさせることが簡単にできます。
2009年6月7日日曜日
プレート 自動車型ロボットのフレームに使用
ロボットといっても、機動戦士ガンダムやアシモのような、2足歩行ロボットは難しいので、最初は、自動車型のロボットを作ります。
自動車型ロボットで自律型というと床に書かれた線をたどって走るライントレーサーが有名です
模型用のパーツとして穴の開いたプレートがあるので、これをフレームとして利用すると工作が簡単です。

ミュウロボからタッピングプレートという商品が発売されています。
このプレートは、穴に直接ボルトをねじ込んで固定できます。
普通は、ネジとナットを使います。
作業してみればわかりますが、作業がかなり楽になるのでお勧めです。
自動車型ロボットで自律型というと床に書かれた線をたどって走るライントレーサーが有名です
模型用のパーツとして穴の開いたプレートがあるので、これをフレームとして利用すると工作が簡単です。

ミュウロボからタッピングプレートという商品が発売されています。
このプレートは、穴に直接ボルトをねじ込んで固定できます。
普通は、ネジとナットを使います。
作業してみればわかりますが、作業がかなり楽になるのでお勧めです。
2009年6月5日金曜日
動き回るArduinoのための準備
2009年6月4日木曜日
FETを使ったモータドライブのスケッチ
FETを使ったモータを回転させる回路を紹介したままで
Arduinoのスケッチを考えてませんでした。
モータドライブICのスケッチの前にこちらを考えてみることにしました。
接続は、PWMと書いてあるピンならどこでも良いでしょう。
3番ピンに接続することにします。
int motorpin = 3;
のようにするとピン番号を名前で指定できます。
スケッチのイメージは
指定したピンへPWMの信号を出力する
PWM信号は
analogWrite(pin, value);
で出力できます。
powerの値を変えると回転速度が変化します。
うーん、ソースがきれい!!
・・・じゃなく、ソースの表示がきれい!
船田戦闘機日誌さんを参考にさせていただきました。
簡単だし、きれいにソースが表示できます。本当にありがたいことです。
Arduinoのスケッチを考えてませんでした。
モータドライブICのスケッチの前にこちらを考えてみることにしました。
接続は、PWMと書いてあるピンならどこでも良いでしょう。
3番ピンに接続することにします。
int motorpin = 3;
のようにするとピン番号を名前で指定できます。
スケッチのイメージは
指定したピンへPWMの信号を出力する
PWM信号は
analogWrite(pin, value);
で出力できます。
int motorPin = 3; // FET connected to analog pin 3
int power = 0;
void setup() // run once, when the sketch starts
{
pinMode(motorPin, OUTPUT); // sets the analog pin as output
}
void loop() // run over and over again
{
analogWrite(motorPin, power); // sets the Motor on
power = power + 10 % 256; // power change
delay(100); // wait
}
powerの値を変えると回転速度が変化します。
うーん、ソースがきれい!!
・・・じゃなく、ソースの表示がきれい!
船田戦闘機日誌さんを参考にさせていただきました。
簡単だし、きれいにソースが表示できます。本当にありがたいことです。
モータドライブICのスケッチ をイメージする
モータドライブICを使った回路ができたので、
Arduinoのスケッチを作ってみます。
2つのモータがそれぞれ接続したピンからの
信号でコントロールされます。
00停止 01正転 10逆転 11ブレーキ
となります。(ICの規格を確認する)
PWMの利用できるピンに接続すれば、回転速度も変えられます。
こんかいは、
モータ1 ピン3 ピン5
モータ2 ピン6 ピン9
と接続しました
スケッチのイメージは、
モータをコントロールするピン番号を最初に設定して
モータ番号と回転方向、回転速度を指定して回転させる
という感じでしょうか
えーと
ピン番号の指定は
#define motor1p1 3
#define motor1p2 5
#define motor2p1 6
#define motor2p2 9
ということでいいかな?
モータを回転させる関数は
motor(番号, 回転方向, 回転速度)
でいきましょう。
うーん・・・番号でモータを指定するなら、ピン番号は配列に入れた方が指定が簡単かも??
いちいちmotor1p1 motor1p2とか書くの面倒だし、番号で判断して分岐というのも???
あーそうだ、モータ番号じゃなくて
motor(motor1p1, motor1p2, 回転方向, 回転速度)
でいいか??
判断もいらないし・・・これで行こう!!
ということでイメージが固まったのでスケッチです。
Arduinoのスケッチを作ってみます。
2つのモータがそれぞれ接続したピンからの
信号でコントロールされます。
00停止 01正転 10逆転 11ブレーキ
となります。(ICの規格を確認する)
PWMの利用できるピンに接続すれば、回転速度も変えられます。
こんかいは、
モータ1 ピン3 ピン5
モータ2 ピン6 ピン9
と接続しました
スケッチのイメージは、
モータをコントロールするピン番号を最初に設定して
モータ番号と回転方向、回転速度を指定して回転させる
という感じでしょうか
えーと
ピン番号の指定は
#define motor1p1 3
#define motor1p2 5
#define motor2p1 6
#define motor2p2 9
ということでいいかな?
モータを回転させる関数は
motor(番号, 回転方向, 回転速度)
でいきましょう。
うーん・・・番号でモータを指定するなら、ピン番号は配列に入れた方が指定が簡単かも??
いちいちmotor1p1 motor1p2とか書くの面倒だし、番号で判断して分岐というのも???
あーそうだ、モータ番号じゃなくて
motor(motor1p1, motor1p2, 回転方向, 回転速度)
でいいか??
判断もいらないし・・・これで行こう!!
ということでイメージが固まったのでスケッチです。
2009年6月2日火曜日
模型用モータを回す
モータを回してみる。
ロボットを作るのに、モータは欠かせません。

モータは、電気で回ります。
電気は、電圧と電流というもので考えます。
LEDを点灯することは、ある程度の電圧を与えれば、比較的少ない電流で可能です。
モータは、LEDと比べると、数十~百倍の電流が必要です。
大きな電流を回路にそのまま流すと、電子回路は壊れてしまうことがあります。
Arduinoなども同じです。
そのような時には、大きな電流のOn/Offができる電子部品を使います。
今回はFETという部品を使います。

GDSという記号は、
G:ゲート
D:ドレイン
S:ソース
を表します。
ゲートに電流を流すと、ドレインからソースへ電流が流れ、スイッチのような働きをします。
モータをFETで回す回路は、こんな感じです。(Nチャネル)

Arduinoとは別に電源を用意して、電源+と電源ーへ接続、電源ーは、ArduinoのGNDとも接続して、デジタルピンから制御信号へと接続すれば、Arduinoのスケッチでモータを回すことができます。
ロボットを作るのに、モータは欠かせません。

モータは、電気で回ります。
電気は、電圧と電流というもので考えます。
LEDを点灯することは、ある程度の電圧を与えれば、比較的少ない電流で可能です。
モータは、LEDと比べると、数十~百倍の電流が必要です。
大きな電流を回路にそのまま流すと、電子回路は壊れてしまうことがあります。
Arduinoなども同じです。
そのような時には、大きな電流のOn/Offができる電子部品を使います。
今回はFETという部品を使います。

GDSという記号は、
G:ゲート
D:ドレイン
S:ソース
を表します。
ゲートに電流を流すと、ドレインからソースへ電流が流れ、スイッチのような働きをします。
モータをFETで回す回路は、こんな感じです。(Nチャネル)

Arduinoとは別に電源を用意して、電源+と電源ーへ接続、電源ーは、ArduinoのGNDとも接続して、デジタルピンから制御信号へと接続すれば、Arduinoのスケッチでモータを回すことができます。
2009年5月31日日曜日
動くか確かめる
Arduinoも手に入れて、環境もインストールできたら、
ちゃーんと動くか試してみましょう。
最近のコンピュータには、USBポートが付いているので
USB-AとUSB-Bがついているコードを用意して(100円ショップで買ってきました)
早速接続しましょう。
Windowsでは、COMポートとして認識されます。
ちょっと面倒な操作をして、ポート番号を確認して設定します。
Ubuntuでは、自動的に

このように確認できます。
メニューから Skechbook - Examples - Digital - Blink と選択してサンプルを開きます。

Arduinoでは、プログラムをスケッチといいます。
このスケッチは、13番ピンに接続したLEDを点滅させます。
なぜ13番なの? というとArduinoに13番ピンに接続したLEDがついているから回路を作る必要がないからです。
さて、動かし方です。
自分のボードを選択します。

以上で設定終了です。
スケッチをダウンロードして実行する

ここをクリックしましょう!
うまくいけばArduinoの13番ピンに接続されたLEDが点滅します。

もし・・・

こんなエラーが出ちゃったときは、
ボードが正しく選ばれているかもう一度確認しましょう
さあ、これで、動くか確かめることができたので、自分のスケッチを楽しめます。
ちゃーんと動くか試してみましょう。
最近のコンピュータには、USBポートが付いているので
USB-AとUSB-Bがついているコードを用意して(100円ショップで買ってきました)
早速接続しましょう。
Windowsでは、COMポートとして認識されます。
ちょっと面倒な操作をして、ポート番号を確認して設定します。
Ubuntuでは、自動的に

このように確認できます。
メニューから Skechbook - Examples - Digital - Blink と選択してサンプルを開きます。

Arduinoでは、プログラムをスケッチといいます。
このスケッチは、13番ピンに接続したLEDを点滅させます。
なぜ13番なの? というとArduinoに13番ピンに接続したLEDがついているから回路を作る必要がないからです。
さて、動かし方です。
自分のボードを選択します。

以上で設定終了です。
スケッチをダウンロードして実行する

ここをクリックしましょう!
うまくいけばArduinoの13番ピンに接続されたLEDが点滅します。

もし・・・

こんなエラーが出ちゃったときは、
ボードが正しく選ばれているかもう一度確認しましょう
さあ、これで、動くか確かめることができたので、自分のスケッチを楽しめます。
環境を整える
Arduinoは、自分で作ることもできますが、電子工作初心者には、完成品がお薦めです。
わたしは、スイッチサイエンスで購入しました。
Arduinoを用意できたらコンピュータにつないで、Arduinoになにをしてほしいかお願いします。
Arduinoに、お願いするには、スケッチと呼ばれるプログラムを書きます。
スケッチを書いたり、Arduinoに送ったりすることを簡単にできるソフトウェアがArduino HomePageに無償で用意されています。
自分のパソコンの環境にあったものをダウンロードしてインストールしましょう。
WindowsとUbuntuで試しましたが、どちらも簡単に使用可能でした。
準備
Java環境のインストールと環境設定
最新版のダウンロード
Arduino - Softwareページから最新版をダウンロード
インストール作業
ダウンロードのページから NextSteps の Getting Started を選択すると各環境のインストール手順が図とともに詳細に解説されています(英語)。英語といっても、図が豊富ですからわかると思います。
起動しよう
インストールが終了したら起動してみましょう

Ubuntu で Arduinoを起動しました。
開いているファイルは、同時にインストールされるサンプルです。
ここで、うまく起動できない時は、Java環境を再確認しましょう。
わたしは、スイッチサイエンスで購入しました。
Arduinoを用意できたらコンピュータにつないで、Arduinoになにをしてほしいかお願いします。
Arduinoに、お願いするには、スケッチと呼ばれるプログラムを書きます。
スケッチを書いたり、Arduinoに送ったりすることを簡単にできるソフトウェアがArduino HomePageに無償で用意されています。
自分のパソコンの環境にあったものをダウンロードしてインストールしましょう。
WindowsとUbuntuで試しましたが、どちらも簡単に使用可能でした。
準備
Java環境のインストールと環境設定
最新版のダウンロード
Arduino - Softwareページから最新版をダウンロード
インストール作業
ダウンロードのページから NextSteps の Getting Started を選択すると各環境のインストール手順が図とともに詳細に解説されています(英語)。英語といっても、図が豊富ですからわかると思います。
起動しよう
インストールが終了したら起動してみましょう

Ubuntu で Arduinoを起動しました。
開いているファイルは、同時にインストールされるサンプルです。
ここで、うまく起動できない時は、Java環境を再確認しましょう。
Arduino入門
Arduinoってはじめて聞いたという人も多いと思います。
詳細は、Arduino HomePageで確認できます(英語)。
日本語でもいろいろ解説されています。Arduino 日本語リファレンスは、とくにお薦めです。

このイラストはInkscapeで作成しました。
Arduinoは、アイデアをスケッチを描くように、電子回路を作れる環境です。
身の回りにある電気で動くおもちゃを改造したり、クリスマスのイルミネーションをオリジナルにしたり簡単にできちゃうかも?
Arduinoには、電気を出し入れできる穴がたくさん開いています。ここに電線を差し込んで、ちょっとお願いすると、自分のやりたいことができるかも?
詳細は、Arduino HomePageで確認できます(英語)。
日本語でもいろいろ解説されています。Arduino 日本語リファレンスは、とくにお薦めです。

このイラストはInkscapeで作成しました。
Arduinoは、アイデアをスケッチを描くように、電子回路を作れる環境です。
身の回りにある電気で動くおもちゃを改造したり、クリスマスのイルミネーションをオリジナルにしたり簡単にできちゃうかも?
Arduinoには、電気を出し入れできる穴がたくさん開いています。ここに電線を差し込んで、ちょっとお願いすると、自分のやりたいことができるかも?
登録:
投稿 (Atom)