For my school project, I need to make a useless box using Arduino.
it is meant to work every case from 0 to 5 separately.
But I keep messing up the cases and basically everything else. I really can't figure this kind of difficult problem out since I just recently started coding.
Any help would be greatly appreciated!
Here's my code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
int ldr = A3; //ldr definieeren en koppelen aan pin
int vibrSensor = 11; //Vibratie Sensor definieeren en koppelen aan pin
int toggleSwitch = 3; //Toggle switch definieeren en koppelen aan pin
int vingerBev = 4; //Vinger Beveiliging definieeren en koppelen aan pin
int microSwitch = 5; //Microswitch definieeren en koppelen aan pin
int buzzer = 6; //Buzzer definieeren en koppelen aan pin
int programCount = 0;
int val = 0;
int ldrStatus = analogRead(ldr);
Servo vinger; // vinger servo definieeren
Servo deksel; //deksel servo definieeren
LiquidCrystal_I2C lcd(0x3f, 16, 2); // LCD definieeren
int pos = 180;
void setup() {
pinMode(vibrSensor, INPUT); //Input toewijzen
pinMode(ldr, INPUT); //Input toewijzen
pinMode(toggleSwitch, INPUT); //Input toewijzen
pinMode(vingerBev, INPUT); //Input toewijzen
pinMode(microSwitch, INPUT); //Input toewijzen
pinMode(buzzer, OUTPUT); //Output toewijzen
vinger.attach(9); // Vinger Koppelen aan pin 9
deksel.attach(10); //Deksel koppelen aan pin 10
vinger.write(145); //Start Positie Vinger
deksel.write(0); //Start Positie deksel
lcd.init(); //Lcd initialiseren/starten
lcd.backlight();
Serial.begin(9600);
Serial.print("My Sketch has started");
Serial.println("setup");
programCount = 0;
}
void loop() {
val = digitalRead(toggleSwitch);
Serial.println("Toggleswitch =");
Serial.println(val);
Serial.println(" ");
Serial.println("Loop");
delay(1000);
Serial.println(" ");
Serial.println("Current program");
Serial.println(programCount);
switch (programCount)
{
case 0:
while (programCount = 0) {
Serial.println("Case 0 Start");
if (val == 1) {
Serial.println("Funct 0");
Serial.println("closeSim");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print(" Hi i'm Chucky!"); // Print "Til de doos op!"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("Wanna play?");
servo_ac();
Serial.println(toggleSwitch);
programCount = 1;
Serial.println("Case 0 End");
break;
}
}
case 1:
while (programCount = 1) {
Serial.println("Case 1 Start");
Serial.println("ldrStatus = ");
Serial.println(ldr);
delay(1000);
if (ldr >= 15) {
for (pos = 0; pos <= 50; pos += 2) { // goes from 0 degrees to 180 degrees in steps of 1 degree
deksel.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
delay(1000);
if (val == 1) {
Serial.println("Case 1");
Serial.println("Lichtmetinguitvoeren");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print("Don't Touch me!"); // Print "Til de doos op!"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("STOP!");
//deksel omhoog
if (ldr >= 15) {
servo_ac();
programCount = 2;
}
}
}
Serial.println("Case 1 End");
break;
}
}
case 2:
while (programCount = 2) {
Serial.println("Case 2 Start");
delay(100);
if (val == 1 && programCount == 2) {
delay(1000);
Serial.println("Case 2");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print("Lift me up!"); // Print "Til de doos op!"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("Now!"); // Print "NU!"
Serial.println("MSG 2 Printed");
if (microSwitch == 1) { //microswitch uitlezen op High signaal
Serial.println("microSwitch == 1");
servo_ac(); //verwijzing naar Servo deelprogramma
programCount = (3);
}
Serial.println("Case 2 End");
break;
}
}
case 3:
while (programCount = 3) {
Serial.println("Case 3 Start");
if (val == 1) {
delay(1000);
Serial.println("Case 3");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print("Press the red"); // Print "Press the red"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("Buttons NOW!!"); // Print "Buttons NOW!!"
Serial.println("MSG 3 Printed");
delay(1000);
if (vingerBev == 1) { //vingerbeveiliging uitlezen op High signaal
Serial.println("Vingerbev = HIGH");
servo_ac(); //verwijzing naar Servo deelprogramma
programCount = 4;
}
Serial.println("Case 3 End");
break;
}
}
case 4:
while (programCount = 4) {
Serial.println("Case 4 Start");
if (val == 1) {
Serial.println("Case 4");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print("Shake The boxx"); // Print "Shake The boxx"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("Shake it NOW!!"); // Print "Shake it NOW!!"
Serial.println("MSG 4 Printed");
delay(1000);
if (digitalRead(vibrSensor) == 1) { //vibratiesensor uitlezen op signaal waarde
Serial.println("vibrSensor = HIGH");
servo_ac(); //verwijzing naar Servo deelprogramma
programCount = 5;
}
Serial.println("Case 4 End");
break;
}
}
case 5:
while (programCount = 5) {
Serial.println("Case 5 Start");
if (programCount = 5) {
if (digitalRead(toggleSwitch) == 1) {
Serial.println("Case 5");
lcd.setCursor(2, 0); // Zet Cursor op de derde kolom eerste rij.
lcd.print("I give up!"); // Print "I give up!"
lcd.setCursor(2, 1); //Zet Cursor op de derde kolom tweede rij.
lcd.print("GAME OVER"); // Print "GAME OVER"
servo_ac();
programCount = 0;
}
Serial.println("Case 5 End");
break;
}
default:
Serial.println("default");
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
}
}
}
void servo_ac() //Standaard programma voor herhaalde servo bewegingen.
{
Serial.println("ServoOnOff");
for (pos = 0; pos <= 50; pos += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree
deksel.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 145; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
vinger.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 0; pos <= 145; pos += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree
vinger.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 50; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
deksel.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
Serial.println("Servo Finished");
break;
}
}