Arduino Biped(Baby Dino)
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 5 |
このプロジェクトについて
Baby Dinoは、Arduinoをベースにした2本足のロボットです。基本的に5つのサーボモーターを使用します。各脚に2つ、頭に1つです。また、超音波センサーを使用して障害物を検出し、回避します。それでは、作り方を見てみましょう!
ステップ1:はじめに
- Baby Dinoは、Arduinoを使用したDIYロボットです。
- 段ボールでできています。
- 障害物を見つけて、左または右に移動します。
ステップ2:必要なコンポーネント
- 1 X Arduino Uno、NanoまたはMega
- 5 X9gサーボ
- 1 XHC-SR04超音波センサー
- 1 X LiPoバッテリー(2sまたは9vバッテリー)
ステップ3:サーボを修正する
- プログラムをダウンロード
- Arduinoにアップロード
- 下の図に従ってサーボを接続します
- サーボホーンを修正します
- すべてが90度であることを確認してください
ステップ4:設計
- デザインをダウンロード
- A4に印刷
- 段ボールに貼り付けます
- 切り取ってください
ステップ5:最終ステップ
- サーボをボール紙に取り付けます
- プログラムをArduinoにアップロードする
- サーボと超音波センサーを接続します
- ケーブルをテールとして管理する
- バッテリーを接続します
それでおしまい!
uBipedino.ino
コード
- fix.ino
- 二足歩行
fix.ino Arduino
#includeServo s1;サーボs2;サーボs3;サーボs4;サーボs5; void setup(){s1.attach(8); s2.attach(9); s3.attach(10); s4.attach(11); s5.attach(12);} void loop(){s1.write(90); s2.write(90); s3.write(90); s4.write(90); s5.write(90); }
biped Arduino
必要に応じてサーボピンと超音波ピンを編集します#include#include //接続に応じてピンを編集します#defineIRsensorPin13 // irセンサーを使用している場合超音波センサー#defineTRIGGER_PIN12 //超音波センサーのトリガーピンに接続されたArduinoピン#defineECHO_PIN11 //超音波センサーのエコーピンに接続されたArduinoピン#defineLEFTLEG7#define RIGHTLEG 10#define LEFTFOOT 8#define RIGHTFOOT 9#define HEAD 6#define MAX_DISTANCE 200 // pingする最大距離(センチメートル単位)。センサーの最大距離は400〜500cmです。NewPingソナー(TRIGGER_PIN、ECHO_PIN、MAX_DISTANCE); //ピンと最大距離のNewPingセットアップ。ServoLleg; //サーボを制御するサーボオブジェクトを作成しますServoRleg; Servo Lfoot; Servo Rfoot; Servo Head; int Hcenter =70; //中央のサーボ位置を格納する変数intRLcenter =100; int RFcenter =65; //中心サーボ位置を格納する変数intLLcenter =90; int LFcenter =75; int tAngle =30; //角度を傾けるintuAngle =35; // angleint sAngle =35;を回します//スイングangleinthAngle =Hcenter; void Forward(byte Steps、byte Speed){Serial.println( "Forward"); TiltRightUp(tAngle、Speed); for(byte j =0; j 0; i- =5){Lfoot.write(LFcenter + i); Rfoot.write(RFcenter + i); delay(sp); }} void TiltLeftUp(byte ang、byte sp){//左に傾ける(int i =0; i <=ang; i + =5){Lfoot.write(LFcenter-i); Rfoot.write(RFcenter-i); delay(sp); }} void TiltLeftDown(byte ang、byte sp){//左下に傾ける(int i =ang; i> 0; i- =5){Lfoot.write(LFcenter-i); Rfoot.write(RFcenter-i); delay(sp); }} void LeftFootUp(char ang、byte sp){//左に傾ける(int i =0; i <=ang; i + =5){Lfoot.write(LFcenter-i); delay(sp); }} void LeftFootDown(byte ang、byte sp){//左下に傾ける(int i =ang; i> 0; i- =5){Lfoot.write(LFcenter-i); delay(sp); }} void RightFootUp(byte ang、byte sp){//右に傾ける(int i =0; i <=ang; i + =5){Rfoot.write(RFcenter + i); delay(sp); }} void RightFootDown(byte ang、byte sp){//右下に傾ける(int i =ang; i> 0; i- =5){Rfoot.write(RFcenter + i); delay(sp); }} void SwingRight(byte ang、byte sp){//右に振る(int i =0; i <=ang; i + =5){Lleg.write(LLcenter-i); Rleg.write(RLcenter-i); delay(sp); }} void SwingRcenter(byte ang、byte sp){// swing r-> center for(int i =ang; i> 0; i- =5){Lleg.write(LLcenter-i); Rleg.write(RLcenter-i); delay(sp); }} void SwingLeft(byte ang、byte sp){//左にスイングして(byte i =0; i <=ang; i =i + 5){Lleg.write(LLcenter + i); Rleg.write(RLcenter + i); delay(sp); }} void SwingLcenter(byte ang、byte sp){// swing l-> center for(byte i =ang; i> 0; i =i-5){Lleg.write(LLcenter + i); Rleg.write(RLcenter + i); delay(sp); }} void RightLegIn(byte ang、byte sp){//右に振る(int i =0; i <=ang; i + =5){Rleg.write(RLcenter-i); delay(sp); }} void RightLegIcenter(byte ang、byte sp){//スイングr-> center for(int i =ang; i> 0; i- =5){Rleg.write(RLcenter-i); delay(sp); }} void RightLegOut(byte ang、byte sp){//右に振る(int i =0; i <=ang; i + =5){Rleg.write(RLcenter + i); delay(sp); }} void RightLegOcenter(byte ang、byte sp){//スイングr-> center for(int i =ang; i> 0; i- =5){Rleg.write(RLcenter + i); delay(sp); }} void LeftLegIn(byte ang、byte sp){//左に振る(byte i =0; i <=ang; i =i + 5){Lleg.write(LLcenter + i); delay(sp); }} void LeftLegIcenter(byte ang、byte sp){// swing l-> center for(byte i =ang; i> 0; i =i-5){Lleg.write(LLcenter + i); delay(sp); }} void LeftLegOut(byte ang、byte sp){//左に振る(byte i =0; i <=ang; i =i + 5){Lleg.write(LLcenter-i); delay(sp); }} void LeftLegOcenter(byte ang、byte sp){// swing l-> center for(byte i =ang; i> 0; i =i-5){Lleg.write(LLcenter-i); delay(sp); }} void setup(){Serial.begin(19200); Serial.println( "Bipedinoセットアップが実行されています。"); Lleg.attach(LEFTLEG); Rleg.attach(RIGHTLEG); Lfoot.attach(LEFTFOOT); Rfoot.attach(RIGHTFOOT); Head.attach(HEAD); CenterServos(); delay(500); for(int i =0; i <5; ++ i){GetSonar(); delay(1000); } Serial.println( "Bipedino is ready。");} // setup()void loop(){unsigned int cmCenter =MAX_DISTANCE; unsigned int cmLeft =MAX_DISTANCE; unsigned int cmRight =MAX_DISTANCE; HeadCenter(); cmCenter =GetSonar(); if(cmCenter <20){HeadRight(); cmRight =GetSonar(); HeadCenter(); if(cmRight> 20){TurnRight(1、30); } else {HeadLeft(); cmLeft =GetSonar(); HeadCenter(); if(cmLeft> 20){TurnLeft(1、30); }}} else {int nSteps =cmCenter / 5; if(nSteps> 5){nSteps =5; } else {nSteps =1; } Serial.print( "Steps <"); Serial.print(nSteps); Serial.println( ">"); for(int n =0; n
カスタムパーツとエンクロージャー
回路図
製造プロセス