Domotic arduino (2 / 3 steg)
Steg 2: programvara
Jag hoppas att kommentarer är uttömmande:
costants:
CONST int sm = 2; Moviment sensor
CONST int buttonPin_t3 = 5; knappen
CONST int buttonPin_t2 = 4; knappen ner
CONST int ledPin = 13. LED för kontroll knappar
CONST int d1 = 11; motor upp
CONST int d0 = 12. motor ner
variabler
int ContatoreSensoreMovimento = 0; räknaren flytta sensorn
int Contatore_t3_t2 = 0;
int RegistroOutputd1 = 0;
int RegistroOutputd0 = 0;
variablerna sm:
int State_sm = 0; statliga
int lastState_sm = 0; senast tillstånd
variabili t3:
int buttonState_t3 = 0; statliga
int lastButtonState_t3 = 0; senast tillstånd
variabili t2:
int buttonState_t2 = 0; statliga
int lastButtonState_t2 = 0; senast tillstånd
void setup() {
initiering ingångsstift:
pinMode (sm, ingång);
pinMode (buttonPin_t2, ingång);
pinMode (buttonPin_t3, ingång);
initiering utgångsstiftet:
pinMode (d1, produktionen);
pinMode (d0, produktionen);
pinMode (ledPin, produktionen);
iinitialize seriell kommunikation på 9600 bps:
Serial.BEGIN(9600);
}
void loop() {
SM
Läs pin:
State_sm = digitalRead(sm);
Jämför buttonState till sitt tidigare tillstånd
om (State_sm! = lastState_sm) {
om staten har förändrats, öka räknaren
om (State_sm == låg) {
om det aktuella läget låg sedan
wend från av till på:
om (RegistroOutputd1 == 1) {
ContatoreSensoreMovimento ++;
}
om (RegistroOutputd0 == 1) {
ContatoreSensoreMovimento--;
}
Serial.println("on_sm");
Serial.Print ("ContatoreSensoreMovimento:");
Serial.println (ContatoreSensoreMovimento, DEC);
}
annat {
wend från av till på:
Serial.println("off_sm");
}
}
spara det aktuella läget som den förra staten
för nästa gång genom öglan
lastState_sm = State_sm;
om (ContatoreSensoreMovimento % 4 == 0) {
digitalWrite (ledPin, hög);
}
annat {
digitalWrite (ledPin, låg);
}
T3
Läs pin:
buttonState_t3 = digitalRead(buttonPin_t3);
Jämför buttonState till sitt tidigare tillstånd
om (buttonState_t3! = lastButtonState_t3) {
om det aktuella läget är hög då:
om (buttonState_t3 == hög) {
om räknaren är < 1:
om (Contatore_t3_t2 < 1) {
ökar värdet för räknaren
wend från av till på:
Contatore_t3_t2 ++;
Serial.println("on_t3");
Serial.Print ("Contatore_t3_t2:");
Serial.println (Contatore_t3_t2, DEC);
}
}
annat {
om det aktuella läget låg sedan
wend från på till off
Serial.println("off_t3");
}
}
spara det aktuella läget som den förra staten
för nästa gång genom öglan
lastButtonState_t3 = buttonState_t3;
Valore massimo contatore 1
T2
lettura del pin:
buttonState_t2 = digitalRead(buttonPin_t2);
Jämför buttonState till sitt tidigare tillstånd
om (buttonState_t2! = lastButtonState_t2) {
om det aktuella läget är hög då:
om (buttonState_t2 == hög) {
om räknaren är > -1:
om (Contatore_t3_t2 > -1) {
ökar värdet för räknaren
wend från av till på:
Contatore_t3_t2--;
Serial.println("on_t2");
Serial.Print ("Contatore_t3_t2:");
Serial.println (Contatore_t3_t2, DEC);
}
}
annat {
om det aktuella läget låg sedan
wend från på till:
Serial.println("off_t2");
}
}
spara det aktuella läget som den förra staten
för nästa gång genom öglan
lastButtonState_t2 = buttonState_t2;
om (ContatoreSensoreMovimento < 35 & & Contatore_t3_t2 == 1) {
digitalWrite (d1, hög);
RegistroOutputd1 = 1;
}
annat {
digitalWrite (d1, låg);
RegistroOutputd1 = 0;
om (ContatoreSensoreMovimento == 35 & & Contatore_t3_t2 == 1) {
Contatore_t3_t2 = 0;
}
}
om (ContatoreSensoreMovimento > 0 & & Contatore_t3_t2 == -1) {
digitalWrite (d0, hög);
RegistroOutputd0 = 1;
}
annat {
digitalWrite (d0, låg);
RegistroOutputd0 = 0;
om (ContatoreSensoreMovimento == 0 & & Contatore_t3_t2 == -1) {
Contatore_t3_t2 = 0;
}
}
}