BASIC4MCU | 질문게시판 | AVR 초음파 센서 질문이요!!!!!!!!!!!!!1
페이지 정보
작성자 오이하오 작성일2018-12-15 02:06 조회3,295회 댓글0건본문
학교 과제인데 정말 저는 너무나 부족하고 부족한데
한계가 왔습니다. 제발 도와주시면 감사하겠습니다..ㅠㅠ
질문드리고 싶은 것.
1.초음파 거리 500으로 지정해놨습니다. 500이하에 감지가되면 LED가 한칸씩 줄어드는 것인데
한번만 감지하고 싶은데 계속 인식되어 LED가 모두 줄어들게 됩니다. 이부분을 못짜겠습니다.
2.초음파를 두개 쓸 것인데 어떻게 만져야 될지 모르겠습니다..ㅠㅠㅠ
제발 도와주세요!!!ㅜㅜㅜ
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#define TRIG 6
#define ECHO 7
#define ZERO 0x3F
#define ONE 0x06
#define TWO 0x5B
#define THREE 0x4F
#define FOUR 0x66
#define FIVE 0x6D
#define SIX 0x7D
#define SEVEN 0x27
#define EIGHT 0x7F
#define NINE 0x6F
unsigned char digit[10]=
{ZERO , ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE};
unsigned char fnd_sel[4] = {0x01, 0x02, 0x04, 0x08};
unsigned char fnd[4];
unsigned char numCar;
void display_fnd(unsigned int value) //자릿수
{
int i;
fnd[3] = (value/1000)%10;
fnd[2] = (value/100)%10;
fnd[1] = (value/10)%10;
fnd[0] = (value/1)%10;
for (i=0; i<10; i++)
{
PORTC = digit[fnd[0]];
PORTG = fnd_sel[0];
_delay_ms(1);
PORTC = digit[fnd[1]]|0x80;
PORTG = fnd_sel[1];
_delay_ms(1);
PORTC = digit[fnd[2]];
PORTG = fnd_sel[2];
_delay_ms(1);
PORTC = digit[fnd[3]];
PORTG = fnd_sel[3];
_delay_ms(1);
}
}
int main(void)
{
unsigned char led[9]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
unsigned int distance;
numCar = 0;
DDRA = 0xFF;
PORTA = 0xFF;
DDRC = 0xff;
DDRG = 0x0f;
DDRE = ((DDRE | (1<<TRIG)) & ~(1<<ECHO));
//DDRD
while(1)
{
TCCR1B = 0x02; //0000 0010
PORTE &= ~(1<<TRIG);
_delay_us(10);
PORTE |= (1<<TRIG);
_delay_us(10);
PORTE &= ~(1<<TRIG);
while(!(PINE & (1<<ECHO)));
TCNT1 = 0x0000;
//TCNT3
while (PINE & (1<<ECHO));
TCCR1B = 0x00;
distance = (unsigned int)(TCNT1 /2 /5.8);
display_fnd(distance);
//PORTA = distance;
if(distance < 300)
{
numCar++;
PORTA =led[numCaWr];
if (numCar >= 9)
{
numCar = 8;
}
}
_delay_ms(100);
}
return 1;
}
댓글 0
조회수 3,295등록된 댓글이 없습니다.