An auto car with 3 IR sensors.

Dependencies:   Ping

autocar/autocar.h

Committer:
cudaChen
Date:
2018-07-18
Revision:
18:d7509436e9ef
Parent:
15:1d440beb24d3
Child:
19:d06f5a3ed0bc

File content as of revision 18:d7509436e9ef:

#ifndef AUTOCAR_H
#define AUTOCAR_H

#include "mbed.h"

#include "Ping.h"

// used for motors
extern DigitalOut M1_enable;
extern DigitalOut M2_enable;
extern DigitalOut M1_in1;
extern DigitalOut M1_in2;
extern DigitalOut M2_in3;
extern DigitalOut M2_in4;

// used for IR sensors
extern AnalogIn leftIR;
extern AnalogIn middleIR;
extern AnalogIn rightIR;

// used for ultrasonic sensors
extern Ping ultrasonic;

// read the value of IR sensors
void readIR(bool* left, bool* middle, bool* right, int threshold);
int readIRValues();
void readSensor(bool* left, bool* middle, bool* right, bool* hasObstacle, int threshold, int range);

long map(long x, long in_min, long in_max, long out_min, long out_max);

// used for controlling the direction of auto car
void DriveSingleMotor(int m, int speed, int dir);
void driveMotor(bool left, bool middle, bool right);
void driveMotor(bool left, bool middle, bool right, bool hasObstacle);
void driveMotorPID(float values, float Kp, float Ki, float Kd);

void init();
void stop();
void forward();
void turnLeft();
void turnRight();

#endif