Äventyr i El: en interaktiv ljus diorama (14 / 15 steg)
Steg 14: Koden
Kod:
variabel kontroller
int BenOn = 0;
int lightOnED = 0;
int lightOnEL = 0;
int lightOnPA = 0;
int lightOnPA2 = 0;
int buttonStateED = 0;
int lastButtonStateED = 0;
int buttonStateEL = 0;
int lastButtonStateEL = 0;
int pressurePA = 0;
int lastPressurePA = 0;
utgångsstift
int lightningBolt = 3;
int lightBulbEddison = 4;
int bridgeLights = 5;
int buildingLights = 6;
int ferrisWheelLights = 7.
int benFrankHair = 8;
ingående pins
int eddisonScene = 12;
int benScene = 11;
int parisScene = 1;
void setup() {
initiera digital PIN-koden som en utgång.
ställa in alla utgångar
Serial.BEGIN(9600);
pinMode(lightningBolt,OUTPUT);
pinMode(lightBulbEddison,OUTPUT);
pinMode(bridgeLights,OUTPUT);
pinMode(buildingLights,OUTPUT);
pinMode(ferrisWheelLights,OUTPUT);
pinMode(benFrankHair,OUTPUT);
pinMode(eddisonScene,INPUT);
pinMode(benScene,INPUT);
}
void loop() {
Läs alla ingångar
buttonStateED = digitalRead(eddisonScene);
buttonStateEL = digitalRead(benScene);
pressurePA = analogRead(parisScene);
Kontrollera om ben scen aktiverat
om (buttonStateEL! = lastButtonStateEL) {
IF(buttonStateEL == low) {
Serial.Print ("buttonStateEL pressed\n");
IF(BenOn==1) {
BenOn = 0;
}
annat if(lightOnEL==0) {
lightOnEL = 1;
}
}
}
lastButtonStateEL = buttonStateEL;
Kontrollera om eddison knappen nedtryckt
om (buttonStateED! = lastButtonStateED) {
om (buttonStateED == låg) {
Serial.Print ("buttonStateED pressed\n");
lightOnED =! lightOnED;
}
}
lastButtonStateED = buttonStateED;
/*Serial.Print ("senaste tryck:");
Serial.Print(lastPressurePA);
Serial.Print("\n");
Serial.Print ("tryck:");
Serial.Print(pressurePA);
Serial.Print("\n"); * /
Tryck Sök efter Paris kraft sensor resistor
IF(lastPressurePA==0) {
om (pressurePA > 1) {
IF(lightOnPA2 ==1) {
lightOnPA2 = 0;
}
annat if(lightOnPA ==0) {
lightOnPA = 1;
}
Serial.Print("pressed\n");
}
}
lastPressurePA = pressurePA;
IF(lightOnPA==1) {
slå på ljuset i varje område av paris sekventiellt
digitalWrite(bridgeLights,LOW);
Delay(2000);
digitalWrite(buildingLights,HIGH);
Delay(2000);
digitalWrite(ferrisWheelLights,LOW);
lightOnPA = 0;
lightOnPA2 = 1;
}
annat if(lightOnPA2==1)
{
hålla lampor efter sekventiellt påslagen
digitalWrite(bridgeLights,LOW);
digitalWrite(buildingLights,HIGH);
digitalWrite(ferrisWheelLights,LOW);
}
annat
{
annars stänga av dem
digitalWrite(bridgeLights,HIGH);
digitalWrite(buildingLights,HIGH);
digitalWrite(ferrisWheelLights,HIGH);
}
IF(lightOnED == 1) {
slå på eddison's lampa
digitalWrite(lightBulbEddison,HIGH);
}
annat {
stänga av eddison's lampa
digitalWrite(lightBulbEddison,LOW);
}
Kontrollera om lighning bolt är på?
IF(lightOnEL == 1) {
Om på LIGHTNING BOLT
digitalWrite(lightningBolt,HIGH);
Delay(300);
digitalWrite(lightningBolt,LOW);
Delay(400);
digitalWrite(lightningBolt,HIGH);
Delay(300);
digitalWrite(lightningBolt,LOW);
Delay(300);
digitalWrite(lightningBolt,HIGH);
Delay(300);
digitalWrite(lightningBolt,LOW);
lightOnEL = 0;
BenOn = 1;
}
annat if(BenOn==1) {
Förhöj ben's hår efter blixtnedslag
digitalWrite(benFrankHair,LOW);
}
annat {
annat nothings händer inaktivera båda
digitalWrite(benFrankHair,HIGH);
digitalWrite(lightningBolt,LOW);
}
}