sterretje:
You're missing {} for the if. Only the delay(500) is conditionally executed if the pin is LOW hence slowing down the process. The three lines after that are always executed regardless if the condition is true or false.
I've fixed the code, as seen below and this seems to work well.
#include <Keyboard.h>
const int ledPin = 13;
void setup()
{
pinMode(2, INPUT);
digitalWrite(2, HIGH);
}
void loop()
{
int digitalVal = digitalRead(2);
if((LOW) == digitalVal)
{delay(500);
Keyboard.press('a');
delay(100);
Keyboard.releaseAll();
}
}
I've attempted to edit the example for state edge detection using a tilt switch instead of a button, only it seems to print out streams and streams rapidly that the button state is changing state on the serial monitor. Does anyone know how I could fix this?
const int buttonPin = 2; // the pin that the pushbutton is attached to
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize serial communication:
Serial.begin(9600);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// 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
// wend from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
}