Hemliga fack schackspel (11 / 14 steg)
Steg 11: Program
Läsa in följande kod på Arduino:< pre > / *
/*
* Hemligt utrymme schackspel
* Av Nicole Grimwood
*
* För mer information, besök:
*
*
* Denna kod är i public domain.
*/
#include < Servo.h >
Servo myservo; skapa objekt för att styra en servo servo
int pos = 0; / / variabel att lagra servo position
Stift för magnetiska switchar
int switchPin1 = 2;
int switchPin2 = 3;
int switchPin3 = 4;
int switchPin4 = 5;
int switchPin5 = 6;
int switchPin6 = 7.
int servoPin = 8; PIN-koden för servo
int buzzerPin = 9; PIN-koden för Summer
int resetPin = 10; PIN-koden för återställningsknappen
Boolean stängda. hålla reda på om lådan är öppen
booleska switchOn; hålla reda på om alla magnetiska switchar är öppna
booleska resetOn; hålla reda på om reset-knappen trycks
void setup() {
Serial.BEGIN(9600);
myservo.attach(8); tillmäter objektet servo servo på stift 8
myservo.write(POS); Nära lådan på servo genom att sänka spaken till läge 0
pinMode(switchPin1,INPUT);
pinMode(switchPin2,INPUT);
pinMode(switchPin3,INPUT);
pinMode(switchPin4,INPUT);
pinMode(switchPin5,INPUT);
pinMode(switchPin6,INPUT);
pinMode(resetPin,INPUT);
pinMode(servoPin,OUTPUT);
pinMode(buzzerPin,OUTPUT);
stängd = sant; lådan är stängda initialt
switchOn = false;
resetOn = false;
}
void loop() {
switchCheck();
resetCheck();
Om lådan är stängd och magnetiska switchar är öppna
höja servo för att öppna lådan
om (stängd & & switchOn) {
digitalWrite(buzzerPin,HIGH);
Delay(200);
digitalWrite(buzzerPin,LOW);
för (pos = 0; pos < 90; pos + = 1) {/ / flyttar servo spaken från 0 grader till 90 grader
myservo.write(POS); i steg om 1 grad
Delay(15);
}
stängd = false;
}
Om lådan är öppet och trycker på reset
lägre servo till utgångsläget att stänga lådan
om (! stängd & & resetOn) {
digitalWrite(buzzerPin,HIGH);
Delay(200);
digitalWrite(buzzerPin,LOW);
för (pos = 90; pos > =-1; pos-= 1) {/ / flyttar servo spaken från 90 grader till 0 grader
myservo.write(POS); i steg om 1 grad
Delay(15);
}
stängd = sant;
switchOn = false;
}
Delay(500);
}
Kontrollera om magnetiska switchar är öppna
void switchCheck() {
int switchVal1 = digitalRead(switchPin1);
int switchVal2 = digitalRead(switchPin2);
int switchVal3 = digitalRead(switchPin3);
int switchVal4 = digitalRead(switchPin4);
int switchVal5 = digitalRead(switchPin5);
int switchVal6 = digitalRead(switchPin6);
Om alla magnetiska switch stiften är hög
om (switchVal1 == hög & & switchVal2 == hög & & switchVal3 == hög & &
switchVal4 == hög & & switchVal5 == hög & & switchVal6 == hög) {
switchOn = sant;
}
Om alla magnetiska switch stiften är låg
om (switchVal1 == låg & & switchVal2 == låg & & switchVal3 == låg & &
switchVal4 == låg & & switchVal5 == låg & & switchVal6 == låg) {
switchOn = false;
}
}
Kontrollera om reset-knappen har tryckts
void resetCheck() {
int resetVal = digitalRead(resetPin);
Serial.println(resetVal);
IF(resetVal==High) {
resetOn = sant;
}
IF(resetVal==low) {
resetOn = false;
}
}