week 3
1. hardware
In this week we finishied the hardware part and combine them together, after assembling components we found that the solar plane is much heavier than other part of the components so it make the whole structure imbalance, when the sevor turn to some special angle the plane will overwhelm the servo.
The solution we try to use is add a counterweight at the back to achieve overall balance and prevent leaning forward.
2. software
The software outline have been finishied, the code be sumilated in TINKERCAD to make sure the code can hit the mark.
We connected the basic compoments and input code, the result of simulation is consistent with our prediction, which indicates that this code can meet our basic needs.
Here is the code:
#include<Servo.h>
Servo lar_servo;
Servo uad_servo;
int lar_angle = 90;//Define Angle Parameters
int uad_angle = 45;
int l_state = A0;//Photosensitive resistor analog input port
int r_state = A1;
int u_state = A2;
int d_state = A3;
void setup(){
Serial.begin(9600);//Start serial communication, transmit baud rate 9600
lar_servo.attach(3);//Corresponding pin
uad_servo.attach(5);
pinMode(l_state,INPUT);//Sets the pin type
pinMode(r_state,INPUT);
pinMode(u_state,INPUT);
pinMode(d_state,INPUT);
delay(1000);
}
void loop(){
int left = analogRead(l_state);
int right = analogRead(r_state);
int up = analogRead(u_state);
int down = analogRead(d_state);
int machine_speed = 20;//Set steering gear speed
int error = 50;
//水平方向
if(abs(left-right)>error && left>right){
lar_angle -= 1;
if (lar_angle<0){
lar_angle=0;
}
lar_servo.write(lar_angle);//Set the steering gear rotation Angle
delay(machine_speed);
}
else if(abs(left-right)>error && left<right){
lar_angle += 1;
if (lar_angle>180){
lar_angle=180;
}
lar_servo.write(lar_angle);//Set the steering gear rotation Angle
delay(machine_speed);
}
else if(abs(left-right)<=error){
lar_servo.write(lar_angle);
}
lar_servo.write(lar_angle);//Set the steering gear rotation Angle
delay(machine_speed);
//垂直方向
if(abs(up-down)>error && up>=down){
uad_angle -= 1;
if (uad_angle<0){
uad_angle=0;
}
uad_servo.write(uad_angle);//Set the steering gear rotation Angle
delay(machine_speed);
}
else if(abs(up-down)>error && up<down){
uad_angle += 1;
if (uad_angle>135){
uad_angle=135;
}
uad_servo.write(uad_angle);//Set the steering gear rotation Angle
delay(machine_speed);
}
else if(abs(up-down)<=error){
uad_servo.write(uad_angle);
}
delay(10);//In the test, if the serial port data is received too fast, you can add the appropriate delay adjustment
}
At last, we connect the components to test the components, we want to see if all the components work properly.
评论
发表评论