前提・実現したいこと
ArduinoUNOでリモコン操作で走行できるラジコン模型を製作しているのですが、サーボが途中で動かなくなるトラブルが発生してしまいました。
ステアリング機能を実装中に以下の不調が発生しました。
該当のソースコード
Arduino
1include <Servo.h> 2 3 4//https://www.Google.co.jp 5 6#include <IRremote.h> 7 8////////// IR REMOTE CODES ////////// 9#define F 16736925 // FORWARD 10#define B 16754775 // BACK 11#define L 16720605 // LEFT 12#define R 16761405 // RIGHT 13#define S 16712445 // STOP 14#define UNKNOWN_F 5316027 // FORWARD 15#define UNKNOWN_B 2747854299 // BACK 16#define UNKNOWN_L 1386468383 // LEFT 17#define UNKNOWN_R 553536955 // RIGHT 18#define UNKNOWN_S 3622325019 // STOP 19#define KEY1 16738455 20#define KEY2 16750695 21#define KEY3 16756815 22#define KEY4 16724175 23#define KEY5 16718055 24#define KEY6 16743045 25#define KEY7 16716015 26#define KEY8 16726215 27#define KEY9 16734885 28#define KEY0 16730805 29#define KEY_STAR 16728765 30#define KEY_HASH 16732845 31 32#define RECV_PIN 12 33 34/*define channel enable output pins*/ 35#define ENA 5 // Left wheel speed 36#define ENB 6 // Right wheel speed 37/*define logic control output pins*/ 38#define IN1 7 // Left wheel forward 39#define IN2 8 // Left wheel reverse 40#define IN3 9 // Right wheel reverse 41#define IN4 11 // Right wheel forward 42#define carSpeed 250 // initial speed of car >=0 to <=255 43 44IRrecv irrecv(RECV_PIN); 45decode_results results; 46unsigned long val; 47unsigned long preMillis; 48 49/** 50 * BEGIN DEFINE FUNCTIONS 51 */ 52 53 void forward(){ 54 digitalWrite(ENA,HIGH); 55 digitalWrite(IN1,HIGH); 56 Serial.println("go forward!"); 57} 58void back(){ 59 digitalWrite(ENA,HIGH); 60 digitalWrite(IN1,HIGH); 61 Serial.println("go back!"); 62} 63void rudder(){ 64 Servo myServo; 65 myServo.attach(3); 66 myServo.write(0); 67 delay(9600); 68 myServo.write(90); 69 delay(9600); 70} 71 72void stop(){ 73 digitalWrite(ENA, LOW); 74 digitalWrite(ENB, LOW); 75 Serial.println("STOP!"); 76} 77 78void setup() { 79 Serial.begin(9600); 80 Serial.begin(10000); 81 pinMode(IN1,OUTPUT); 82 pinMode(ENA,OUTPUT); 83 stop(); 84 irrecv.enableIRIn(); 85} 86 87void loop() { 88 if (irrecv.decode(&results)){ 89 preMillis = millis(); 90 val = results.value; 91 Serial.println(val); 92 irrecv.resume(); 93 switch(val){ 94 case F: 95 case UNKNOWN_F: forward(); break; 96 case B: 97 case UNKNOWN_B: back(); break; 98 case L: 99 case UNKNOWN_L: rudder(); break; 100 case S: 101 case UNKNOWN_S: stop(); break; 102 default: break; 103 } 104 } 105 else{ 106 if(millis() - preMillis > 500){ 107 stop(); 108 preMillis = millis(); 109 } 110 } 111} ``` 112 113### 試したこと 114 115実際に書き込みは出来ましたが、サーボのギアがガツガツ行ったり、動かなくなったりしています。 116 117### 補足情報(FW/ツールのバージョンなど) 118 119使用しているのは、ELEGOOのArduino自動車キットです。
トラブルがあった、という報告は書かれていますが「質問」はなんですか?
まさかデバッグ丸投げじゃないですよね?