|
本帖最后由 大貓8888 于 2019-12-20 19:23 編輯
喜歡自駕游,走的地方多了就發(fā)現(xiàn)車燈的照射角度有限,特別是在山路大角度轉(zhuǎn)彎和大坑照射不到,所以有了用頭追的方式控制探照燈的想法
基本想法是用3D打印件支撐兩個(gè)55克的舵機(jī),控制燈的水平和垂直轉(zhuǎn)動(dòng)。燈為美國可瑞L2單顆大功率LED,用單片機(jī)控制它實(shí)現(xiàn)長亮、爆閃、短閃幾個(gè)擋位
我用arduino編寫的程序很初級(jí)很簡(jiǎn)單,姿態(tài)控制用的是6050,實(shí)際應(yīng)用時(shí)發(fā)現(xiàn)三個(gè)問題:
1、Arduino 進(jìn)口UNO,上傳程序后控制基本正常,兩個(gè)舵機(jī)都有動(dòng)作,但是一旦斷電再上電,兩個(gè)舵機(jī)只是通電瞬間動(dòng)一下歸位然后就再也沒反應(yīng)了,按復(fù)位按鈕復(fù)位也沒用。必須重新燒寫一次才有反映,但依然不能斷電。我用的是進(jìn)口原裝UNO,不知是什么原因?
2、6050的問題:xy軸基本正常,但Z軸要么沒輸出,要么就亂跳,換了兩塊6050都是同樣的毛病。網(wǎng)上查了很多資料,6050的應(yīng)用基本沒看到用z軸的。。。不知道有沒有熟悉6050的朋友?
3、UNO的pwm輸出很不穩(wěn)定,比如模擬輸出200時(shí),燈會(huì)象鬼火那樣忽悠忽悠的亂閃(沒有示波器看不到波形是怎么樣的),有沒有寫過LED控制的朋友?
代碼:
1、燈的控制:
void setup(){
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(10, OUTPUT);
pinMode(3, INPUT);
}
void loop(){
if (digitalRead(5) == LOW) {
analogWrite(10,255);
delay(50);
analogWrite(10,0);
delay(1000);
} else {
analogWrite(10,0);
}
if (digitalRead(4) == LOW) {
digitalWrite(10,HIGH);
} else {
analogWrite(10,0);
}
if (digitalRead(3) == LOW) {
analogWrite(10,255);
delay(20);
analogWrite(10,0);
delay(50);
} else {
analogWrite(10,0);
}
}
二、姿態(tài)控制:
#include<Servo.h>
Servo analogservo;
Servo analogservo2;
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int16_t value
int16_t value2;
bool blinkState = false;
void setup() {
analogservo.attach(10);
analogservo2.attach(11);
}
void loop() {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
value2=90-az/350;
value=90+ay/350;
analogservo2.write(value2);
analogservo.write(value);
blinkState = !blinkState;
delay(30);
}
頭追1.jpg (221.87 KB, 下載次數(shù): 107)
下載附件
2019-12-18 17:54 上傳
頭追2.jpg (171.75 KB, 下載次數(shù): 105)
下載附件
2019-12-18 17:54 上傳
其他設(shè)計(jì)
[現(xiàn)學(xué)現(xiàn)賣Arduino實(shí)戰(zhàn)]一、盲人雷達(dá)
http://www.torrancerestoration.com/bbs/dpj-175950-1.html
(出處: 單片機(jī)論壇)
|
評(píng)分
-
查看全部評(píng)分
|