Open syu-kwsk opened 5 years ago
ちゃんと issue 書けてまっせ
トグルスイッチを使うのかな? 具体的にどのへんを指してるのか コード見てもわかんなかったので コードをコピってこの下に貼り付けてもらっていいですか?
強制終了の実装で考えられるのが、
DigitalOut
系に全部 0
を代入して
最後に exit(0);
を書くと終了したっぽくできるよ
<該当部分> DigitalIn mysw1(p10);
int main(void){
while(true){
static int k = 0;
int pow;
if (mysw1 == 1){
if (pow == 0){
pow = 1;
k++;
}
else if (pow == 1){
pow = 0;
k = 0;
}
}
⇓ここからはk = 1の操作を行っていきwhileの終わりに行きます。
やりたかったことは、トグルスイッチではなくてタクトスイッチを押す度にpowの値とkの値をかえて、一回押すとON(pow → 1 && k → 0)、もう一度押すとOFF(pow → 0 && k → 0)にすることです。
プログラムのどこの処理が行われているのかわかりやすくするために、処理の度にLEDを光らせてみると、powの値が思ったとおりに処理されていないことがわかり、powを消して、(k!= 0) としてみるとうまくいきました。以下、修正後のコード *light(); は引数のLEDが一秒間光る関数*
void exit(){
t.reset();
led[1] = 0;
led[2] = 0;
led[3] = 0;
led[4] = 0;
a[0] = 0;
a[1] = 0;
a[2] = 0;
a[3] = 0;
a[4] = 0;
a[5] = 0;
a[6] = 0;
a[7] = 0;
a[8] = 0;
a[9] = 0;
}
int main(void){
while(true){
static int k = 0;
if (mysw1 == 1){
light(1);
if (k == 0){
light(2);
k++;
}
else if (k != 0){
k = 0;
light(3);
exit();
}
}
対応が遅れて申し訳ない。 LED 光らせてデバッグとはなかなかの好手ですな
Issue とかでコードを埋め込むときは 言語に応じてシンタックスハイライトを付けられることを思い出してくださいb
C言語を埋め込むときは 下のようにするといいですヨ
```C
int main() { printf("Hello, World"); return } ``` ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#include <stdio.h>
int main()
{
printf("Hello, World");
return
}
関数内に
void pi_sound(){
#define PI 1.0/960.000
#define WRITE 0.5
#define WAIT_SIREN 0.65
...
みたいに #define
書いてたけど、こう書いたからって WAIT_SIREN
とかの有効範囲(スコープ)が関数内のみになるわけではありません
この時のスコープは #define
された箇所より下の部分になります。
スコープを関数内にしたいのであれば
void pi_sound(){
const double PI = 1.0/960.000;
const double WRITE = 0.5;
const double WAIT_SIREN = 0.65;
...
とした方が自然かな。
const
をつけることで定数を定義できます。
#define
は#include
の次くらいに書くのが普通です。
isuueの書き方がわかりません!!
あ
今困っていること
電源スイッチを作りたくて、スイッチONはできましたが、OFFにしたときにプログラムが強制終了するようにしたいです。今は強制終了できずに(k = 1)の行動を続けてしまいます。