Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 1000000UL
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include "LCD4b.h"
- #include <unit/delay.h>
- #include <math.h>
- int distance;
- int count;
- int count1;
- int measure[2];
- void Measure();
- int main(void)
- {
- TCCR1A |= 1<<WGM11 | 1<<COM1A1 ;
- TCCR1B |= 1<<WGM13 | 1<<WGM12 | 1<<CS10;
- ICR1 = 19999;
- DDRB = 0xff;
- PORTB= 0x00;
- while (1)
- {
- Measure();
- if(count == 1)
- {
- count1=1;
- OCR1A =900;
- _delay_ms(500);
- Measure();
- _delay_ms(500);
- count1=2;
- OCR1A =1900;
- _delay_ms(500);
- Measure();
- _delay_ms(500);
- OCR1A =1400;
- _delay_ms(500);
- count ++;
- if(measure[0] > measure[1])
- {
- PORTB=1 <<PB6;
- _delay_ms(1000);
- }
- else
- {
- PORTB=1 <<PB7;
- _delay_ms(1000);
- }
- count1=0;
- }
- }
- }
- ISR(ADC_vect)
- {
- int theLowADC = ADCL;
- int theTenBitResults = ADCH<<8 | theLowADC;
- float volts = ((theTenBitResults)*0.0048828125) ;
- int distance = (volts*2.54/0.0098);
- if(distance <20)
- {
- count=1;
- }
- switch(count1)
- {
- case 1:
- measure[0]=distance;
- break;
- case 2 :
- measure[1]=distance;
- break;
- }
- }
- void Measure()
- {
- ADCSRA |= 1<<ADPS2;
- ADMUX |= 0b00000101;
- ADCSRA |= 1<<ADIE;
- ADCSRA |= 1<<ADEN;
- sei();
- ADCSRA |= 1<<ADSC;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement