Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Quick Demo of light sensor
- // ------- Preamble -------- //
- #define F_CPU 1000000
- #include <avr/io.h>
- #include <util/delay.h>
- int returnValue(int i);
- int main(void) {
- uint16_t PotVal;
- uint16_t LDRVal;
- DDRB=0xFF;
- PORTB=0x00;
- ADMUX |= (1 << REFS0); /* reference voltage on AVCC */
- ADCSRA |= (1 << ADPS2); /* ADC clock prescaler /16 */
- ADCSRA |= (1 << ADEN); /* enable ADC */
- // ------ Event loop ------ //
- while (1) {
- LDRVal = returnValue(1);
- PotVal = returnValue(0);
- if(LDRVal > PotVal) {
- PORTB |=(1<<PB1);
- PORTB |=(1<<PB2);
- PORTB |=(1<<PB3);
- }
- else {
- PORTB &= ~(1<<PB1);
- PORTB &= ~(1<<PB2);
- PORTB &= ~(1<<PB3);
- }
- _delay_ms(50);
- } /* End event loop */
- return (0); /* This line is never reached */
- }
- int returnValue(int i){
- ADMUX &=~(0<<MUX0) | ~(0<<MUX1) | ~(0<<MUX2) | ~(0<<MUX3);
- if(i) ADMUX |=(1<<MUX1);
- ADCSRA |= (1<<ADSC) | (1<<ADIF);
- while(~ADCSRA & 1<<ADIF);
- int returnval=ADC;
- return returnval;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement