BASIC4MCU | 질문게시판 | 답변 : atmega128 스위치 0 <-> 1 전환 질문드립니다.. + 센서
페이지 정보
작성자 master 작성일2019-12-27 10:54 조회5,251회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11425
본문
//#define SIG0 PINA2#define SIG1 PINA4#define SIG2 PINA6// 2 4 6 인 이유는 세로로 한줄이여서...DDRA=0<<SIG0|0<<SIG1|0<<SIG2; // 센서 INPORTA=0<<SIG0|0<<SIG1|0<<SIG2; // 센서 0while(1){if(PINA&(1<<SIG1)){ _delay_ms(2000); uart_send('a'); } // 물Xelse { _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'); } // 3rdelse if((PINA&(0<<SIG0|1<<SIG1|1<<SIG2))){ _delay_ms(2000); uart_send('3'); } // 2ndelse if((PINA&(0<<SIG0|0<<SIG1|1<<SIG2))){ _delay_ms(2000); uart_send('1'); } // 1stelse 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; // 센서 INwhile(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; // 센서 INwhile(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,251안녕요들님의 댓글
안녕요들 작성일감사합니다 ㅜ.ㅜ