#define directionPin 6
#define stepPin 7
#define numberOfSteps 200
#define buzzer 3
#define rainSensor 2
byte ledPin = 13;
int pulseWidthMicros = 20000; // microsecondo
int millisbetweenSteps = 20; // milliseconds - or try 100 for slower steps
int statostart;
void setup() {
Serial.begin(9600);
Serial.println("Starting StepperTest");
digitalWrite(ledPin, LOW);
pinMode(directionPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(2, INPUT);
pinMode(A0, INPUT); //OUT SENSOR TO VERIFY CLOSED
pinMode(A1, INPUT); //IN SENSOR TO VERIFY OPENED
}
void loop()
{
if(digitalRead(2) == LOW ) //if rain detected
{
Serial.println("IT IS RAINING");
while(digitalRead(A0)==HIGH)
{
Serial.println("IT IS CLOSING ROOF");
digitalWrite(directionPin, HIGH);
for(int n = 0; n < numberOfSteps; n++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
}
if(digitalRead(2) == HIGH ) //if no rain detected
{
Serial.println("IT HAS STOP RAINING");
while(digitalRead(A1)==HIGH)
{
Serial.println("IT IS OPENNING THE ROOF");
digitalWrite(directionPin, LOW);
for(int n = 0; n < numberOfSteps; n++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
}
}
ALARM
LIMIT SWITCH 1
LIMIT SWITCH 2
RAIN SENSOR
AUTOMATIC ROOF SYSTEM