Kod: Zaznacz cały
#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>
uint16_t pomiar(uint8_t kanal)
{
ADMUX = (ADMUX & ~0x07) | (kanal & 0x07); // ustaw kanal
ADCSRA |= _BV(ADSC); //rozpocznij konwersje
while(ADCSRA & _BV(ADSC)); //czekaj az skonczy
return ADCW; //zmierzona wartosc
}
void pobierz()
{
PORTB = 110 000; //odpalamy diodę IR
_delay_ms(100);
temp1 = pomiar(4); //Zwróć dane z fotorezystora IR // 4 kanał ADC3 - PB3 ??
_delay_ms(100);
PORTB = 111 000; //wyłączamy diodę IR
return(temp1);
}
int main()
{
ADCSRA = _BV(ADEN) |_BV(ADPS2)|_BV(ADPS1); // preskaler 64, wlaczenie ADC ??
DDRB = 111 000; //ustawiamy we/wy
PORTB = 111 000; //ustawiamy żeby wszystko było wyłączone
PORTB = 001 000; //zapalamy diode LED1 i LED2
_delay_ms(3000); //czeka 3 sekundy
PORTB = 111 000; //gasimy diode LED1 i LED2
_delay_ms(3600000); //czeka godzine
while()
{
int podcz1 = pobierz();
int podcz2 = podcz1;
while(podcz2 - pocz1 > 0.5 || podcz1 - podcz2 > 0.5)
{
_delay_ms(60000);
podcz2 = pobierz();
}
for(int a=0;a<5;a++)
{
PORTB = 001 000; //zapalamy diode LED1 i LED2
_delay_ms(1000);
PORTB = 111 000; //gasimy diode LED1 i LED2
}
}
_delay_ms(1800000);
}
}