#include <Servo.h>
// Rotary Encoder Input
#define inputCLK 4
#define inputDT 5
Servo myservo;
int sensor = 12;
// LED Outputs
#define ledCW 8
#define ledCCW 9
int counter = 90; // Initialize counter to the middle position
int currentStateCLK;
int previousStateCLK;
String encdir = "";
void setup() {
pinMode(sensor,INPUT);
// Set encoder pins as inputs
pinMode(inputCLK, INPUT);
pinMode(inputDT, INPUT);
// Set Led pins as outputs
pinMode(ledCW, OUTPUT);
pinMode(ledCCW, OUTPUT);
Serial.begin(9600);
myservo.attach(11);
previousStateCLK = digitalRead(inputCLK);
}
void loop() {
long state = digitalRead(sensor);
Serial.println(state);
if(state== HIGH){
Serial.println("Radiation Present Door closing");
myservo.write(180);
delay(1000);
}
currentStateCLK = digitalRead(inputCLK);
if (currentStateCLK != previousStateCLK) {
if (digitalRead(inputDT) != currentStateCLK) {
counter--;
if (counter < 0) {
counter = 0;
}
encdir = "CCW";
digitalWrite(ledCW, LOW);
digitalWrite(ledCCW, HIGH);
} else {
counter++;
if (counter > 180) {
counter = 180;
}
encdir = "CW";
digitalWrite(ledCCW, LOW);
digitalWrite(ledCW, HIGH);
}
myservo.write(counter);
Serial.print("Direction: ");
Serial.print(encdir);
Serial.print(" -- Value: ");
Serial.println(counter);
}
previousStateCLK = currentStateCLK;
}