ここから本文です

PIC12F675でGP3の信号入力中(Hi)にGP5、GP4どちらかの信号が入るとGP3がOFFにす...

jew********さん

2017/5/2000:02:05

PIC12F675でGP3の信号入力中(Hi)にGP5、GP4どちらかの信号が入るとGP3がOFFにする事はできますか?

車やバイクのウィンカーポジション機能なのですが、ポジションON時(左右ウィンカー常時点灯)にウィンカーを出すとHiからの点滅、ウィンカーOFFにすると約1秒後にポジション復帰(左右ウィンカー常時点灯)させるプログラムを試していますが、ポジションON(左右ウィンカー常時点灯)からのウィンカー点滅に悩んでいます。
今現時点での希望の動作に近いものが下記になります。色々試したのですがGP3==1以降がウィンカーHiでLow、ウィンカーLowでHiでしか点滅できません。
分かりにくいかと思いますがご教授お願いいたします。

/******************************************************
(入力)GP5=左(L)ウィンカー信号入力 12v→5v
(入力)GP4=右(R)ウィンカー信号入力 12v→5v
(入力)GP3=ポジション信号入力 12v→5v
(出力)GP0=左(L)ウィンカー信号出力
(出力)GP1=右(R)ウィンカー信号出力

******************************************************/

#include <xc.h>
#define _XTAL_FREQ 4000000

#pragma config FOSC = INTRCIO
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config BOREN = OFF
#pragma config CP = OFF
#pragma config CPD = OFF

int main(){

CMCON = 0x07;
TRISIO = 0b00111100;
ANSEL = 0b00000000;

while(1){

if(GP3==0){ //■ポジションOFF時
GPIO=0b00000000; //左右ウィンカーを消灯
if(GPIO5==1){ //左ウィンカーONで
GPIO0=1;
}else{
GPIO0=0;
}

if(GPIO4==1){ //右ウィンカーONで
GPIO1=1;
}else{
GPIO1=0;
}
}//if(GP3==0)

if(GP3==1){ //■ポジションON時
__delay_ms(50);
GPIO=0b00000011; //左右ウィンカー常時点灯(ポジション化)

if(GP5==1)0; //左ウィンカーが入力されたら左右ウィンカーOFF

if(GP3==1 & GP5==1){ //スモール中に左ウィンカーONで
GPIO0=0;
}
if(GP3==1 & GP4==1){ //スモール中に右ウィンカーONで
GPIO1=0;
}
if(GP3==1 , GP5==1 & GP4==1){ //スモール中に左右ウィンカーON(ハザード)で
GPIO=0b00000000;
}
}//GP3==1
}//while(1)
}//main

閲覧数:
109
回答数:
2
お礼:
500枚

違反報告

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

2017/5/2120:16:15

プログラムとは関係なく車両配線では
ターンシグナルリレー→シグナルSW→ランプ
となっているのでウィンカー信号をスイッチから分岐した場合パルス信号が来てしまいます。機種によっては球切れ検出もあるから点滅がおかしくなるかも知れない。

余計なことかも知れませんが左右ウィンカーの常時点灯は車幅灯で無いので車検には通りません。

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

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

1〜1件/1件中

kou********さん

2017/5/2104:32:31

論理演算子 の使い方が違います & → &&
http://www.c-lang.org/operator.html


if ( GP3==1 & GP4==1 ){ GPIO1=0; }

if ( GP3==1 && GP4==1 ){ GPIO1=0; } // GP3 GP4 共に1の時 GPIO1=0

あわせて知りたい

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる