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 Arduino lcd button input help
  • 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 16 replies
  • Answers 2 answers
  • Subscribers 403 subscribers
  • Views 1956 views
  • Users 0 members are here
  • help
  • asap
  • beginner
Related

Arduino lcd button input help

Former Member
Former Member over 11 years ago

I am working on a project and i'm trying to get the lcd to print what button was pressed, but it does not respond to the buttons I am going off of my "Arduino Projects Book" so that may be why the code is a bit messy.

 

 

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int buttonOne = 8;

const int buttonTwo = 7;

int prevSwitchState = 0;

int switchState = 0;

int prevSwitchStateTwo = 0;

int switchStateTwo = 0;

void setup(){

  lcd.begin(16, 2); 

pinMode(buttonOne &&  buttonTwo, INPUT);

   lcd.print("Welcome"); 

lcd.setCursor(0,1);

  lcd.print("Lftbtn = A");

  delay (5000); 

lcd.clear();//Clears screen

lcd.print("Rgtbtn = B");

  delay (5000); 

lcd.clear();

}

void loop(){ 

  lcd.setCursor(0,0);

   lcd.print("test"); 

switchState = digitalRead(buttonOne); 

if (prevSwitchState != switchState){   

if (buttonOne == HIGH){    lcd.print("B");   

} 

} 

else if ( prevSwitchStateTwo != switchStateTwo){  

  if (buttonTwo == HIGH){  

lcd.print("A");   

} 

} 

}

  • Sign in to reply
  • Cancel
Parents
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago

    first you can not initialise two inputs with one statement

    pinMode(buttonOne &&  buttonTwo, INPUT); will not work, you just tried to initialise button 0 (7 && 8) results in 0

    you need to do this

    pinMode(buttonOne, INPUT);

    pinMode(buttonTwo, INPUT);



    second you cant read two buttons at one with this kind of code, you can do it but using more advanced code, your not there yet


    so you need

    switchState = digitalRead(buttonOne);  
    if (prevSwitchState != switchState){    
         if (buttonOne == HIGH){   
               lcd.print("B");    
         }  
    }  
    switchStateTwo = digitalRead(buttonTwo);  
    if (prevSwitchStateTwo != switchStateTwo ){    
         if (buttonTwo== HIGH){   
               lcd.print("A");    
         }  
    } 


    this should fix your problem, note this is only correcting part of your program, you will need to fit it into your code


    Regards


    Peter

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    So in the end it should be like this?

     

     

    #include LiquidCrystal

    lcd(12, 11, 5, 4, 3, 2);

    const int buttonOne = 8;

    const int buttonTwo = 7;

    int prevSwitchState = 0;

    int switchState = 0;

    int prevSwitchStateTwo = 0;

    int switchStateTwo = 0;

    void setup(){ 

    lcd.begin(16, 2);

      pinMode(buttonOne, INPUT);

      pinMode(buttonTwo, INPUT);

    lcd.print("Welcome"); 

    lcd.setCursor(0,1);

    lcd.print("Lftbtn = A");

      delay (5000);

      lcd.clear();//Clears screen

      lcd.print("Rgtbtn = B");

      delay (5000);

      lcd.clear();

    }

    void loop(){

      lcd.setCursor(0,0);

      switchState = digitalRead(buttonOne);

      if (prevSwitchState != switchState){       

      if (buttonOne == HIGH){      

         lcd.print("B");       

      }  

    }   

    switchStateTwo = digitalRead(buttonTwo);

       if (prevSwitchStateTwo != switchStateTwo ){   

          if (buttonTwo== HIGH){        

         lcd.print("A");       

      }  

    }  

    }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to Former Member

    looks correct, have you tried it yet ?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    Ya I have tried it, but it still doesn't print the letters out. Maybe the buttons are broken?

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

    Do you get the messages displayed on the LCD during the setup? (The welcome message etc) That would at least confirm the LCD and Arduino are both functional.

     

    You can easily test if the buttons are broken by using either a resistance / continuity function on a multimeter, or failing that just take a line from the 5v on your Arduino, put an LED into a current limiting resistor and then the switch / button the other side of which connect to GND.

     

    Have you pulled the pins 7 & 8 down to GND with a resistor (I usually go for 10K but most higher values would be ok)? This ensures the pin isn't floating and will read correctly when the switch is pushed.

     

    The other thing that you could be giving you problems is switch bouncing. It looks like the code you have based you sketch on originally had some debouncing in it that hasn't quite made it across to your version. That is my assumption of the use of the prevSwitchState int as in your sketch it never changes and I can't really see a need for it.

     

    There are a couple of different ways of debouncing a button if you believe that this is causing you a problem. Check out the Examples folder in the arduino IDE. In there you will see the Digital folder and inside a Debounce sketch which takes a reading from a button but doesn't act upon it for a few milliseconds when it can be sure that the switch has finished bouncing.

     

    A good video to watch that might help you with tracking down some of these problems is the Tutorials for Arduino series by Jeremy Blum, specifically episode 2 where is sets up and input switch and walks though writing the code to debounce the input. https://www.youtube.com/watch?v=_LCCGFSMOr4

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

    The setup messages are displayed and I have 10K resistors to ground, and the buttons seem to be working. I'll look up Jermey Blum's video.

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

    The setup messages are displayed and I have 10K resistors to ground, and the buttons seem to be working. I'll look up Jermey Blum's video.

    • 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