在线时间0 小时
UID364823
注册时间2012-6-14
NXP金币0
该用户从未签到
新手上路

- 积分
- 46
- 最后登录
- 1970-1-1
|
v.youku.com/v_show/id_XNDU4Nzc4NTQw.html
视频上传啦!
忙活了一个国庆,还以为国庆没有惊喜了,因为被2401卡住了,每次通信只能收到一次数据,之后得强制复位才能接收到新数据,老在想着是不是FIFO没有清空,结果好多天过去了,没有结果,昨晚终于决定回宿舍睡觉,早上5点多天还没亮,突然想到一个土办法,既然需要复位才能接收到新数据,那我何不给它人工安一个“复位”?
已有想法,马上冲回实验室,20分钟后,我就开着车在路上跑了,哈哈哈。
身边暂时没有相机,先讲框架,再贴代码,后边再补充视频效果吧。
遥控器部分:
重力感应信号由MMA7631给出,由K10的AD采集,只采集X轴和Y轴的信号,因为只需要前进和左右两个方向;
控制信号由NRF24L01发送,每次发送一个BYTE,这个BYTE里边整合了速度和方向,速度由这个BYTE的高四位决定,打角由这个BYTE的第四位决定。
小车部分:
用的车模是今年做光电车的时候的B车,因为板子没有多余的排阵,只能丑陋的将S12“挂”在外边 = =!
车由2401收到BYTE之后,将这个BYTE处理成高低两个四位,因为刚刚调好,只弄了个switch语句搞定它,后边会继续优化。
贴代码吧:
K10主函数:
#include "sys.h"
#include "delay.h"
#include "gpio.h"
#include "wdog.h"
#include "uart.h"
#include "led.h"
#include "pit.h"
#include "exti.h"
#include "ftm.h"
#include "tsi.h"
#include "spilcd.h"
#include "adc.h"
#include "stdio.h"
#include "nrf24l01.h"
// 超核Kinetis核心板V2.2
u8 Page=1; //记录当前页数
u8 LastPage=0; //上一次的页数
extern char TxBuf[32];
extern char TX_ADDRESS[5];
extern char RX_ADDRESS[5];
int main(void)
{
char str[30];
u8 send_data=0;
// u8 get_data=0;
u16 AD_Value;
DelayInit();
LED_Init();
RF24L01_IO_set();
init_NRF24L01() ;
nRF24L01_TxPacket(TxBuf); // 将要发送的数据转移到发送缓冲区
WDOG_Init(); //初始化看门狗
SPILCD_Init();
TSI_Init();
//打印主频
sprintf(str,"CoreClk:%dMhz",PInfo.CoreClock/1000000);
LCD_ShowString(0,0,str);
//打印题目
LCD_ShowString(0,10,"Smart-car by lcokenm");
SPILCD_Fill(0,SPILCD_H-16,SPILCD_W,SPILCD_H,LGRAY);
BACK_COLOR=LGRAY;
LCD_ShowString(0,SPILCD_H-15,"K1 w PAGE /3 K2:Up");
BACK_COLOR=BLACK;
//开启ADC
ADC_Init(ADC0,ADC_SINGLE,ADC_8BIT,9);
ADC_Init(ADC0,ADC_SINGLE,ADC_8BIT,8);
while(1)
{
if(Page!=LastPage) //翻页了
{
switch (Page)
{
case 1:SPILCD_Fill(0,30,SPILCD_W,SPILCD_H-16,BLACK); ///for(i=0;i
|
|