回答編集履歴
5
追加
test
CHANGED
@@ -22,3 +22,23 @@
|
|
22
22
|
では、 if が成立したときは while が成立しませんので、 while 内の処理は行われません。
|
23
23
|
|
24
24
|
先ずはパソコンようのプログラムを作ることで c の基本的な勉強をされては如何でしょうか。
|
25
|
+
|
26
|
+
----
|
27
|
+
該当のソースコード のほうのコードで動作しているのでしたら、 ontime を増やしている "50" というのを変数にして限界値になったら符号を反転させることで、大して変更せずに済むと思います。
|
28
|
+
|
29
|
+
(loop部分のみ)
|
30
|
+
```c
|
31
|
+
#define PERIOD 10000 // PWMの周期10000μs
|
32
|
+
int ontime = 0; // LEDがONの時間 グローバル変数
|
33
|
+
int delta = 50; // ontime の増減量
|
34
|
+
|
35
|
+
void loop() {
|
36
|
+
ontime += delta; // 毎回ontimeを増やす/減らす
|
37
|
+
if (ontime >= PERIOD || ontime <= 0) { delta *= -1; } // 限界値になったら増減を反転する
|
38
|
+
|
39
|
+
M5.Axp.SetLed(true); // LED ON
|
40
|
+
delayMicroseconds(ontime); //待機 マイクロ秒単位
|
41
|
+
M5.Axp.SetLed(false); // LED OFF
|
42
|
+
delayMicroseconds(PERIOD - ontime); //待機 マイクロ秒単位
|
43
|
+
}
|
44
|
+
```
|
4
修正
test
CHANGED
@@ -19,6 +19,6 @@
|
|
19
19
|
while (ontime == PERIOD)
|
20
20
|
{
|
21
21
|
```
|
22
|
-
では、 if が成立したときは while が成立しませんので、処理は行われません。
|
22
|
+
では、 if が成立したときは while が成立しませんので、 while 内の処理は行われません。
|
23
23
|
|
24
24
|
先ずはパソコンようのプログラムを作ることで c の基本的な勉強をされては如何でしょうか。
|
3
修正
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
デバイスを持っていないので LED の操作は分かりませんが、 c のプログラムとしての while が変なのは分かります。
|
2
2
|
|
3
|
+
while の条件は、"成立したら終わり"ではなく"成立しなかったら終わり"です。
|
3
4
|
`while( 条件 ) { 処理 }` と書いたとき、実行される順は
|
4
5
|
① 条件が成立しなかったら終わる
|
5
6
|
② 処理
|
2
追記
test
CHANGED
@@ -8,6 +8,9 @@
|
|
8
8
|
(以下略)
|
9
9
|
|
10
10
|
です。
|
11
|
+
|
12
|
+
[while文を使った繰り返し処理](https://www.javadrive.jp/cstart/for/index3.html#google_vignette)
|
13
|
+
|
11
14
|
従って
|
12
15
|
```
|
13
16
|
if (ontime == 0)
|
1
追記
test
CHANGED
@@ -16,3 +16,5 @@
|
|
16
16
|
{
|
17
17
|
```
|
18
18
|
では、 if が成立したときは while が成立しませんので、処理は行われません。
|
19
|
+
|
20
|
+
先ずはパソコンようのプログラムを作ることで c の基本的な勉強をされては如何でしょうか。
|