Hi guys
simle question here regarding a button.
i am using a button in a project and when its pressed a if and a for loop start.
the button state is being read as high but when i do press it seems to miss it.
i think the code is possible running to fast for it to be read when i press it or something do i need to add a debounce feature or a delay to make it read.
code attached
#include <Wire.h>
#include <Adafruit_MMA8451.h>
#include <Adafruit_Sensor.h>
Adafruit_MMA8451 mma = Adafruit_MMA8451();
Adafruit_MMA8451 mma2 = Adafruit_MMA8451();
int addr = 0;
const int buttonPin = 2;
int buttonState = 0;
int measurementCount =1;
void setup(void) {
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
Serial.println("Adafruit MMA8451 test!");
if (! mma.begin(0x1C)) { // First sensor in the address of 0x1C
Serial.println("Couldnt start first sensor");
while (1);
}
if (! mma2.begin(0x1D)) { // Second sensor in the address of 0x1D
Serial.println("Couldnt start second sensor");
while (1);
}
}
void loop() {
/* Get a new sensor event */
sensors_event_t event;
sensors_event_t event2;
mma.getEvent(&event);
mma2.getEvent(&event2);
/* Display the results (acceleration is measured in m/s^2) */
Serial.print("X: \t"); Serial.print(event.acceleration.x); Serial.print("\t");
Serial.print("Y: \t"); Serial.print(event.acceleration.y); Serial.print("\t");
Serial.print("Z: \t"); Serial.print(event.acceleration.z); Serial.print("\t"); //sensor one data print
Serial.println("m/s^2 ");
Serial.print("X: \t"); Serial.print(event2.acceleration.x); Serial.print("\t");
Serial.print("Y: \t"); Serial.print(event2.acceleration.y); Serial.print("\t");
Serial.print("Z: \t"); Serial.print(event2.acceleration.z); Serial.print("\t"); //sensor two data print
Serial.println("m/s^2 ");
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
if(buttonState == LOW){
float valx = event.acceleration.x;
// EEPROM.put(addr, valx);
Serial.print("valx ");
Serial.print(valx);
float valx2 = event2.acceleration.x;
// EEPROM.put(addr, valx2);
Serial.print("valx2 ");
Serial.print(valx2);
float valy = event.acceleration.y;
// EEPROM.put(addr, valy);
Serial.print(" valy ");
Serial.print(valy);
float valy2 = event2.acceleration.y;
// EEPROM.put(addr, valy2);
Serial.print("valy2 ");
Serial.print(valy2);
float valz = event.acceleration.z;
// EEPROM.put(addr, valz);
Serial.print(" valz ");
Serial.print(valz);
Serial.println();
float valz2 = event2.acceleration.z;
// EEPROM.put(addr, valz2);
Serial.print("valz2 ");
Serial.print(valz2);
for(measurementCount; measurementCount<100; measurementCount++) {
sensors_event_t event;
sensors_event_t event2;
mma.getEvent(&event);
mma2.getEvent(&event2);
float NewX;
NewX = event.acceleration.x - valx;
Serial.print("Newx ");
Serial.print(NewX);
float NewY;
NewY = event.acceleration.y - valy;
Serial.print(" NewY ");
Serial.print(NewY);
float NewZ; //NEW Z
NewZ = event.acceleration.z - valz;
Serial.print(" NewZ ");
Serial.print(NewZ);
Serial.println();
float NewX2;
NewX2 = event2.acceleration.x - valx2;
Serial.print("Newx2 ");
Serial.print(NewX2);
float NewY2;
NewY2 = event2.acceleration.y - valy2;
Serial.print(" NewY2 ");
Serial.print(NewY2);
float NewZ2; //NEW Z
NewZ2 = event2.acceleration.z - valz2;
Serial.print(" NewZ2 ");
Serial.print(NewZ2);
Serial.println();
Serial.print("measurementcout");
Serial.println(measurementCount);
}
}
delay(500);
}