Tuesday, December 15, 2015

FINAL DESIGN

Final Design:
Chosen Concept



Isometric View

Front View
 

Top View


Right Side View

Exploded View
Drawing
Design Highlights:
  • Pacman theme
  • Support roller for balance
  • Bumper for light sensors
  • Custom made mounts for Motors
  • M-2.5 Screws used for all assemblies

Code Testing:

Bumper Sensor


Edge Detector


Line Following






Arduino Codes:
Edge Detector:


#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"


Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Adafruit_DCMotor *leftMotor = AFMS.getMotor(1);
Adafruit_DCMotor *rightMotor = AFMS.getMotor(2);

int threshold = 400; 

void setup() {


  AFMS.begin(); 
  
  leftMotor->setSpeed(100);
  leftMotor->run(RELEASE);
  rightMotor->setSpeed(100);
  rightMotor->run(RELEASE);
  
  pinMode(2, INPUT_PULLUP);
}

void loop() {
  
  int sensorVal = analogRead(A0);
    if (sensorVal < threshold ) {
  leftMotor->run(FORWARD);
  rightMotor->run(FORWARD);
    }else{
  leftMotor->run(RELEASE);
  rightMotor->run(RELEASE);
  delay(100);
  leftMotor->run(BACKWARD);
  rightMotor->run(BACKWARD);
  delay(500);
  leftMotor->run(RELEASE);
  rightMotor->run(RELEASE);
  delay(100);
  leftMotor->run(FORWARD);
  rightMotor->run(BACKWARD);
  delay(500);
  leftMotor->run(RELEASE);
  rightMotor->run(RELEASE);
  delay(100);
  }}
Line Follower
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"


Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Adafruit_DCMotor *leftMotor = AFMS.getMotor(1);
Adafruit_DCMotor *rightMotor = AFMS.getMotor(2);

int threshold = 400; 

void setup() {


  AFMS.begin(); 
  
  leftMotor->setSpeed(100);
  leftMotor->run(RELEASE);
  rightMotor->setSpeed(100);
  rightMotor->run(RELEASE);
  
  pinMode(2, INPUT_PULLUP);
}

void loop() {
  
  int sensorVal1 =  analogRead(A0);
  int sensorVal2 =  analogRead(A1);
  int sensorVal3 = analogRead(A2);
    if (sensorVal2 > threshold ) {
  leftMotor->run(FORWARD);
  rightMotor->run(FORWARD);
   } 
    if (sensorVal1 > threshold) {
  leftMotor->run(FORWARD);
  rightMotor->run(BACKWARD);
  } 
    if (sensorVal3 > threshold) {
  leftMotor->run(BACKWARD);
  rightMotor->run(FORWARD);  
  }}
Bumper Sensor


#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"


Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Adafruit_DCMotor *leftMotor = AFMS.getMotor(1);
Adafruit_DCMotor *rightMotor = AFMS.getMotor(2);

int button1 = 6;
int button2 = 10;
boolean buttonState1 = 1;
boolean buttonState2 = 2; 

void setup() {


  AFMS.begin(); 
  
  leftMotor->setSpeed(100);
  leftMotor->run(RELEASE);
  rightMotor->setSpeed(100);
  rightMotor->run(RELEASE);

  pinMode(6, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
Serial.begin(9600);  
}

void loop() {
  
  int buttonState1 = digitalRead(6);
  int buttonState2= digitalRead(10);
    if (buttonState1 == 0 && buttonState2 == 0) {
  leftMotor->run(BACKWARD);
  rightMotor->run(BACKWARD);
  delay(1000);
  }
  else if (buttonState1 == 1)
  {
  leftMotor->run(FORWARD);
  rightMotor->run(FORWARD);
  }
  else if (buttonState2 == 1)
  {
  leftMotor->run(FORWARD);
  rightMotor->run(FORWARD);
  }
  else if (buttonState1 == 0) 
  {
  leftMotor->run(BACKWARD);
  rightMotor->run(BACKWARD);
  }
  else if (buttonState2 == 0)
  {
  leftMotor->run(BACKWARD);
  rightMotor->run(BACKWARD);
  } 
    if (buttonState2  == 0) {
  leftMotor->run(BACKWARD);
  rightMotor->run(BACKWARD);
  delay(1000);
  leftMotor->run(FORWARD);
  rightMotor->run(BACKWARD);
  delay(1000);
  }    
    if (buttonState1 == 0){
  leftMotor->run(BACKWARD);  
  rightMotor->run(BACKWARD);
  delay(1000);
  leftMotor->run(BACKWARD);
  rightMotor->run(FORWARD);
  delay(1000);
    }}