Compare commits

...

4 Commits

Author SHA1 Message Date
Ly PECHVATTANA 1d62e41daa Merge branch 'develop' into main 2023-03-31 17:05:34 +07:00
Ly PECHVATTANA 4e0634f4ec on hold 2023-03-31 17:05:03 +07:00
Ly PECHVATTANA 1adaf8bc49 Control on hold 2023-03-31 16:42:05 +07:00
Ly PECHVATTANA 23571b040c Gyro update 2023-03-31 15:20:04 +07:00
3 changed files with 185 additions and 0 deletions

79
control/control.ino Normal file
View File

@ -0,0 +1,79 @@
#include "MeMCore.h"
#include <Wire.h>
MeGyro gyro;
MeDCMotor leftMotor(9);
MeDCMotor rightMotor(10);
uint8_t motorSpeed = 100;
void setup() {
Serial.begin(115200);
gyro.begin();
leftMotor.run(0);
rightMotor.run(0);
}
void loop() {
//(0,0)
gyro.update();
goForward();
delay(2000);
stop();
//(10,0)
float error = 100;
float d_target = 90;
float p = 0.5;
float v_e;
float v_r;
while (error > 10){
gyro.update();
error = d_target - gyro.getAngleZ();
v_e = p*error;
v_r = -v_e;
goLeft(v_r);
}
stop();
//(10,10)
//(0,10)
}
void goForward(){
leftMotor.run(-motorSpeed);
rightMotor.run(motorSpeed);
delay(1000);
}
void goBackward(){
leftMotor.run(motorSpeed);
rightMotor.run(-motorSpeed);
delay(100);
}
void goLeft(float rotateSpeed){
leftMotor.run(rotateSpeed);
rightMotor.run(rotateSpeed);
delay(100);
}
void stop(){
leftMotor.stop();
rightMotor.stop();
delay(100);
}

25
gyro/gyro.ino Normal file
View File

@ -0,0 +1,25 @@
#include "MeMCore.h"
#include <Wire.h>
MeGyro gyro;
void setup() {
Serial.begin(115200);
gyro.begin();
}
void loop() {
gyro.update();
Serial.read();
Serial.print("X:");
Serial.print(gyro.getAngleX());
Serial.print(",");
Serial.print("Y:");
Serial.print(gyro.getAngleY());
Serial.print(",");
Serial.print("Z:");
Serial.println(gyro.getAngleZ());
delay(10);
}

View File

@ -0,0 +1,81 @@
#include "MeMCore.h"
MeDCMotor leftMotor(9);
MeDCMotor rightMotor(10);
MeLineFollower lineFinder(PORT_2); /* Line Finder module can only be connected to PORT_3, PORT_4, PORT_5, PORT_6 of base shield. */
uint8_t motorSpeed = 50;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensorState = lineFinder.readSensors();
goForward();
switch(sensorState)
{
case S1_IN_S2_IN:
Serial.println("Sensor 1 and 2 are inside of black line");
goForward();
break;
case S1_IN_S2_OUT:
Serial.println("Sensor 2 is outside of black line");
goLeft();
goForward();
break;
case S1_OUT_S2_IN:
Serial.println("Sensor 1 is outside of black line");
goRight();
goForward();
break;
case S1_OUT_S2_OUT:
Serial.println("Sensor 1 and 2 are outside of black line");
stop();
break;
default: break;
}
delay(200);
}
void goForward(){
leftMotor.run(-motorSpeed);
rightMotor.run(motorSpeed);
delay(1000);
}
void goBackward(){
leftMotor.run(motorSpeed);
rightMotor.run(-motorSpeed);
delay(1000);
}
void goLeft(){
leftMotor.run(motorSpeed);
rightMotor.run(motorSpeed);
delay(1000);
}
void goRight(){
leftMotor.run(-motorSpeed);
rightMotor.run(-motorSpeed);
delay(1000);
}
void stop(){
leftMotor.stop();
rightMotor.stop();
delay(1000);
}