欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
恩智浦攝像頭程序速度 2.5m/s
[打印本頁]
作者:
OiMCU
時間:
2020-1-10 14:26
標題:
恩智浦攝像頭程序速度 2.5m/s
恩智浦攝像頭程序 2.5m/s
單片機源程序如下:
/*!
* COPYRIGHT NOTICE
* Copyright (c) 2013,山外科技
* All rights reserved.
*
* @file main.c
* @brief 山外KL26 平臺主程序
* @author 山外科技
* @version v5.2
* @date 2014-10-26
*/
#include "common.h"
#include "include.h"
extern uint16 sensor_value[6];
extern uint16 normalization_threshold[6];
extern float position_accumulative[15];
int32 var[5]; //發送到上位機的數據
float position = 0.0f; //位置偏差
float pwm = 0.0f; //舵機占空比增量
uint32 pwm_duty_now = 0; //舵機占空比
uint8 loss_line = 0; //丟線標志位
uint8 loss_line_lock =0; //丟線鎖
uint8 circle_sign = 0; //圓環標志
uint8 ramp_sign = 0; //坡道標志
uint8 stop_car_sign = 0; //停車標志
uint16 motor_speed = 0; //當前電機速度
int16 speed_set = 250; //電機目標速度
uint8 speed_rank = 0; //速度等級
void pit2IRQHandler(void); //定時器中斷函數聲明
/*!
* @brief main函數
* @since v5.2
*/
void main()
{
int16 gx, gy, gz,ax,ay,az;
// Sensor_init();
// Gyroscope_init();
// servo_motor_init();
// switch_button_init();
// motor_init();
// encoder_init();
// Servo_pid_init();
// flash_24c02_init();
// Senser_normalization_threshold_get();
// Senser_normalization_threshold_read(normalization_threshold); //讀取歸一化閥值
// speed_stall_select(); //速度檔位選擇
// NVIC_SetPriority(PORTA_IRQn,0); //為了防止漏過停車線,將停車用的外部中斷定為最高優先級
// NVIC_SetPriority(PIT_IRQn,1);
// pit_init_ms(PIT0,5); //初始化定時器中斷,10ms
// set_vector_handler(PIT_VECTORn , pit2IRQHandler); //初始化定時器中斷,10ms
// enable_irq(PIT_IRQn);
MPU_Init();
while(1)
{
systick_delay_ms(20);
MPU_Get_Gyroscope(&gx,&gy,&gz);
MPU_Get_Accelerometer(&ax,&ay,&az);
printf("%5d %5d %5d %5d %5d %5d %5d\r\n",gx ,gy ,gz,ax,ay,az,MPU_Get_Temperature());
}
}
void pit2IRQHandler(void)
{
encoder_get(&motor_speed);
reed_detection(); //干簧管停車檢測
Sensor_value_get(sensor_value);
Senser_normalization(sensor_value);
// printf("%5d %5d %5d %5d %5d %5d\r\n",sensor_value[0],sensor_value[1],sensor_value[2],sensor_value[3],sensor_value[4],sensor_value[5]);
// printf("%5d %d\r\n",sensor_value[0]+sensor_value[2]+sensor_value[3]+sensor_value[5],(int32)(position * 100));
position = cal_deviation(sensor_value);
position = position_filter(position);
pwm = Servo_pid_cal(position);
ramp_sign = ramp_deal(sensor_value,position,&motor_speed); //坡道處理
if(ramp_sign == 0) //在坡道上不進行圓環處理
{
circle_sign = circle_deal(sensor_value,position,&motor_speed); //圓環檢測
}
/***圓環處理***/
if(circle_sign == 0) //沒有檢測到圓環,丟線處理原值
{
if(ramp_sign == 0)
{
loss_line_deal(sensor_value , position , LEFT_LOSE_LINE_THRESHOLD , RIGHT_LOSE_LINE_THRESHOLD);
}
}
else if(circle_sign == 2) //如果車已經入圓,使用圓內的丟線處理
{
loss_line_deal(sensor_value , position , LEFT_LOSE_LINE_THRESHOLD - 10 , RIGHT_LOSE_LINE_THRESHOLD - 10);
}
switch(loss_line)
{
case 0:
pwm_duty_now = servo_motor_pwm_set(SERVO_MID - (int)(pwm));
break;
case 1:
if(circle_sign == 2)
{
if(((switch_read())&(0x40)) == 0)
{
position = POSITION_BOUND;
pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
}
else
{
position = (-(POSITION_BOUND));
pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);
}
}
else
{
loss_line_lock = 1;
position = POSITION_BOUND;
pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
}
break;
case 2:
if(circle_sign == 2)
{
if(((switch_read())&(0x40)) == 0)
{
position = POSITION_BOUND;
pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
}
else
{
position = (-(POSITION_BOUND));
pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);
}
}
else
{
loss_line_lock = 1;
position = (-(POSITION_BOUND));
pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);
}
break;
}
if((((switch_read()) & (0x80)) == 0) | (stop_car_sign == 1))
{
motor_pwm_set(0);
}
else
{
motor_pwm_set((int32)speed_set);
}
// vcan_scope((uint8_t *)var,sizeof(var)); //虛擬示波器發送數據
PIT_Flag_Clear(PIT0);
}
復制代碼
iar代碼下載:
8.29 迷你小霸王程序.7z
(2.35 MB, 下載次數: 13)
2021-11-20 03:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
卓zz
時間:
2021-3-28 13:55
請問這是第幾屆的代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1