Go Down

Topic: How to increment and decrement in value using LCD keypad buttons (Read 365 times) previous topic - next topic

ajjuazher

Hi, I m new to this forum and also new to arduino.. :)
i don't know how to increment or decrement in nimber using LCD keypad shield
here is the code i want to use up button for increment and down button for decrement kindly help.
i want to make increment in cutting feed and no of grooves

i have used library for keypad shield.
here is the link to download.

https://cdn.instructables.com/ORIG/FUP/530M/ITKJE80M/FUP530MITKJE80M.zip


#include <LiquidCrystal.h>
#include <DFR_LCD_Keypad.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
DFR_LCD_Keypad keypad(A0, &lcd);

int last_key, key;
 
int totalcounts=200;              //pulses for one complete rotation
int groove=0;                     //pulses for one groove
int groove_pulse=0;
int grov_counts=0;                // Pulses required for one groove rotation
// buttons Status
                                 //Push buttons setting
int add_pulse = 0;               // required groove number addition
int subt_pulse = 0;              // required groove number subtraction
int t_pulse=0;                   // equal to # of grooves
int LCD=0;                       // LCD no. of groove  display
int con=0;
int add_cutf=1;
int subt_cutf;
int cut_feed;
int CF =0;
void setup()
{
       
          lcd.clear();
          lcd.begin(16, 2);
          lcd.setCursor(0, 0);
          lcd.print("I I U I");
          lcd.setCursor(0, 1);
          lcd.clear();
       int cut_feed=0;
                //CUTTING FEED  SETUP LOOP
while(2) {
 
              lcd.setCursor(0, 0);
              lcd.print("Max_Cutting (20)");
              lcd.setCursor(1, 1);
                       lcd.print("Cut Feed = ");
           
                lcd.setCursor(12, 1);
                      lcd.print(cut_feed);
                     CF = cut_feed;
if (key==KEY_UP)
      {
                      add_cutf=cut_feed;
                      add_cutf = add_cutf + 1;
                      cut_feed= add_cutf;
lcd.setCursor(1, 1);
                      lcd.print("cutting =");
                      lcd.setCursor(12, 1);
                      lcd.print(cut_feed);
                      subt_cutf=cut_feed;
          }
if (key == KEY_DOWN)
          {
                        subt_cutf = subt_cutf - 1;
                        cut_feed = subt_cutf;
                     lcd.setCursor(1, 1);
                     lcd.print("cutting =");
                     lcd.setCursor(12, 1);
                     lcd.print(cut_feed);
          }
if (key== KEY_SELECT)     
                                            //while (buttonState4=1){}           
{
lcd.clear();
CF = 21-cut_feed;
break;     
      } 
    }       
 
                  // TEETH/ GROOVE ENTRY LOOP
while(1)
{
              int add_pulse = subt_pulse;
              lcd.setCursor(2, 0);
                        lcd.print("# of Groove/s");
              lcd.setCursor(0, 1);
              lcd.print("Enter Here");
              lcd.setCursor(13, 1);
                        lcd.print(LCD);
if (key== KEY_UP)
{
                     
                         add_pulse = add_pulse + 1;
                          LCD= add_pulse;
                          subt_pulse=LCD;
                        lcd.setCursor(13, 1);
                        lcd.print(LCD);
}

if (key == KEY_DOWN)
{
                      lcd.setCursor(0, 0);
                      lcd.print("# of Groove/s    ");
                          subt_pulse = subt_pulse - 1;
                          LCD= subt_pulse;
                          add_pulse=LCD;
                      lcd.setCursor(13, 1);
                      lcd.print(LCD);

}
                      groove=LCD;
                      Serial.println(groove);
/*if (key == KEY_SELECT)
{
                      lcd.setCursor(13, 1);
                      lcd.print(" OK ");
                      digitalWrite(40, LOW);
}*/
                      groove=LCD;
                      Serial.println(groove);
     
                  if (key==KEY_SELECT)     
                                            //while (buttonState4=1){}           
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Required GROOVEs");
lcd.setCursor(6,1);
lcd.print(groove);     
con=1;
}     
}       

  void loop();         //Main Loop Begins
               //HD_RT Loop
        lcd.begin(16, 2);
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Hd_Rotates ");
              digitalWrite(42, HIGH);
              digitalWrite(52, HIGH);
  grov_counts=(200/ groove);
//while (t_pulse < groove)     {                                  //Number of groove or teeth //WhileBegins
  for (int pulse = 0; pulse <= grov_counts; pulse++)                      // pulses required for head                                   // rotation for one groove
          {                   //For Begins
              lcd.setCursor(11, 0);
            lcd.print(pulse);
lcd.setCursor(0, 1);
        lcd.print("Groove");
          lcd.setCursor(9, 1);
          lcd.print(t_pulse);
                              // Head rotation indicator 
              digitalWrite(26, HIGH);
                delay(3);
              digitalWrite(26, LOW);
                delay(2);
          }                 //For Ends
                //if (t_pulse >= groove)exit;                   //If Statement Starts/Ends                  //To be moved to the end
    t_pulse ++;
                  //      }   //While Ends
          delay(5000);                           
        digitalWrite(42, LOW);
   
              //FW_RW loop
            lcd.clear();
            lcd.begin(16, 2);
            lcd.setCursor(0, 0);
            lcd.print("- UNDER PROCESS-");
            lcd.setCursor(0, 1);
            lcd.print("*** Cutting ***");
for (;;)          //For Begins
{             
                digitalWrite(28, HIGH);
                digitalWrite(50, HIGH);
                digitalWrite(46, LOW);
                digitalWrite(22, HIGH);
                  delay(CF);   
                digitalWrite(22, LOW);
                  delay(CF);
                if (digitalRead(30))break; }  //For Ends
                delay(5000);
         lcd.setCursor(0, 1);
         lcd.print("***Reversing***");         
         
for (;;){                 //For Begins
                  digitalWrite(50, LOW);
                  digitalWrite(52, HIGH);
                  digitalWrite(28, LOW);               
                  digitalWrite(24, HIGH);
digitalWrite(22, HIGH);
                    delay(1);           
                  digitalWrite(22 , LOW);
                    delay(1);
if (digitalRead(32))break;}   //For Ends

              digitalWrite(24, LOW);
              digitalWrite(52, LOW);
if (t_pulse >= groove){
              lcd.begin(16, 2);
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Done");
                delay(5000);
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("More Grooving?");
              lcd.setCursor(0, 1);
              lcd.print("SW3=No, SW4=Yes");
}
}

dougp

These two lines appear in the example.  They do not  appear in your sketch (which should be posted in code tags).



Code: [Select]
last_key = keypad.get_last_key();
key      = keypad.read_key();


'key' is used to tell which button was pressed.
So two neutrinos went into a bar.  Nothing happened.  They were just passing through.

LesserMole

Assuming you have one of these DFR shields, have a look at #8 here which I think does what you need.


Go Up