// C++ code
//
/*
State change detection (edge detection)
Often, you don't need to know the state of a
digital input all the time, but you just need
to know when the input changes from one state to
another. For example, you want to know when a
button goes from OFF to ON. This is called
state change detection, or edge detection.
This example shows how to detect when a button
or button changes from off to on and on to off.
The circuit:
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
* LED attached from pin 13 to ground (or use the
built-in LED on most Arduino boards)
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/ButtonStateChange
*/
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int buttonState = 0;
int lastButtonState = 0;
int buttonPushCounter = 0;
int Position = 1;
int Number = 0;
void setup()
{
pinMode(2, INPUT);
lcd.begin(16, 2);
lcd.setBacklight(1);
lcd.setCursor(0, 0);
lcd.print("Pos");
lcd.setCursor(7, 0);
lcd.print("NO");
lcd.setCursor(11, 0);
lcd.print("Count");
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
Screenwrite();
// read the pushbutton input pin
buttonState = digitalRead(2);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH, then the button
// went from off to on
buttonPushCounter += 1;
Number += 1;
} else {
// if the current state is LOW, then the button
// went from on to off
// Serial.println("off");
lcd.setCursor(0, 0);
// lcd_1.print("OFF");
}
// delay a little bit to avoid debouncing
delay(5); // Wait for 5 millisecond(s)
}
// save the current state as the last state, for
// the next time through the loop
lastButtonState = buttonState;
// turns on the LED every four button pushes by
// checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the devision of two numbers
if (buttonPushCounter % 4 == 0) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
NumberChange();
// PositionChange();
}
void Screenwrite()
{
lcd.setCursor(0, 1);
lcd.print(Position);
lcd.setCursor(11, 1);
lcd.print(buttonPushCounter);
lcd.setCursor(7, 1);
lcd.print(Number);
return;
}
void NumberChange()
{
if (Number == 7 && Position < 6)
{
Position += 1;
Number = 1;
Screenwrite();
}
else
{
if (Position == 6)
Position = 1;
Screenwrite();
}
return;
}