質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

1289閲覧

完全自走方式のラジコンカーを再現しているが、Arduinoでエラーが発生してしまう。

INKR

総合スコア3

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2023/04/04 23:09

編集2023/04/05 04:09

実現したいこと

TAMIYAのラジコンカーみたいなプログラムをArduinoで再現することもできることが分かった。機体は完全自走式で超音波センサーでブレーキの制御等を行う。また、テーブル、ちゃぶ台や階段近くでも楽しめるように則距離モジュールで落ちない機体になることを想定している。今度、基板へのはんだ作業までプログラムを完成させたい。

コンセプト

ラジコンカーを始める時1万円以上もする高値であるため、部品だけ購入すればコストを低く抑えて、本物と同様なラジコンカーができるだろうと思って、安いラジコンカーを機械工学の知識を活用し、タミヤの工作シリーズだけで再現することに踏み切った。

前提

ArduinoIDEというソフトウエアを使用し、ラジコンカー用の走行プログラムを再現できるようになった。原因はよくわからないがとにかく、長らく使用してなかったため、バージョンの更新をし続けている。ラジコンカーのステアリング部分は、#include <Servo.h> で動かしている。また、走行の際には、#include<VarSpeedServo.h>で速度を調整しながら走行させることのできるプログラムであった。また、壁などを検知した際、ブレーキをかけれるようにするため、超音波センサーを前と後ろに二つ取り付けている。しかし、パソコンなどには異常なし。

発生している問題・エラーメッセージ

Arduino:1.8.19 (Windows Store 1.8.57.0) (Windows 10), ボード:"Arduino Nano Every, None (ATMEGA4809)" Warning: Board Intel:i686:izmir_ec doesn't define a 'build.board' preference. Auto-set to: I686_IZMIR_EC In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:2:0: C:\Users\exa\OneDrive\�h�L�������g\Arduino\libraries\VarSpeedServo-master/VarSpeedServo.h:112:25: error: redeclaration of '_Nbr_16timers' typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ; ^~~~~~~~~~~~~ In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/Servo.h:73:0, from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:1: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/megaavr/ServoTimers.h:51:5: note: previous declaration 'timer16_Sequence_t _Nbr_16timers' _Nbr_16timers } timer16_Sequence_t; ^~~~~~~~~~~~~ In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:2:0: C:\Users\example\OneDrive\�h�L�������g\Arduino\libraries\VarSpeedServo-master/VarSpeedServo.h:112:41: error: conflicting declaration 'typedef enum timer16_Sequence_t timer16_Sequence_t' typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ; ^~~~~~~~~~~~~~~~~~ In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/Servo.h:73:0, from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:1: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/megaavr/ServoTimers.h:51:21: note: previous declaration as 'typedef enum timer16_Sequence_t timer16_Sequence_t' _Nbr_16timers } timer16_Sequence_t; ^~~~~~~~~~~~~~~~~~ In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:2:0: C:\Users\example\OneDrive\�h�L�������g\Arduino\libraries\VarSpeedServo-master/VarSpeedServo.h:133:3: error: conflicting declaration 'typedef struct ServoPin_t ServoPin_t' } ServoPin_t ; ^~~~~~~~~~ In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:1:0: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/Servo.h:97:3: note: previous declaration as 'typedef struct ServoPin_t ServoPin_t' } ServoPin_t ; ^~~~~~~~~~ In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:2:0: C:\Users\example\OneDrive\�h�L�������g\Arduino\libraries\VarSpeedServo-master/VarSpeedServo.h:141:3: error: conflicting declaration 'typedef struct servo_t servo_t' } servo_t; ^~~~~~~ In file included from E:\Arduino\20230124.osemodel\20230124.osemodel.ino:1:0: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo\src/Servo.h:102:3: note: previous declaration as 'typedef struct servo_t servo_t' } servo_t; ^~~~~~~ 「Servo.h」に対して複数のライブラリが見つかりました 使用済:C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\Servo 未使用:C:\Users\example\OneDrive\ドキュメント\Arduino\libraries\Servo-master exit status 1 ボードArduino Nano Everyに対するコンパイル時にエラーが発生しました。 「ファイル」メニューの「環境設定」から 「より詳細な情報を表示する:コンパイル」を有効にすると より詳しい情報が表示されます。

該当のソースコード

[code] #include <Servo.h> //servo library #include<VarSpeedServo.h> Servo myservo; // create servo object to control servo VarSpeedServo myESC; int Echo_F = A4; //前方方向 int Trig_F = A5; //前方方向 int Echo_R = A6; //後方方向 int Trig_R = A7; //後方方向 int Speed_0 = 10; int Distance_test_1 = 0; int Distance_test_2 = 0; void setup() { // put your setup code here, to run once: myESC.attach(5); myservo.attach(3, 700, 2400); // attach servo on pin 3 to servo object pinMode(Echo_F, INPUT); pinMode(Trig_F, OUTPUT); pinMode(Echo_R, INPUT); pinMode(Trig_R, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(Trig_F, LOW); delayMicroseconds(2); digitalWrite(Trig_F, HIGH); delayMicroseconds(10); digitalWrite(Trig_R, HIGH); delayMicroseconds(2); digitalWrite(Trig_R, LOW); delayMicroseconds(10); Distance_test_1 = pulseIn(Echo_F, LOW); Distance_test_2 = pulseIn(Echo_R, LOW); myservo.write(90); myESC.write(30, Speed_0); myESC.wait(); delay(1000); { if (Distance_test_1 <= 20) { myESC.write(180, Speed_0,true); myESC.wait(); myservo.write(60); delay(1000); myservo.write(120); delay(1000); } if (Distance_test_2 <= 20) { myESC.write(0, Speed_0,true); myESC.wait(); myservo.write(60); delay(1000); myservo.write(120); delay(1000); } } } [/code]

試したこと

  • Arduinoのボードマネージャーのバージョンの更新
  • Arduinoのボードの種類変更(以前は、ArduinoUNOで試しのプログラムを書き込んだ)

製作に使用中の電子部品

  • 近藤科学製 MD-1(ニュートラルブレーキ仕様)コード: 40452.価格: ¥2,728 (税込)

モーターは、ミニ四駆のウルトラダッシュモーターを使用。
<スペック>
ブラシモーター専用スピードコンローラー
サイズ:27.0× 20.5× 4.4mm
重量:3.0g(本体のみ)
対応モーター:370以下の小型模型用DCモーター
(ロック電流4A以下のブラシ付きモーター)
制御方式:PWM制御
適正電源電圧:3.0V~6.6V
(乾電池2~4セル、Ni-Cd&Ni-MH3~5セル、LiFe1~2セル、LiPO1セル)
ドライブ周波数:約4KHz
BEC出力:なし(別途電源の供給が必要です)

  • M5STACK製 Servokit 180°サーボモーター(サーボモータのみ取り出して使用)

・LEGO互換品対応
黄色の線:信号用
茶色の線:GND
赤色の線:Vcc
リソース パラメータ
ギア素材 モーターギア:金属
ギアボックス:プラスティック
PWM 50Hz/0.5~2.5 ms
サーボ重量 9 g
ロック時ローター電流 750 mA
無負荷時電流 60 mA
トルク 1.6 kg•cm/4.8 V、1.8 kg•cm/6.0 V
180° サーボ速度 0.1sec/60°/4.8 V、0.09sec/60°/6.0 V
不感帯 8 μm
スプライン 20T
電圧 4.8~6.0 V
ケーブル長 3 cm
正味重量 44 g
総重量 49 g
製品寸法 401236 mm
包装寸法 734523 mm

  • センサー類

    超音波距離センサ HC-SR04
仕様
動作電圧:5 V
動作電流:15 mA
動作周波数 : 40Hz
測定角度:15°
測距距離:2 -400 cm
寸法 : 45×20×15mm
https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf
https://www.youtube.com/watch?v=4NcAH2PneAE&ab_channel=JonathanVester

   シャープ測距モジュール※ GP2Y0A21YK
仕様

測距範囲:10~80cm
出力:アナログ電圧出力
パケージサイズ(突起部を除く):29.5×13×13.5mm
電源:4.5~5.5V

  • 使う予定のボード

Arduino Nano Every
搭載マイコン:ATMega4809(ブートローダー書込済)
・電源電圧:5V(VIN入力電圧範囲:7~21V)
・クロック周波数:20MHz
・CPUフラッシュ:48KB
・SRAM:6KB
・EEPROM:256B
・基板寸法:45mm×18mm
・ピン:2.54mmピッチ15ピン×2 600mil間隔
・USBコネクタ:Micro B(メス)
※GP2Y0A21YKは、機体を走行させる場所が、階段近くや、テーブルなどの机上を想定しているため、落下防止を考慮した。
※プライバシーの観点から、Cドライブの一部を改変した。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/04/05 00:58

質問は何ですか? 何に困っているのでしょう?
y_waiwai

2023/04/05 01:33

で、Arduinoもいろいろありますが、それのなにをつかってるんでしょうか
INKR

2023/04/05 04:12 編集

①ArduinoIDE というソフトウェアで、ボードに書き込むとエラーが発生していまう症状があります。 ②Arduino Nano Everyを使用しております。説明が足りなくてすみませんでした。 ③お使いのArduinoで動作チェックしてみてください。
thkana

2023/04/05 11:15

https://github.com/netlabtoolkit/VarSpeedServo のReadme.mdを見ると冒頭に NOTE: This library is no longer maintained due to hardware dependencies and wide variety of devices to support. と書かれていますが、比較的新しいボードであるNano Everyで使えることは確認しているのでしょうか?
guest

回答1

0

自己解決

無事に解決できました!。

サーボモータやラジコン用ESCを動かすときに#include<VarSpeedServo.h>#include<Servo.h>を一緒に使ってはいけないことが分かりすっきりしました。自分は、YouTubeできすみさんの高高速改造おもちゃ動画が面白すぎててっきり勘違いしてたのかなと思います。本物のラジコンカー、ラジコンヘリなどでも同じプログラムが書けると思いますので、同じ症状を感じた方は是非見てください。

解決方法

  • #include<VarSpeedServo.h>で書いた時、そのプログラムだけスピードにこだわりたいときのみ使う。
  • #include<Servo.h>で書いた時、スピードを考慮しないときのみ使う。

エラー原因

勘違いによるもの。

投稿2023/04/06 23:35

INKR

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問