Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_LSM303_Accel.h>
- #include <Adafruit_Sensor.h>
- #include <Wire.h>
- const int motor1pin1 = 4; // motor 1 forwards
- const int motor1pin2 = 5; // motor 1 backwards
- const int motor2pin1 = 6; // motor 2 forwards
- const int motor2pin2 = 7; // motor 2 backwards
- /* Assign a unique ID to this sensor at the same time */
- Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
- void setup() {
- #ifndef ESP8266
- while (!Serial)
- ; // will pause Zero, Leonardo, etc until serial console opens
- #endif
- Serial.begin(9600);
- Serial.println("Accelerometer Test");
- Serial.println("");
- /* Initialise the sensor */
- if (!accel.begin()) {
- /* There was a problem detecting the ADXL345 ... check your connections */
- Serial.println("Ooops, no LSM303 detected ... Check your wiring!");
- while (1)
- ;
- }
- accel.setRange(LSM303_RANGE_4G);
- Serial.print("Range set to: ");
- lsm303_accel_range_t new_range = accel.getRange();
- switch (new_range) {
- case LSM303_RANGE_2G:
- Serial.println("+- 2G");
- break;
- case LSM303_RANGE_4G:
- Serial.println("+- 4G");
- break;
- case LSM303_RANGE_8G:
- Serial.println("+- 8G");
- break;
- case LSM303_RANGE_16G:
- Serial.println("+- 16G");
- break;
- }
- accel.setMode(LSM303_MODE_NORMAL);
- Serial.print("Mode set to: ");
- lsm303_accel_mode_t new_mode = accel.getMode();
- switch (new_mode) {
- case LSM303_MODE_NORMAL:
- Serial.println("Normal");
- break;
- case LSM303_MODE_LOW_POWER:
- Serial.println("Low Power");
- break;
- case LSM303_MODE_HIGH_RESOLUTION:
- Serial.println("High Resolution");
- break;
- }
- pinMode(motor1pin1, OUTPUT);
- pinMode(motor1pin2, OUTPUT);
- pinMode(motor2pin1, OUTPUT);
- pinMode(motor2pin2, OUTPUT);
- }
- void loop() {
- /* Get a new sensor event */
- sensors_event_t event;
- accel.getEvent(&event);
- /* Display the results (acceleration is measured in m/s^2) */
- double currX = event.acceleration.x, currY = event.acceleration.y;
- int angleX = (map (event.acceleration.x, -9.8, 9.8, -70, 70)), angleY = (map (event.acceleration.y, -9.8, 9.8, -70, 70));
- Serial.print("X:");
- Serial.print(angleX);
- Serial.print(" ");
- Serial.print("Y:");
- Serial.print(angleY);
- Serial.print(" ");
- Serial.println("degrees");
- int speed1 = map(abs(angleX), 0, 70, 120, 255), speed2 = map(abs(angleY), 0, 70, 120, 255);
- if (angleX > 0) {
- digitalWrite(motor2pin1, HIGH);
- digitalWrite(motor1pin1, HIGH);
- digitalWrite(motor1pin2, 0);
- digitalWrite(motor2pin2, 0);
- } else if (angleX == 0) {
- digitalWrite(motor2pin1, 0);
- digitalWrite(motor1pin1, 0);
- } else {
- digitalWrite(motor2pin2, HIGH);
- digitalWrite(motor1pin2, HIGH);
- digitalWrite(motor1pin1, 0);
- digitalWrite(motor2pin1, 0);
- }
- if (angleY > 0) {
- digitalWrite(motor1pin1, HIGH);
- digitalWrite(motor2pin2, HIGH);
- digitalWrite(motor2pin1, 0);
- digitalWrite(motor1pin2, 0);
- } else if (angleY == 0) {
- digitalWrite(motor1pin1, 0);
- digitalWrite(motor2pin2, 0);
- } else {
- digitalWrite(motor1pin2, HIGH);
- digitalWrite(motor2pin1, HIGH);
- digitalWrite(motor2pin2, 0);
- digitalWrite(motor1pin1, 0);
- }
- /* Delay before the next sample */
- delay(500);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement