-2

i want to make a uselessbox .i connected the circuit correctly,i checked every thing several times and every thing is in right place[ based on descriptions and pattern],but when i turn it on,the box servo closes the door and then handservo starts to turn off the switch ,the code says:[the boxservo opens the door then handservo starts to turn off the switch,when the switch is off and handservo returned to its place then boxservo closes the door]but my box works like this(the boxservo closes the door then handservo starts to turn off the switch,when the switch is off and handservo returned to its place,then boxservo opens the door).what should i do to solve this problem?Useless box wiring and code

this is the code that i have uploaded:

#include <Servo.h> 
Servo handServo; 
Servo boxServo;
int switchStatus=0, action=1, vot, randNumber=0; 
const int ledPin = 13; 
const int frontSwitchPin = 2;
const int handServoPin = 5;
const int boxServoPin = 6;
void setup()
{
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT); 
 digitalWrite(ledPin,HIGH);
 handServo.attach(handServoPin); 
 boxServo.attach(boxServoPin);
 handServo.write(180); 
 boxServo.write(70);
 //randomSeed(analogRead(0));
}
void loop()
{
 switchStatus = digitalRead(frontSwitchPin); 
 //action = random(1,16);
 if (switchStatus == LOW){ 
 if (action == 1)
 {
 Serial.println("Action 1"); 
 for (int i = 70; i <= 110; i++)
 {
 boxServo.write(i);
 delay(20);
 }
 for (int i = 180; i >= 35; i--)
 {
 handServo.write(i);
 delay(20);
 }
 delay(1000);
 handServo.write(26);
 delay(200);
 for (int i = 26; i <=180; i++)
 {
 handServo.write(i);
 delay(20);
 }
 for (int i = 110; i >= 70; i--)
 {
 boxServo.write(i);
 delay(20);
 }
 action++;
 }
 else if (action == 2)
 {
 Serial.println("Action 2"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(550);
 handServo.write(26);
 delay(550);
 handServo.write(180);
 delay(550);
 boxServo.write(70);
 delay(1500);
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(3000);
 boxServo.write(70);
 action++;
 }
 else if (action == 3)
 {
 Serial.println("Action 3"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(1000);
 boxServo.write(70);
 delay(2000);
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 handServo.write(26);
 delay(550);
 handServo.write(180);
 delay(500);
 boxServo.write(70);
 action++;
 }
 else if (action == 4)
 {
 Serial.println("Action 4"); 
 for (int i = 70; i <= 110; i++)
 {
 boxServo.write(i);
 delay(20);
 }
 for (int i = 180; i >= 35; i--)
 {
 handServo.write(i);
 delay(20);
 }
 delay(2000);
 handServo.write(26);
 delay(200);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 5)
 {
 Serial.println("Action 5"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(2000);
 handServo.write(65);
 delay(550);
 handServo.write(40);
 delay(200);
 handServo.write(65);
 delay(200);
 handServo.write(40);
 delay(200);
 handServo.write(65);
 delay(200);
 handServo.write(40);
 delay(200);
 handServo.write(65);
 delay(200);
 handServo.write(40);
 delay(200);
 handServo.write(65);
 delay(200);
 handServo.write(40);
 delay(200);
 handServo.write(65);
 delay(2000);
 handServo.write(26);
 delay(400);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 6) 
 {
 Serial.println("Action 6"); 
 for (int i = 70; i <110; i++)
 {
 boxServo.write(i);
 delay(20);
 }
 delay(1000);
 for (int i = 0; i < 12; i++)
 {
 for (int j = 70; j <= 110; j++){
 boxServo.write(j);
 delay(6);
 }
 delay(200);
 }
 for (int i = 180; i >= 35; i--)
 {
 handServo.write(i);
 delay(30);
 }
 handServo.write(26);
 delay(400);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 delay(1500);
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(3000);
 boxServo.write(80);
 action++;
 }
 else if (action == 7)
 {
 Serial.println("Action 7"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(400);
 handServo.write(26);
 delay(1000);
 for (int i = 0; i < 6; i++)
 {
 for (int j = 70; j <= 110; j++){
 boxServo.write(j);
 delay(6);
 }
 delay(200);
 }
 delay(500);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 8)
 {
 Serial.println("Action 8"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 handServo.write(26);
 delay(2000);
 for (int i = 0; i < 7; i++)
 {
 handServo.write(75);
 delay(100);
 handServo.write(40);
 delay(100);
 }
 delay(500);
 handServo.write(180);
 delay(1000);
 boxServo.write(70);
 action++;
 }
 else if (action == 9)
 {
 Serial.println("Action 9"); 
 for (int i = 70; i <= 105; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(2000);
 boxServo.write(110);
 for (int i = 180; i >=35; i--)
 {
 handServo.write(i);
 delay(40);
 }
 delay(500);
 handServo.write(26);
 delay(200);
 for (int i = 26; i <=180; i++)
 {
 handServo.write(i);
 delay(40);
 }
 boxServo.write(70);
 delay(2000);
 boxServo.write(100);
 delay(3000);
 boxServo.write(70);
 action++;
 }
 else if (action == 10)
 {
 Serial.println("Action 10"); 
 for (int i = 70; i <= 105; i++)
 {
 boxServo.write(i);
 delay(100);
 }
 delay(1000);
 for (int i = 0; i < 10; i++)
 {
 for (int j = 70; j <= 100; j++){
 boxServo.write(j);
 delay(6);
 }
 delay(100);
 }
 boxServo.write(110);
 delay(100);
 handServo.write(26);
 delay(650);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 11)
 {
 Serial.println("Action 11"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 handServo.write(26);
 delay(2000);
 for (int i = 0; i < 3; i++)
 {
 handServo.write(65);
 delay(200);
 handServo.write(40);
 delay(200);
 }
 delay(1500);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 delay(1500);
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 handServo.write(26);
 delay(3000);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 12)
 {
 Serial.println("Action 12"); 
 for (int i = 70; i <= 110; i++)
 {
 boxServo.write(i);
 delay(50);
 }
 delay(1000);
 for (int i = 180; i >= 26; i--)
 {
 handServo.write(i);
 delay(50);
 }
 delay(2000);
 handServo.write(26);
 delay(200);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action++;
 }
 else if (action == 13)
 {
 Serial.println("Action 13"); 
 for (int i = 70; i <= 110; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(2000);
 for (int i = 180; i >= 60; i--)
 {
 handServo.write(i);
 delay(40);
 }
 for (int i = 0; i < 3; i++)
 {
 handServo.write(60);
 delay(200);
 handServo.write(40);
 delay(800);
 }
 handServo.write(26);
 delay(2000);
 handServo.write(180);
 delay(500);
 boxServo.write(70);
 action++;
 }
 else if (action == 14)
 {
 Serial.println("Action 14"); 
 for (int i = 70; i <= 105; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(4000);
 boxServo.write(110);
 handServo.write(26);
 delay(650);
 handServo.write(180);
 delay(500);
 boxServo.write(100);
 delay(4000);
 boxServo.write(70);
 action++;
 }
 else if (action == 15)
 {
 Serial.println("Action 15"); 
 for (int i = 70; i <= 105; i++){
 boxServo.write(i);
 delay(6);
 }
 delay(1000);
 for (int i = 0; i < 3; i++)
 { 
 for (int j = 70; j <= 105; j++){
 boxServo.write(j);
 delay(50);
 }
 for (int j = 105; j >= 70; j--)
 {
 boxServo.write(j);
 delay(50);
 }
 }
 for (int j = 70; j <= 110; j++){
 boxServo.write(j);
 delay(50);
 }
 for (int i = 180; i >= 35; i--)
 {
 handServo.write(i);
 delay(40);
 }
 delay(1000);
 handServo.write(26);
 delay(400);
 handServo.write(180);
 delay(400);
 boxServo.write(70);
 action = 1;
 }
 }
}
asked Mar 21, 2020 at 12:13
7
  • please edit your post ... convert the wall of words into clear sentences .....what is the actual problem that the program is exhibiting? Commented Mar 21, 2020 at 13:40
  • And please point us to the action, that is doing problematic, so that we know, where to search in your long code Commented Mar 21, 2020 at 14:28
  • you are mistaken about this the boxservo works contrary to the code ...... it should say the boxservo works exactly as programmed Commented Mar 21, 2020 at 16:58
  • when the switch is off boxservo opens the door and when the switch is on boxservo closes the door that is the problem.it's supposed to open the door when the switch is on and close the door when the switch is off. Commented Mar 25, 2020 at 15:35
  • If the switch is mounted upside down, then pushing the switch up would close the box; but you need it to open the box instead. In that case, turn the switch so that pushing it up would open the box. Commented Mar 25, 2020 at 18:02

1 Answer 1

1

You have probably installed the box servo backwards so that when it tries to open it actually closes and vice versa.

answered Mar 24, 2020 at 23:24
3
  • no im sure that it is not bacward Commented Mar 25, 2020 at 15:23
  • Then you probably have a servo that is wired in reverse. You need to change the code to reverse the door movement servo. Commented Mar 26, 2020 at 11:08
  • i don't know exactly how to change the code.can you help me to change it?please Commented Mar 26, 2020 at 16:10

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.