ここから本文です

C言語について教えてください。 ボタンを押せば、モーターが回転し、同じボタンを...

mlu********さん

2014/8/1117:15:41

C言語について教えてください。
ボタンを押せば、モーターが回転し、同じボタンを押せば、モーターが停止する。これを繰り返すプログラムを教えてください。

閲覧数:
274
回答数:
3

違反報告

ベストアンサーに選ばれた回答

tya********さん

2014/8/1118:35:08

スペックが解らんので細かいことは言えんが...

こんな感じか?

回数=0回目;

メインの処理ループ
{

if(ボタン押した)
{
if(回数==0回目)
{
モーター回す;
回数=1回目;
}
else
{
モーター止める;
回数=0回目;
}
}

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

dee********さん

2014/8/1211:38:45

ボタンのOFF→ONへ変化をチェックする。
ON変化をフラグに記録する。
処理を行うとON変化フラグをクリアする。


#define BIT_BUTTON 0x????
unsigned int port_now; // ポート入力の状態
unsigned int flag_up; // OFF→ONへ変化フラグ

#define CHATA 5
void port_check(void)
{
static unsigned int port_old[CHATA];
static unsigned int port_chang; // ポート入力の変化ビット
static unsigned int port_back; // 変化前のポート入力状態
unsigned int port_tmp;

// チャタリング対策
port_tmp = port; // ポート状態の読込
for(i=0; i<CHATA; i++){
if(port_tmp != port_old[i]){
break;
}
if(i==CHATA-1){
// 入力状態すべて一致した(入力状態が安定した)
port_now = port_tmp;
}
}
for(i=CHATA-1; i>0; i--){
port_old[i] = port_old[i-1]
}
port_old[0] = port_tmp;

// ポート入力の状態が変化した?
if(port_now != port_back){
port_chang = port_back ^ port_now;
// OFF→ONへ変化フラグセット
flag_up |= port_chang & port_now;
port_back = port_now;
}
}

void main(void)
{
int motor_flag = 0;

while(1){
port_check();
// ボタンの状態がONに変化したか?
if((flag_up & BIT_BUTTON) != 0){
if(motor_flag == 0){
// ここにモータON処理を挿入
motor_flag = 1;
}else{
// ここにモータOFF処理を挿入
motor_flag = 0;
}
// ON変化記録フラグをクリア
flag_up = flag_up & (~BIT_BUTTON);
}
}
}

2014/8/1200:37:19

C言語以前の問題がわからないと・・・
OSは?またはCプログラムを動かすターゲットマシンは?
ボタンは、何を使うの?
モーター回転させる電磁開閉器等は何を使う?
各インターフェースは?

特殊なものだと答えられる人少ないと思いますよ。
(モーターを回すってだけでかなり特殊ですが)

そういう簡単な動作だけれあれば、
リレー回路とか、ICで組む方が楽ですよ。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる