Dragos
Published © GPL3+

Arduino Mystery Box - Beginners

Learn how to create your own Mystery Box, that will open only by interacting with the three inputs.

BeginnerFull instructions provided1 hour4,040
Arduino Mystery Box - Beginners

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
Photo resistor
Photo resistor
×1
NTC Thermistor 10kohm
×1
Breadboard (generic)
Breadboard (generic)
×1
LED (generic)
LED (generic)
×6
Resistor 221 ohm
Resistor 221 ohm
×6
Resistor 10k ohm
Resistor 10k ohm
×1
Resistor 4.75k ohm
Resistor 4.75k ohm
×1
Jumper wires (generic)
Jumper wires (generic)
×1
Servos (Tower Pro MG996R)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Schematics

Mystery Box - Fritzing

Mysery Box wiring diagram in Fritzing

Code

Mystery Box

Arduino
Mystery Code Arduino code for the three inputs, as described in the tutorial.
const int blitzled1 = 9;
const int blitzled2 = 8;
const int redled = 7;
const int orangeled = 6;
const int yellowled = 5;
const int blueled = 4;
const int fotor = A0;
const int temp = A1;
int valu = 0;
int fot = 0;
int trigPin = 11;
int echoPin = 12;
long duration, cm, inches;
int ledState = LOW;
int steps = 1;
unsigned long previousMillis = 0;
const long interval = 100;

unsigned long currentTime  = 0; 
unsigned long pastTime     = 0;
int           currentState = 0;
unsigned long seconds = 0;
#include <Servo.h>
Servo myservo;
void setup() {
pinMode(blitzled1,OUTPUT);
pinMode(blitzled2,OUTPUT);
pinMode(redled,OUTPUT);
pinMode(orangeled,OUTPUT);
pinMode(yellowled, OUTPUT);
pinMode(blueled, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(fotor, INPUT);
pinMode(temp, INPUT);
myservo.attach(10);
Serial.begin(9600);
myservo.write(100);
startup();

}

void loop() {
  if (steps == 1) {
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  cm = (duration / 2) / 29.1;
  if (cm > 7 && cm < 9)
  {
    pastTime    = currentTime;
    currentTime = millis();
    unsigned long timePassed = currentTime - pastTime;
    if (timePassed >= 1000);
            {
            seconds ++;
               pastTime = currentTime;
               blitz();
            }
   if ( seconds == 20 ) {
    Serial.print("Done!");
    Serial.println();
    seconds = 0; 
    steps = 2;
    Serial.print("Step 2");
    digitalWrite(blitzled1, LOW);
    digitalWrite(blitzled2, LOW);
  }
  Serial.print(cm);
  Serial.println();
  delay(50);

}
}
  if (steps == 2) {
  int plm = 0;
  digitalWrite(orangeled, HIGH);
 valu = analogRead(fotor);
 plm = map(valu, 0, 1023, 0, 100);
 Serial.print(plm);
 Serial.println();
 if (plm > 0 && plm < 6)
{
    pastTime    = currentTime;
    currentTime = millis();
    unsigned long timePassed = currentTime - pastTime;
    if (timePassed >= 1000);
            {
            seconds ++;
               pastTime = currentTime;
               blitz();
            }
   if ( seconds == 20 ) {
    Serial.print("Done!");
    Serial.println();
    seconds = 0; 
    steps = 3;
    Serial.print("Step 3");
    digitalWrite(blitzled1, LOW);
    digitalWrite(blitzled2, LOW);
    
  }
    
  Serial.println();
  delay(50);
  
}
}
  if (steps == 3) {
    digitalWrite(yellowled, HIGH);
int temps = analogRead(temp);
int tempsp = map(temps, 0, 1023, 0, 100);
 Serial.print(tempsp);
 Serial.println();
if (tempsp >= 53)
{
    pastTime    = currentTime;
    currentTime = millis();
    unsigned long timePassed = currentTime - pastTime;
    if (timePassed >= 1000);
            {
               seconds ++;
               pastTime = currentTime;
               blitz();
            }
   if ( seconds == 10 ) {
    Serial.print("Done!");
    Serial.println();
    seconds = 0; 
    steps = 4;
    Serial.print("Step 4");
    digitalWrite(blitzled1, LOW);
    digitalWrite(blitzled2, LOW);
    
  }
    
  Serial.println();
  delay(50);
  
}
}


  if (steps == 4) {
  int plmz;
  int valuz;
  digitalWrite(blueled, HIGH);
 valuz = analogRead(fotor);
 plmz = map(valuz, 0, 1023, 0, 100);
 Serial.print(plmz);
 Serial.println();
 if (plmz >= 75)
{
    pastTime    = currentTime;
    currentTime = millis();
    unsigned long timePassed = currentTime - pastTime;
    if (timePassed >= 1000);
            {
            seconds ++;
               pastTime = currentTime;
               blitz();
            }
   if ( seconds == 20 ) {
    Serial.print("Done!");
    Serial.println();
    seconds = 0; 
    steps = 5;
    Serial.print("All done!");
    digitalWrite(blitzled1, LOW);
    digitalWrite(blitzled2, LOW);
    myservo.write(0);
    
  }
    
  Serial.println();
  delay(50);
  
}
}

}
void blitz() {
  unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
unsigned long previousMillis = 0;
const long interval = 100;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
    digitalWrite(blitzled1, ledState);
    delay(100);
    digitalWrite(blitzled2, ledState);
  }
}

void startup() {
  digitalWrite(blitzled1, HIGH);
  delay(1000);
  digitalWrite(blitzled2, HIGH);
  delay(1000);
  digitalWrite(redled, HIGH);
  delay(1000);
  digitalWrite(orangeled, HIGH);
  delay(1000);
  digitalWrite(yellowled, HIGH);
  delay(1000);
  digitalWrite(blueled, HIGH);
  delay(3000);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(1000);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(150);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(150);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(150);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(150);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
  delay(150);
  digitalWrite(blitzled1, HIGH);
  digitalWrite(blitzled2, HIGH);
  digitalWrite(redled, HIGH);
  digitalWrite(orangeled, HIGH);
  digitalWrite(yellowled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(150);
  digitalWrite(blitzled1, LOW);
  digitalWrite(blitzled2, LOW);
  digitalWrite(redled, LOW);
  digitalWrite(orangeled, LOW);
  digitalWrite(yellowled, LOW);
  digitalWrite(blueled, LOW);
}

Credits

Dragos
0 projects • 4 followers
User information not found.

Comments