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 My first switch statement
  • 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 Not Answered
  • Replies 14 replies
  • Subscribers 402 subscribers
  • Views 2978 views
  • Users 0 members are here
Related

My first switch statement

Former Member
Former Member over 13 years ago

Im trying to use a switch statement to jump to a different function.  All of the lessons I find just tell me how to turn on leds or outputs.  So I have no idea of what to do here.  So far I have this.

 

 

{

int range;     // I just used this cause it was in an example, I think I need it to name my switch statement. 

int flasha;  //  This is the subroutine I want to run.  I will have more late just trying to figure out the first one.

switch(range);

{

case 0:  //  I don't know why I have  to use "0"  it is just in all of the examples and nothing else works.

state==1, flasha;  // state is my input.  When a button is pressed it will count the number of presses and send it to the approiate subroutine.

break:

}

}

 

When I compile this program I get the error

 

case label '0' not within a switch staetment.

 

Can anyone explain what this means or what I'm doing wrong?

 

Thanks

  • Sign in to reply
  • Cancel

Top Replies

  • billabott
    billabott over 13 years ago +1
    Hey Dan & Nico. Looking at http://www.arduino.cc/en/Tutorial/SwitchCase Would not the range value be determined before entering the switch(range)&case structure? I guess you could set it up that for case…
  • ntewinkel
    ntewinkel over 13 years ago in reply to Former Member +1
    Hi Dan, You are not defining and calling your functions correctly. Remove these two lines, as they define them as integers, which is not the intention: int flasha; int flashb; In the switch statement,…
  • ntewinkel
    ntewinkel over 13 years ago in reply to Former Member +1
    Here's a good link too: http://diyroboticslab.wordpress.com/2009/06/04/ledblink-arduino-program/ It goes into the C programming language, and also has links to what error messages mean.
Parents
  • Former Member
    0 Former Member over 13 years ago

    Thanks for all the help.  Just made a big improvement and I almost got it working.  There are only 2 problems now.  1 I have to hold the button down for about 2 or 3 seconds for it to switch subroutines.  I can deal with that but can I speed it up?  2. I made a note called "RIGHT HERE" I try to reset they count to 0.  It just keeps counting.  What did I do wrong?

     

     

     

     

    int state=8;

    int mi=9;

    int lastState=LOW;

    int lastbutton=LOW;

    int countmi=0;

    int countst=0;

    int button=LOW;

    int buttonst=LOW;

    void setup()

    {// open void setup

    Serial.begin(9600);

     

    pinMode(state, INPUT);//set pin 8

    pinMode(mi, INPUT);//set pin 9

    state=digitalRead(8);

    button=digitalRead(9);

    }//close void setup

     

    void loop()

    {//open void loop

     

    if (buttonst==HIGH)

        {//open state count

       

        if (buttonst==10)buttonst==0;                    RIGHT HERE

         countst++;

        Serial.println(countst);

        Serial.print("state =");                      

        }//closes state count

      //   Serial.print(buttonst); 

     

               {// open switch

              

              

                switch(countst)

                       {//open case

                         case 0:

                         buttonst=0;

                         flasha();

                         break;

     

                         case 1:

                         buttonst=2;

                         flashb();

                         break;

                        

                          case 2:

                         buttonst=3;

                         flashc();

                         break;

                        

                        

                        

                        }// close case

      

              }//close switch

         

        lastState=buttonst;

       

        buttonst=digitalRead(8);

      

     

        if (button==HIGH && lastbutton==LOW)

            {// open mi count

            countmi++;

            Serial.println(countmi);

            }//close mi count

        lastbutton=button;

        button=digitalRead(9);

    }//close void loop

     

      //open flasha

        void flasha()

        {

        int flasha;

        Serial.println("Hellow world");

    delay (1000);

      }//close flasha

     

      void flashb()

      {// open flashb

        int flashb;

        delay(1000);

        Serial.println("Not gonna happen");

      }//close flashb

     

      void flashc()

      {

        int flashc;

        delay(1000);

        Serial.println("I did it");

      }

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

    Good catch Billabot!

    That fun difference between the double equal sign == (compare) and the single equal sign = (assign) never gets old, does it?

     

    I'm a suspenders-and-belt guy myself so I usually use >=  just in case it advanced an extra buttonst count:


    if (buttonst >= 10) buttonst=0;            //   RIGHT HERE

     

     

    For the hard time pressing the button, it's because the delay(1000) calls halt execution for a full second while nothing else gets checked. See the "caveat" of the reference page: http://www.arduino.cc/en/Reference/delay

     

    You'd have to change the code quite a bit to make it multitask to catch the button press (or maybe the button can be handled via an interrupt? I haven't tried that in Arduino yet). Here is the example Arduino.cc gives: http://arduino.cc/en/Tutorial/BlinkWithoutDelay

     

    Hope that helps.

     

    Cheers,

    -Nico

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

    Good catch Billabot!

    That fun difference between the double equal sign == (compare) and the single equal sign = (assign) never gets old, does it?

     

    I'm a suspenders-and-belt guy myself so I usually use >=  just in case it advanced an extra buttonst count:


    if (buttonst >= 10) buttonst=0;            //   RIGHT HERE

     

     

    For the hard time pressing the button, it's because the delay(1000) calls halt execution for a full second while nothing else gets checked. See the "caveat" of the reference page: http://www.arduino.cc/en/Reference/delay

     

    You'd have to change the code quite a bit to make it multitask to catch the button press (or maybe the button can be handled via an interrupt? I haven't tried that in Arduino yet). Here is the example Arduino.cc gives: http://arduino.cc/en/Tutorial/BlinkWithoutDelay

     

    Hope that helps.

     

    Cheers,

    -Nico

    • 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