//Load Some Libraries #include #include #include /* * ------------ |Bike Lights Code V1 | ------------------ * By Angus Clayton 16th-21st Septemer 2017 * Project Page on Core Electronics. */ // SKIP DOWN TO VOID LOOP!!!(LINE 153) /* Assign a unique ID to this sensor at the same time */ Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345); void displaySensorDetails(void) { sensor_t sensor; accel.getSensor(&sensor); Serial.println("------------------------------------"); Serial.print ("Sensor: "); Serial.println(sensor.name); Serial.print ("Driver Ver: "); Serial.println(sensor.version); Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id); Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" m/s^2"); Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" m/s^2"); Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" m/s^2"); Serial.println("------------------------------------"); Serial.println(""); delay(500); } void displayDataRate(void) { Serial.print ("Data Rate: "); switch(accel.getDataRate()) { case ADXL345_DATARATE_3200_HZ: Serial.print ("3200 "); break; case ADXL345_DATARATE_1600_HZ: Serial.print ("1600 "); break; case ADXL345_DATARATE_800_HZ: Serial.print ("800 "); break; case ADXL345_DATARATE_400_HZ: Serial.print ("400 "); break; case ADXL345_DATARATE_200_HZ: Serial.print ("200 "); break; case ADXL345_DATARATE_100_HZ: Serial.print ("100 "); break; case ADXL345_DATARATE_50_HZ: Serial.print ("50 "); break; case ADXL345_DATARATE_25_HZ: Serial.print ("25 "); break; case ADXL345_DATARATE_12_5_HZ: Serial.print ("12.5 "); break; case ADXL345_DATARATE_6_25HZ: Serial.print ("6.25 "); break; case ADXL345_DATARATE_3_13_HZ: Serial.print ("3.13 "); break; case ADXL345_DATARATE_1_56_HZ: Serial.print ("1.56 "); break; case ADXL345_DATARATE_0_78_HZ: Serial.print ("0.78 "); break; case ADXL345_DATARATE_0_39_HZ: Serial.print ("0.39 "); break; case ADXL345_DATARATE_0_20_HZ: Serial.print ("0.20 "); break; case ADXL345_DATARATE_0_10_HZ: Serial.print ("0.10 "); break; default: Serial.print ("???? "); break; } Serial.println(" Hz"); } void displayRange(void) { Serial.print ("Range: +/- "); switch(accel.getRange()) { case ADXL345_RANGE_16_G: Serial.print ("16 "); break; case ADXL345_RANGE_8_G: Serial.print ("8 "); break; case ADXL345_RANGE_4_G: Serial.print ("4 "); break; case ADXL345_RANGE_2_G: Serial.print ("2 "); break; default: Serial.print ("?? "); break; } Serial.println(" g"); } void setup(void) { #ifndef ESP8266 while (!Serial); // for Leonardo/Micro/Zero #endif Serial.begin(9600); Serial.println("Accelerometer Test"); Serial.println(""); pinMode(12, OUTPUT); // sets the digital pin 13 as output pinMode(11, OUTPUT); pinMode(13, OUTPUT); pinMode(2, INPUT); /* Initialise the sensor */ if(!accel.begin()) { /* There was a problem detecting the ADXL345 ... check your connections */ Serial.println("Ooops, no ADXL345 detected ... Check your wiring!"); while(1); } /* Set the range to whatever is appropriate for your project */ accel.setRange(ADXL345_RANGE_16_G); // displaySetRange(ADXL345_RANGE_8_G); // displaySetRange(ADXL345_RANGE_4_G); // displaySetRange(ADXL345_RANGE_2_G); /* Display some basic information on this sensor */ displaySensorDetails(); /* Display additional settings (outside the scope of sensor_t) */ displayDataRate(); displayRange(); Serial.println(""); } void loop(void) { /* Get a new sensor event */ sensors_event_t event; accel.getEvent(&event); Serial.println(event.acceleration.x); //print x axis if (event.acceleration.x > 2.5) { lBlink(); lBlink(); } //see if we are leaning to left, if we are, blink if (event.acceleration.x < -2.5) { RBlink(); RBlink(); }// see if we are leaning to right, if we are, blink if (digitalRead(2) == LOW) { digitalWrite(13,1);} // see if break button is pressed, if it is, leds go red. if (digitalRead(2) == HIGH) { digitalWrite(13,0);} delay(400); } void lBlink() { /*if (event.acceleration.x > 3.5) { digitalWrite(13, HIGH); delay(250);} if (event.acceleration.x > 3.5) { digitalWrite(13, LOW); delay(250);} */ digitalWrite(12, HIGH); delay(250); digitalWrite(12, LOW); delay(250); } void RBlink() { /*if (event.acceleration.x > 3.5) { digitalWrite(13, HIGH); delay(250);} if (event.acceleration.x > 3.5) { digitalWrite(13, LOW); delay(250);} */ digitalWrite(11, HIGH); delay(250); digitalWrite(11, LOW); delay(250); } void BBlink() { /*if (event.acceleration.x > 3.5) { digitalWrite(13, HIGH); delay(250);} if (event.acceleration.x > 3.5) { digitalWrite(13, LOW); delay(250);} */ digitalWrite(13, HIGH); delay(250); digitalWrite(13, LOW); delay(250); }