Selected Courses on Digital Art-UOWM

17 Νοεμβρίου 2014

ARDUINO12-

Filed under: ARDUINO,NOTES ON INTERACTIVE ART — admin @ 14:14
#include

Servo servo9;

const int piezo = A0;
const int switchPin = 2;
const int yellowLed = 3;
const int greenLed = 4;
const int redLed = 5;

int knockVal;
int switchVal;

const int quietKnock = 10;
const int loudKnock = 100;

boolean locked = false;
int numberOfKnocks = 0;

void setup() {
  servo9.attach(9);
  pinMode(yellowLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(switchPin, INPUT);
  Serial.begin(9600);
 
  digitalWrite(greenLed, HIGH);
  servo9.write(0);
  Serial.println(“The box is unlocked!”);
}

void loop() {
  if(locked == false) {
    switchVal = digitalRead(switchPin);
   
    if(switchVal == HIGH) {
      locked = true;
      digitalWrite(greenLed, LOW);
      digitalWrite(redLed, HIGH);
      servo9.write(90);
      Serial.println(“The box is locked!”);
      delay(1000);
    }
  }
 
  if(locked == true) {
    knockVal = analogRead(piezo);
   
    if(numberOfKnocks 0) {
      if(checkForKnock(knockVal) == true) {
        numberOfKnocks++;
      }
      Serial.print(3 – numberOfKnocks);
      Serial.println(” more knocks to go”);
    }
   
    if(numberOfKnocks >= 3) {
      locked = false;
      servo9.write(0);
      delay(20);
      digitalWrite(greenLed, HIGH);
      digitalWrite(redLed, LOW);
      Serial.println(“The box is unlocked!”);
    }
  }
}

boolean checkForKnock(int value) {
 
  if(value > quietKnock && value < loudKnock) {
   
    digitalWrite(yellowLed, HIGH);
    delay(50);
    digitalWrite(yellowLed, LOW);
    Serial.print(“Valid knock of value “);
    Serial.println(value);
   
    return true;
  }
 
  else {
    Serial.print(“Bad knock value “);
    Serial.println(value);
    return false;
  }
}

Δεν υπάρχουν Σχόλια »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress

error: Content is protected !!