Automatisk blind ansluten till befintliga projektorn skärmen (9 / 10 steg)
Steg 9: Arduino kod
Pinsint dir = 2;
int power = 3;
int captor = 4;
Reed switch
int captorVal = 0;
Analoga stift till läsa skärm ned
int screenDown = 0;
int screenDownVal = 0;
Analoga pin att läsa skärmen upp
int screenUp = 1;
int screenUpVal = 0;
Sträng screenState; Projektorn skärmen staten
Sträng blindState; Blinda tillstånd
Boolean upptagen = false;
void setup() {
initiera pins
pinMode (uteffekt,);
pinMode (dir, produktionen);
pinMode (captor, ingång);
Läs reed switch-värde på setup
Delay(100);
captorVal = digitalRead(captor);
Delay(100);
Ange blindState på setup
om (captorVal == låg) {
blindState = "upp";
} annat {
blindState = "down";
}
Logger
Serial.BEGIN(9600);
}
void loop() {
Läs projektorn skärmen värden
screenDownVal = analogRead(screenDown);
screenUpVal = analogRead(screenUp);
om (screenUpVal > 1000 & & screenDownVal > 1000) {
Serial.println ("skärmen modul är OFF!");
screenState = "off";
} else om (screenUpVal < 200 & & screenDownVal < 200) {
screenState = "stoppa";
} else om (screenUpVal > 1000 & & screenDownVal < 200) {
screenState = "upp";
} else om (screenDownVal > 1000 & & screenUpVal < 200) {
screenState = "down";
}
refreshBlindMotor(screenState);
Delay(100);
}
void refreshBlindMotor() {
Serial.println(blindState);
Skärmen är på väg upp och är blind nere (och inte är blinda upptagen)
om (screenState == "upp" & & blindState == "down" & & upptagen == false) {
MÖRKEN!
upptagen = sant;
blindUp();
Skärmen är på väg ner och är blind upp (och inte är blinda upptagen)
} else om (screenState == "down" & & blindState == "upp" & & upptagen == false) {
NER blinda!
upptagen = sant;
blindDown();
} else om (screenState == "stop") {
TODO: stoppa blinda?
}
}
void blindUp() {
Motor på + upp
digitalWrite (ström, hög);
digitalWrite (dir, hög);
Medan reed switch inte ägnar sig
captorVal = digitalRead(captor);
medan (captorVal == hög) {
captorVal = digitalRead(captor);
Serial.println ("väntar för blinda att nå långt upp ställning...");
Delay(100);
}
Vi fick av while loop,
Vi kan stoppa blinda
halt();
blindState = "upp";
upptagen = false;
Serial.println ("Blind är upp!");
}
void blindDown() {
Motor på + ner
digitalWrite (ström, hög);
digitalWrite (dir, låg);
Tiden är tar för blinda att gå ner
Delay(18000);
Stoppa blinda
halt();
blindState = "down";
upptagen = false;
Serial.println ("Blind är ner!");
}
void halt() {
Tillskurna blind motor power
digitalWrite (power, låg);
Serial.println ("Blind stoppas!");
}