質問するログイン新規登録

質問編集履歴

1

2021/06/21 08:50

投稿

_nb_eri_
_nb_eri_

スコア4

title CHANGED
File without changes
body CHANGED
@@ -12,58 +12,90 @@
12
12
  ### 該当のソースコード
13
13
 
14
14
  ```C++(Arduino)
15
- #define M5STACK_MPU6886
16
-
17
15
  #include <M5Stack.h>
18
16
 
19
- /*変数定義略*/
17
+ const int pin_F = 19;
18
+ const int pin_R = 18;
20
19
 
20
+ const int PWM_CH_F = 1;
21
+ const int PWM_CH_R = 2;
22
+ const int PWM_Hz = 50;
23
+ const uint8_t PWM_level = 12;
24
+ //PWM resolution max1023?
25
+
26
+ const int Uprate = 1;
27
+ const int Deforate = pow(2, PWM_level) / 20;
28
+
29
+ signed int UDcount = 0;
30
+ char _data;
31
+
32
+ void startin(){
33
+ Serial.print("boot\r\n");
34
+ ledcWrite(PWM_CH_F, 0);
35
+ ledcWrite(PWM_CH_R, 0);
36
+ M5.Lcd.fillScreen(BLACK);
37
+ delay(500);
38
+
39
+ Serial.print("start\r\n");
40
+ ledcWrite(PWM_CH_F, 230);
41
+ ledcWrite(PWM_CH_R, 230);//1dato over current
42
+ delay(1000);
43
+
44
+ M5.Lcd.fillScreen(BLUE);
45
+
46
+ ledcWrite(PWM_CH_F, Deforate);
47
+ ledcWrite(PWM_CH_R, Deforate);
48
+ }
49
+
21
50
  void setup() {
22
51
  M5.begin();
23
52
  M5.Power.begin();
24
53
 
25
- M5.IMU.Init();
54
+ M5.Lcd.fillScreen(BLACK);
26
-
55
+ M5.Lcd.setTextColor(WHITE , BLACK);
27
56
  M5.Lcd.setTextSize(2);
28
- M5.Lcd.setTextColor(GREEN , BLACK);
29
- M5.Lcd.fillScreen(BLACK);
30
-
31
- m5.Lcd.setCursor(100, 100);
32
- m5.Lcd.printf("M5 boot\r\n");
33
-
34
- //まる1
35
57
 
58
+ pinMode(pin_F, OUTPUT);
59
+ pinMode(pin_R, OUTPUT);
60
+
36
61
  ledcSetup(PWM_CH_F, PWM_Hz, PWM_level);
37
62
  ledcSetup(PWM_CH_R, PWM_Hz, PWM_level);
38
63
 
39
- //まる2
40
-
41
- ledcAttachPin(pin_F, PWM_CH_F);// これと
64
+ ledcAttachPin(pin_F, PWM_CH_F);
42
- ledcAttachPin(pin_R, PWM_CH_R);// これのどっちかを消すとできる
65
+ ledcAttachPin(pin_R, PWM_CH_R);
43
66
 
44
- pinMode(pin_F, OUTPUT);
67
+ startin();
45
- pinMode(pin_R, OUTPUT);
46
-
47
- m5.Lcd.clear(WHITE);//まる1やまる2に移動させるとできる
48
- M5.Lcd.setTextColor(GREEN , WHITE);
49
-
50
- startin();//setupが長くなるので色々詰め込んだやつ
51
-
52
- m5.Lcd.printf("startin\r\n");//表示されない
68
+ m5.Lcd.printf("startin");
53
69
  }
54
70
 
55
71
  void loop() {
72
+ if(Serial.available() > 0){
56
- /*角度受け取る略*/
73
+ _data = Serial.read();
74
+ Serial.printf("%c\r\n", _data);
75
+ }
57
76
 
77
+ if(_data == 'w'){
78
+ UDcount ++;
79
+ ledcWrite(PWM_CH_F, Deforate + Uprate * UDcount);
80
+ ledcWrite(PWM_CH_R, Deforate + Uprate * UDcount);
81
+ Serial.printf("w %d\r\n", Deforate + Uprate * UDcount);
82
+ }
83
+ else if(_data == 's'){
84
+ UDcount --;
85
+ ledcWrite(PWM_CH_F, Deforate + Uprate * UDcount);
86
+ ledcWrite(PWM_CH_R, Deforate + Uprate * UDcount);
87
+ Serial.printf("s %d\r\n", Deforate + Uprate * UDcount);
88
+ }
89
+ else if(_data == 'r'){
90
+ UDcount = 0;
91
+ startin();
92
+ }
93
+ else if(_data == 'e'){
58
- M5.Lcd.setCursor(0, 100);
94
+ ledcWrite(PWM_CH_F, 0);
59
- delta_pitch = (my_pitch - default_pitch) * DTR;
60
- delta_roll = (my_roll - default_roll) * DTR;
61
- M5.Lcd.printf("dP = %5.1f, dR = %5.1f", delta_pitch, delta_roll);//表示されない
62
-
63
- /*Lcdの操作はないので省略*/
95
+ ledcWrite(PWM_CH_R, 0);
96
+ }
64
97
  }
65
98
 
66
-
67
99
  ```
68
100
 
69
101
  ### 試したこと