Skip to content

Instantly share code, notes, and snippets.

@TareObjects
Created September 11, 2020 08:43
Show Gist options
  • Save TareObjects/e0bf337c290c23df9ec73438288d43e0 to your computer and use it in GitHub Desktop.
Save TareObjects/e0bf337c290c23df9ec73438288d43e0 to your computer and use it in GitHub Desktop.
#include <Servo.h>
Servo rServo;
Servo lServo;
//
// ADXL345
//
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
//
// Setup
//
void setup() {
Serial.begin(115200);
rServo.attach(8);
lServo.attach(9);
if (!accel.begin()) {
Serial.println("Ooops, no ADXL345 detected ... Check your wiring!");
while (1);
}
accel.setRange(ADXL345_RANGE_2_G);
}
const int speed = 15;
const int rOffset = 80;
const int lOffset = 100;
enum {ModeInit = 1, ModeFaceUp, ModeFaceDown};
int mode = ModeInit;
int getCurrentMode() {
sensors_event_t event;
accel.getEvent(&event);
int currentMode;
Serial.print(event.acceleration.y);
Serial.print("--");
if (event.acceleration.y < -3.0) {
currentMode = ModeFaceDown;
Serial.println("Face Down");
} else {
currentMode = ModeFaceUp;
Serial.println("Face Up");
}
return currentMode;
}
void loop() {
int currentMode = getCurrentMode();
if (mode != currentMode) {
delay(100);
currentMode = getCurrentMode();
if (mode != currentMode) {
mode = currentMode;
if (mode == ModeFaceUp) {
faceUp();
} else {
faceDown();
}
}
}
delay(100);
}
void faceUp() {
for (int pos = 0; pos <= 90; pos++) {
rServo.write(pos + rOffset);
lServo.write(lOffset - pos);
delay(speed);
}
}
void faceDown() {
for (int pos = 90; pos > 0; pos--) {
rServo.write(pos + rOffset);
lServo.write(lOffset - pos);
delay(speed);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment