element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum serial monitor locks after exceeding threshold
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Verified Answer
  • Replies 18 replies
  • Answers 3 answers
  • Subscribers 403 subscribers
  • Views 1117 views
  • Users 0 members are here
Related

serial monitor locks after exceeding threshold

Former Member
Former Member over 12 years ago

My pro mini is writing values from a photocell to the serial monitor, reading correctly until exceeding the threshold, then stops and will not restart, even when the cell is returned to darkness. Assuming this is a software error. Would appreciate advise. Thanks.

 

#include <Stepper.h>

 

 

#define STEPS1 200

#define STOP 0

 

 

int rightSwitchPin =7;

int leftSwitchPin =8;

int sonarPin = A0;

int sonarValue = 0;

 

 

Stepper stepper1(STEPS1, 3,5,4,6);//bipolar

 

 

void setup()

{

  stepper1.setSpeed(30);

  Serial.begin(9600);

 

}

void loop()

{

  sonarValue = analogRead (sonarPin);

// Serial.println (sonarValue);

  delay(500);

 

 

  if (sonarValue >900)

  {

    Serial.println (sonarValue);

    while (digitalRead(rightSwitchPin) == LOW) //keep going until limit switch reached

    {

      stepper1.step(-1);  //move right

    }

    while (digitalRead(leftSwitchPin) == LOW) //keep going until limit switch reached

    {

      stepper1.step(1);  //move left

     

    }

  }

  else

  {

    stepper1.step (STOP);

  }

}

 


  • Sign in to reply
  • Cancel

Top Replies

  • mcb1
    mcb1 over 12 years ago in reply to Former Member +2
    Keith As Nico says ... Not sure where your sketch is, but you read the sonarValue at the start of the loop, then don't read it again until you hit the limit switch. The serial.println(sonarvalue) will…
  • billabott
    billabott over 12 years ago +1
    Have you tried changing the while statements to if statements?
  • Former Member
    Former Member over 12 years ago in reply to ntewinkel +1
    Thank you. After adding a println in each while statement, the sketch works fine. Had some help here. Keith
Parents
  • ntewinkel
    0 ntewinkel over 12 years ago

    I would add a serial.println within the while loops, like this:

     

    (digitalRead(rightSwitchPin) == LOW) //keep going until limit switch reached

        {

          Serial.println("rightSwitchPin is low");

          stepper1.step(-1);  //move right

        }

        while (digitalRead(leftSwitchPin) == LOW) //keep going until limit switch reached

        {

          Serial.println("leftSwitchPin is low");

          stepper1.step(1);  //move left    

        }

     

    I'm guessing that it's getting stuck in one of those loops.

     

    Cheers,

    -Nico

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to ntewinkel

    Yes! I added the "println" under the while, but it works just the same.

    Thanks so much.

     

    Keith

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • ntewinkel
    0 ntewinkel over 12 years ago in reply to Former Member

    I just looked at the details of Stepper.step, and it looks like this block is not needed (taking 0 steps should do nothing)...

      else

      {

        stepper1.step (STOP);

      }

     

    Maybe remove that block, in case that's causing the issue?

     

    ps, from the code it looks like when sonarValue goes over 900, the stepper motor will go all the way right until the limit switch is hit, and then it will go all the way left until the limit switch is hit, and then it reads the sensor again, waits half a second, and repeats the process. Was that the intention?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to ntewinkel

    Thank you.  After adding a println in each while statement, the sketch

    works fine. Had some help here.

     

    Keith

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • mcb1
    0 mcb1 over 12 years ago in reply to Former Member

    Keith

     

    As Nico says ...

     

    Not sure where your sketch is, but you read the sonarValue at the start of the loop, then don't read it again until you hit the limit switch.

    The serial.println(sonarvalue) will always be the same until the switch limit is reached.

     

    You can combine items in the If statement so that it becomes :-

     

    void loop()

    {

     

      sonarValue = analogRead (sonarPin);

      Serial.println (sonarValue);

     

      if (sonarValue >900 && digitalRead(rightSwitchPin) == LOW)   // below 900 and keep going until right limit

        {

            stepper1.step(-1);  //move right

            Serial.println (sonarValue);

        }

     

        if (sonarValue >900 && digitalRead(leftSwitchPin) == LOW)   //below 900 keep going until left limit

        {

            stepper1.step(1);  //move left

            Serial.println (sonarValue);

        {

    }

     

     

    This sketch (and the others) still has a problem .....

     

    This will read the sonarPin and if less than 900 AND the limit switch isn't reached, will step -1.

    Since the sonarValue is still less than 900 and the other limitswitch isn't reached, will step 1.

    Basically it will go up one and back one.

     

    Is this what you want or would you prefer it to go from one limit switch to the other while the sonarValue is below 900.?

     

     

    obviously if the sonar value is greater than 900 its going to print flat out, so a delay/timer or something else is a good idea...

     

     

    Mark

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • billabott
    0 billabott over 12 years ago in reply to mcb1

    I think you nailed it, Mark Beckett.  The problem has nothing to do with the sensor at all.  It has to do with the fact that there is no secondary variable that REMEMBERS that the rightSwitchPin was HIGH just last go round.  The same thing goes for the leftSwitchPin.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to billabott

    Yes, thanks for the advise. I was playing with the switches and noticed

    some positive behavior but didn't understand how to push it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 12 years ago in reply to billabott

    Yes, thanks for the advise. I was playing with the switches and noticed

    some positive behavior but didn't understand how to push it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube