#define F_CPU 1000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
//declare timers
void T1Delay();
// defines pins numbers
int ledRPin = PB5;//assign Redled to pin number 13
int ledGPin = PB4;//assign greenled to pin number 13
int buttonPin = PD2; // assign button to pin 2
int pirPin = PD7; // assign PIR sensor pin 7
// defines variables
int flag = 0;
ISR(INT1_vect) {
flag++;
}
void setup() {
DDRB |= 0B00110000; //D4,D5 LED light OUTPUT
DDRD &= 0B01111011;//D2,D7 sensor INPUT
Serial.begin(9600);
//pinMode(ledRPin , OUTPUT);
//PORTB |= (1 << ledRPin); // turn ON LED
//delay(1000);
//PORTB &= ~(1 << ledRPin); // Turn Off LED
//delay(1000);
//PORTB |= (1 << ledGPin); // turn ON LED
//delay(1000);
//PORTB &= ~(1 << ledGPin); // Turn Off LED
//delay(1000);
//interrupt configuration
//EIMSK =(1<<INT1); //enable INT1
//EICRA =(1<<ISC10); // specify type
//sei (); // enable global INT
}
void loop() {
Serial.println("inside loop");
if (!(PIND & (1 << buttonPin))) { // if pin 12 low
//if(PIND & 0b10000000){//check input sonsor bitD7
PORTB |= (1 << ledRPin); // turn ON LED
delay(1000);
PORTB = PORTB | 0b00010000; //to set bitb4 to 1 to On green led
delay(1000);
Serial.println("motion detected");
T1Delay();
}
else {
PORTB &= ~(1 << ledRPin); // Turn Off LED
PORTB = PORTB & 0b11101111; //to clear bit4 no light
Serial.println("motion ended");
}
T1Delay();
return 0;
}
//timers configuration
void T1Delay() {
TCNT1H = 0; //we need value??
TCNT1L = 0;
TCCR1A = 0x00; //normal mode
TCCR1B = 0x01; //no prasc
while ((TIFR1 & (0x1 << TOV1)) == 0); //wait for T0V0
TCCR1B = 0x00;
TIFR1 = 0x1 << TOV1; //clear TOV1
}