답변 : atmega128 스위치 0 <-> 1 전환 질문드립니다.. + 센서
페이지 정보
작성자 master 작성일19-12-27 10:54 조회5,182회 댓글1건본문
//
#define SIG0 PINA2
#define SIG1 PINA4
#define SIG2 PINA6
// 2 4 6 인 이유는 세로로 한줄이여서...
DDRA=0<<SIG0|0<<SIG1|0<<SIG2; // 센서 IN
PORTA=0<<SIG0|0<<SIG1|0<<SIG2; // 센서 0
while(1){
if(PINA&(1<<SIG1)){ _delay_ms(2000); uart_send('a'); } // 물X
else { _delay_ms(2000); uart_send('b'); } // 물
}
//
물을 센서로 감지해서 통신을 보내는 걸로 할려고 합니다..
근데 문제는 이 센서가 물을 만나면 5V라고 했는데 반대인거 같습니다...
테스트 중인데 물이 없으면 a가 보내지고 물이 있으면 b가 보내집니다.물만나면 0V인것처럼 행동합니다..
센서는 fit0212 사용중입니다.https: //wiki.dfrobot.com/Non-contact_Liquid_Level_Switch_SKU_FIT0212 연결은 아트메가에 달린 VCC GND,신호를 PORTA에 사용중입니다.
무엇이 문제일까요,.,,ㅜ 풀업저항??그런것과 관련이 있을까요..SFIOR PUD를 1로??...흠 ㅠㅠ
아 그리고 또 세개를 동시에 검사해서 111 011 001 000(물만나면 1)이런식으로만 검사하고 싶은데
//
if ((PINA&(1<<SIG0|1<<SIG1|1<<SIG2))){ _delay_ms(2000); uart_send('7'); } // 3rd
else if((PINA&(0<<SIG0|1<<SIG1|1<<SIG2))){ _delay_ms(2000); uart_send('3'); } // 2nd
else if((PINA&(0<<SIG0|0<<SIG1|1<<SIG2))){ _delay_ms(2000); uart_send('1'); } // 1st
else if((PINA&(0<<SIG0|0<<SIG1|0<<SIG2))){ _delay_ms(2000); uart_send('0'); }
//
이렇게 하면 될까요??
//
//
#define SIG0 (PINA&0x04) //PINA2
#define SIG1 (PINA&0x10) //PINA4
#define SIG2 (PINA&0x40) //PINA6
// 2 4 6 인 이유는 세로로 한줄이여서...
// DDRA=0; // 센서 IN
while(1){
if(SIG1==0){ _delay_ms(2000); uart_send('a'); } // 물
else { _delay_ms(2000); uart_send('b'); } // 물X
}
센서 체크는 이렇게 하는 것이 더 간단하지 않을까요?
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2019-12-27 오전 10:55:24
// by Ok-Hyun Park
//
#define SIG0 (PINA&0x04) //PINA2
#define SIG1 (PINA&0x10) //PINA4
#define SIG2 (PINA&0x40) //PINA6
// 2 4 6 인 이유는 세로로 한줄이여서...
char level;
// DDRA=0; // 센서 IN
while(1){
level='0';
if(SIG0==0)level|=1;
if(SIG1==0)level|=2;
if(SIG2==0)level|=4;
//
uart_send(level);
_delay_ms(2000);
}
댓글 : 1
조회수 : 5,182
안녕요들님의 댓글
안녕요들 작성일감사합니다 ㅜ.ㅜ