Go Down

Topic: Condition IF (Read 416 times) previous topic - next topic

Hallo I have a problem. How does work condition IF with keyboard?
I want condition for example IF BUTTON_UP is pressed do cas++ and I donĀ“t know how to do it.
Please answear



    #include <LiquidCrystal.h>   // include LCD library
    /*--------------------------------------------------------------------------------------
      Defines
    --------------------------------------------------------------------------------------*/
    // Pins in use
    #define BUTTON_ADC_PIN           A0  // A0 is the button ADC input
    #define LCD_BACKLIGHT_PIN         3  // D3 controls LCD backlight
    // ADC readings expected for the 5 buttons on the ADC input
    #define RIGHT_10BIT_ADC          252  // right
    #define UP_10BIT_ADC            497  // up
    #define DOWN_10BIT_ADC          676  // down
    #define LEFT_10BIT_ADC          860  // left
    #define SELECT_10BIT_ADC        0  // right
    #define BUTTONHYSTERESIS         10  // hysteresis for valid button sensing window
    //return values for ReadButtons()
    #define BUTTON_NONE               0  //
    #define BUTTON_RIGHT              1  //
    #define BUTTON_UP                 2  //
    #define BUTTON_DOWN               3  //
    #define BUTTON_LEFT               4  //
    #define BUTTON_SELECT             5  //
    //some example macros with friendly labels for LCD backlight/pin control, tested and can be swapped into the example code as you like
    #define LCD_BACKLIGHT_OFF()     digitalWrite( LCD_BACKLIGHT_PIN, LOW )
    #define LCD_BACKLIGHT_ON()      digitalWrite( LCD_BACKLIGHT_PIN, HIGH )
    #define LCD_BACKLIGHT(state)    { if( state ){digitalWrite( LCD_BACKLIGHT_PIN, HIGH );}else{digitalWrite( LCD_BACKLIGHT_PIN, LOW );} }
    /*--------------------------------------------------------------------------------------
      Variables
    --------------------------------------------------------------------------------------*/
    byte buttonJustPressed  = false;         //this will be true after a ReadButtons() call if triggered
    byte buttonJustReleased = false;         //this will be true after a ReadButtons() call if triggered
    byte buttonWas          = BUTTON_NONE;   //used by ReadButtons() for detection of button events
    int cas = 0;
    int doba = 0;
    int interval = 0;
    int oneskorenie = 0;
    int i = 0;
    int x = 0;
   // char* Vyber[]={"Casovy interval", "nastavenie otacok", " nastavenie inter"
   
    /*--------------------------------------------------------------------------------------
      Init the LCD library with the LCD pins to be used
    --------------------------------------------------------------------------------------*/
    LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );   //Pins for the freetronics 16x2 LCD shield. LCD: ( RS, E, LCD-D4, LCD-D5, LCD-D6, LCD-D7 )
    /*--------------------------------------------------------------------------------------
      setup()
      Called by the Arduino framework once, before the main loop begins
    --------------------------------------------------------------------------------------*/
    void setup()
    {
       //button adc input
       pinMode( BUTTON_ADC_PIN, INPUT );         //ensure A0 is an input
       digitalWrite( BUTTON_ADC_PIN, LOW );      //ensure pullup is off on A0
       //lcd backlight control
       digitalWrite( LCD_BACKLIGHT_PIN, HIGH );  //backlight control pin D3 is high (on)
       pinMode( LCD_BACKLIGHT_PIN, OUTPUT );     //D3 is an output
       //set up the LCD number of columns and rows:
       lcd.begin( 16, 2 );
       //Print some initial text to the LCD.
       lcd.setCursor( 0, 0 );   //top left
       //          1234567890123456
       lcd.print( "Vitajte" );
       //
       lcd.setCursor( 0, 1 );   //bottom left
       //          1234567890123456
       lcd.print( "Stlacte tlacitko" );
    }
    /*--------------------------------------------------------------------------------------
      loop()
      Arduino main loop
    --------------------------------------------------------------------------------------*/
    void loop()
    {
       byte button;
     
       
     //  byte timestamp;
       
       //get the latest button pressed, also the buttonJustPressed, buttonJustReleased flags
       button = ReadButtons();
       





      if( buttonJustPressed )
          buttonJustPressed = false;
       if( buttonJustReleased )
          buttonJustReleased = false;
    }
    /*--------------------------------------------------------------------------------------
      ReadButtons()
      Detect the button pressed and return the value
      Uses global values buttonWas, buttonJustPressed, buttonJustReleased.
    --------------------------------------------------------------------------------------*/
    byte ReadButtons()
    {
       unsigned int buttonVoltage;
       byte button = BUTTON_NONE;   // return no button pressed if the below checks don't write to btn
       
       //read the button ADC pin voltage
       buttonVoltage = analogRead( BUTTON_ADC_PIN );
       //sense if the voltage falls within valid voltage windows
       if( buttonVoltage < ( RIGHT_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_RIGHT;
       }
       else if(   buttonVoltage >= ( UP_10BIT_ADC - BUTTONHYSTERESIS )
               && buttonVoltage <= ( UP_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_UP;
       }
       else if(   buttonVoltage >= ( DOWN_10BIT_ADC - BUTTONHYSTERESIS )
               && buttonVoltage <= ( DOWN_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_DOWN;
       }
       else if(   buttonVoltage >= ( LEFT_10BIT_ADC - BUTTONHYSTERESIS )
               && buttonVoltage <= ( LEFT_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_LEFT;
       }
       else if(   buttonVoltage >= ( SELECT_10BIT_ADC - BUTTONHYSTERESIS )
               && buttonVoltage <= ( SELECT_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_SELECT;
       }
       //handle button flags for just pressed and just released events
       if( ( buttonWas == BUTTON_NONE ) && ( button != BUTTON_NONE ) )
       {
          //the button was just pressed, set buttonJustPressed, this can optionally be used to trigger a once-off action for a button press event
          //it's the duty of the receiver to clear these flags if it wants to detect a new button change event
          buttonJustPressed  = true;
          buttonJustReleased = false;
       }
       if( ( buttonWas != BUTTON_NONE ) && ( button == BUTTON_NONE ) )
       {
          buttonJustPressed  = false;
          buttonJustReleased = true;
       }
       
       //save the latest button value, for change event detection next time round
       buttonWas = button;
       
       return( button );
    }



Shpaget

Use code tags (# icon).

Code: [Select]
else if(   buttonVoltage >= ( UP_10BIT_ADC - BUTTONHYSTERESIS )
               && buttonVoltage <= ( UP_10BIT_ADC + BUTTONHYSTERESIS ) )
       {
          button = BUTTON_UP;
          cas++;
       }

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy