/* Hatching Chicken Eggs Utilizing Arduino https://www.bristolwatch.com/arduino/eggs.htm by Lewis Loflin lewis@bvu.net */ // LED must be connected between digital pin and ground #define triac_control 5 #define powerIndicator 12 // indicator #define sensorPin 0 // potentiometer #define irq_Pin 2 #define powerOn 4 // when using values in the main routine // and IRQ routine must be volatile value volatile byte flag_bit1 = LOW; // declare IRQ flag int analogValue = 0; // HIGH = 1, LOW = 0 void setup() { pinMode(triac_control, OUTPUT); pinMode(powerIndicator, OUTPUT); digitalWrite(triac_control, 0); // LED off digitalWrite(powerIndicator, 0); // LED off pinMode(irq_Pin, INPUT); pinMode(powerOn, INPUT); digitalWrite(irq_Pin, 1); // pull up on digitalWrite(powerOn, 1); // pull up on attachInterrupt(0, flag1, FALLING); // interrupt 0 digital pin 2 connected ZC circuit } void loop() { if (!digitalRead(powerOn)) digitalWrite(powerIndicator, 1); else digitalWrite(powerIndicator, 0); if ((flag_bit1 == 1) && (digitalRead(powerOn) == 0)) { analogValue = analogRead(sensorPin); delayMicroseconds(analogValue * 10); // set value between 7 and 14 digitalWrite(triac_control, 1); //triac on delayMicroseconds(100); digitalWrite(triac_control, 0); //triac off flag_bit1 = 0; // clear flag } } // end loop void flag1() // set bit { flag_bit1 = 1; }