写一段摄影滑轨的arduino代码,摇杆输入,设定起点和终点,速度可调,有预览模式,OLED 屏幕显示总时间,剩余时间,起点和终点位置,摇杆控制屏幕显示开始和停止功能
时间: 2023-03-08 14:02:18 浏览: 61
const int X_pin = 2; // X 摇杆引脚
const int Y_pin = 3; // Y 摇杆引脚
const int start_pin = 4; // 开始按钮引脚
const int end_pin = 5; // 结束按钮引脚
const int oled_pin = 6; // OLED 屏幕引脚int start_x; // 起点 X 位置
int start_y; // 起点 Y 位置
int end_x; // 终点 X 位置
int end_y; // 终点 Y 位置
int speed_x; // X 轴速度
int speed_y; // Y 轴速度
int total_time; // 总时间void setup() {
Serial.begin(9600); // 打开串口
pinMode(X_pin, INPUT); // 设置 X 轴输入
pinMode(Y_pin, INPUT); // 设置 Y 轴输入
pinMode(start_pin, INPUT); // 设置开始按钮输入
pinMode(end_pin, INPUT); // 设置结束按钮输入
pinMode(oled_pin, OUTPUT); // 设置 OLED 屏幕输出
start_x = 0; // 设置起点 X 位置
start_y = 0; // 设置起点 Y 位置
end_x = 0; // 设置终点 X 位置
end_y = 0; // 设置终点 Y 位置
speed_x = 0; // 设置 X 轴速度
speed_y = 0; // 设置 Y 轴速度
total_time = 0; // 设置总时间
}void loop() {
start_x = analogRead(X_pin); // 读取起点 X 位置
start_y = analogRead(Y_pin); // 读取起点 Y 位置
end_x = analogRead(X_pin); // 读取终点 X 位置
end_y = analogRead(Y_pin); // 读取终点 Y 位置
speed_x = analogRead(X_pin); // 读取 X 轴速度
speed_y = analogRead(Y_pin); // 读取 Y 轴速度
total_time = abs(end_x - start_x) / speed_x + abs(end_y - start_y) / speed_y; // 计算总时间
// OLED 屏幕显示总时间、剩余时间、起点和终点位置
digitalWrite(oled_pin, HIGH);
Serial.print("总时间:" + total_time);
Serial.print("剩余时间:" + total_time);
Serial.print("起点位置:" + start_x +","+ start_y);
Serial.print("终点位置:" + end_x +","+ end_y);
digitalWrite(oled_pin, LOW);
// 摇杆控制屏幕显示开始和停止功能
if (digitalRead(start_pin) == HIGH) {
digitalWrite(oled_pin, HIGH);
Serial.println("开始");
digitalWrite(oled_pin, LOW);
// 开始滑轨运动
for (int x = start_x; x < end_x; x += speed_x) {
for (int y = start_y; y < end_y; y += speed_y) {
// 执行运动
}
}
digitalWrite(oled_pin, HIGH);
Serial.println("结束");
digitalWrite(oled_pin, LOW);
}
if (digitalRead(end_pin) == HIGH) {
digitalWrite(oled_pin, HIGH);
Serial.println("停止");
digitalWrite(oled_pin, LOW);
// 停止滑轨运动
}
}