diff --git a/LIIEEng06IntroRobotics_Lab2.pdf b/LIIEEng06IntroRobotics_Lab2.pdf
new file mode 100644
index 0000000..59ff929
Binary files /dev/null and b/LIIEEng06IntroRobotics_Lab2.pdf differ
diff --git a/Makeblock-Libraries-master.zip b/Makeblock-Libraries-master.zip
new file mode 100644
index 0000000..24b0937
Binary files /dev/null and b/Makeblock-Libraries-master.zip differ
diff --git a/Template_Report.docx b/Template_Report.docx
new file mode 100644
index 0000000..00ee429
Binary files /dev/null and b/Template_Report.docx differ
diff --git a/answers.docx b/answers.docx
new file mode 100644
index 0000000..8679a00
Binary files /dev/null and b/answers.docx differ
diff --git a/motion/MeDCMotor.h b/motion/MeDCMotor.h
new file mode 100644
index 0000000..fb923ac
--- /dev/null
+++ b/motion/MeDCMotor.h
@@ -0,0 +1,178 @@
+/**
+ * \par Copyright (C), 2012-2016, MakeBlock
+ * \class MeDCMotor
+ * \brief Driver for Me DC motor device.
+ * @file MeDCMotor.h
+ * @author MakeBlock
+ * @version V1.0.1
+ * @date 2016/04/07
+ * @brief Header for MeDCMotor.cpp module
+ *
+ * \par Copyright
+ * This software is Copyright (C), 2012-2016, MakeBlock. Use is subject to license \n
+ * conditions. The main licensing options available are GPL V2 or Commercial: \n
+ *
+ * \par Open Source Licensing GPL V2
+ * This is the appropriate option if you want to share the source code of your \n
+ * application with everyone you distribute it to, and you also want to give them \n
+ * the right to share who uses it. If you wish to use this software under Open \n
+ * Source Licensing, you must contribute all your source code to the open source \n
+ * community in accordance with the GPL Version 2 when your application is \n
+ * distributed. See http://www.gnu.org/copyleft/gpl.html
+ *
+ * \par Description
+ * This file is a drive for Me DC motor device.
+ *
+ * \par Method List:
+ *
+ * 1. void MeDCMotor::setpin(uint8_t dir_pin,uint8_t pwm_pin)
+ * 2. void MeDCMotor::run(int16_t speed)
+ * 3. void MeDCMotor::stop(void)
+ * 4. void MeDCMotor::reset(uint8_t port)
+ * 5. void MeDCMotor::reset(uint8_t port, uint8_t slot)
+ *
+ * \par History:
+ *
+ * `` `
+ *
+ */
+#ifndef MeDCMotor_H
+#define MeDCMotor_H
+
+#include
+#include
+#include
+#include "MeConfig.h"
+
+#ifdef ME_PORT_DEFINED
+#include "MePort.h"
+#endif
+
+/**
+ * Class: MeDCMotor
+ * \par Description
+ * Declaration of Class MeDCMotor
+ */
+#ifndef ME_PORT_DEFINED
+class MeDCMotor
+#else // !ME_PORT_DEFINED
+class MeDCMotor : public MePort
+#endif // !ME_PORT_DEFINED
+{
+public:
+#ifdef ME_PORT_DEFINED
+/**
+ * Alternate Constructor which can call your own function to map the DC motor to arduino port,
+ * no pins are used or initialized here.
+ * \param[in]
+ * None
+ */
+ MeDCMotor(void);
+
+/**
+ * Alternate Constructor which can call your own function to map the DC motor to arduino port
+ * \param[in]
+ * port - RJ25 port from PORT_1 to M2
+ */
+ MeDCMotor(uint8_t port);
+#else // ME_PORT_DEFINED
+/**
+ * Alternate Constructor which can call your own function to map the DC motor to arduino port,
+ * it will assigned the output pin.
+ * \param[in]
+ * dir_pin - arduino port for direction pin(should analog pin)
+ * \param[in]
+ * pwm_pin - arduino port for pwm input(should analog pin)
+ */
+ MeDCMotor(uint8_t dir_pin,uint8_t pwm_pin);
+#endif // ME_PORT_DEFINED
+/**
+ * \par Function
+ * setpin
+ * \par Description
+ * Reset the DC motor available PIN by its arduino port.
+ * \param[in]
+ * dir_pin - arduino port for direction pin(should analog pin)
+ * \param[in]
+ * pwm_pin - arduino port for pwm input(should analog pin)
+ * \par Output
+ * None
+ * \return
+ * None
+ * \par Others
+ * None
+ */
+ void setpin(uint8_t dir_pin,uint8_t pwm_pin);
+
+/**
+ * \par Function
+ * reset
+ * \par Description
+ * Reset the DC motor available PIN by its RJ25 port.
+ * \param[in]
+ * port - RJ25 port from PORT_1 to M2
+ * \par Output
+ * None
+ * \return
+ * None
+ * \par Others
+ * None
+ */
+ void reset(uint8_t port);
+
+/**
+ * \par Function
+ * reset
+ * \par Description
+ * Reset the DC motor available PIN by its RJ25 port and slot.
+ * \param[in]
+ * port - RJ25 port from PORT_1 to M2
+ * \param[in]
+ * slot - SLOT1 or SLOT2
+ * \par Output
+ * None
+ * \return
+ * None
+ * \par Others
+ * None
+ */
+ void reset(uint8_t port, uint8_t slot);
+
+/**
+ * \par Function
+ * run
+ * \par Description
+ * Control the motor forward or reverse
+ * \param[in]
+ * speed - Speed value from -255 to 255
+ * \par Output
+ * None
+ * \return
+ * None
+ * \par Others
+ * None
+ */
+ void run(int16_t speed);
+
+/**
+ * \par Function
+ * stop
+ * \par Description
+ * Stop the rotation of the motor
+ * \par Output
+ * None
+ * \return
+ * None
+ * \par Others
+ * None
+ */
+ void stop(void);
+private:
+ volatile uint8_t dc_dir_pin;
+ volatile uint8_t dc_pwm_pin;
+ int16_t last_speed;
+};
+#endif
\ No newline at end of file
diff --git a/motion/motion.ino b/motion/motion.ino
new file mode 100644
index 0000000..2fa0ab3
--- /dev/null
+++ b/motion/motion.ino
@@ -0,0 +1,39 @@
+#include "MeOrion.h"
+#include "MeDCMotor.h"
+
+
+MeDCMotor motor1(PORT_1);
+MeDCMotor motor2(PORT_2);
+
+MeDCMotor motor3(M1);
+MeDCMotor motor4(M2);
+
+uint8_t motorSpeed = 100;
+
+void setup()
+{
+}
+
+void loop()
+{
+ //motor1.run(motorSpeed); /* value: between -255 and 255. */
+ //motor2.run(motorSpeed); /* value: between -255 and 255. */
+ motor3.run(motorSpeed);
+ motor4.run(-motorSpeed);
+ delay(2000);
+ //motor1.stop();
+ //motor2.stop();
+ motor3.stop();
+ motor4.stop();
+ delay(100);
+ //motor1.run(-motorSpeed);
+ //motor2.run(-motorSpeed);
+ motor3.run(-motorSpeed);
+ motor4.run(-motorSpeed);
+ delay(2000);
+ //motor1.stop();
+ //motor2.stop();
+ motor3.stop();
+ motor4.stop();
+ delay(2000);
+}
diff --git a/~$nswers.docx b/~$nswers.docx
new file mode 100644
index 0000000..163e26d
Binary files /dev/null and b/~$nswers.docx differ