MEGA2560主控自行车骑行监测器

2019-11-08来源: 51hei关键字:MEGA2560  主控  自行车骑行监测器

自行车骑行监测器,可以GPS定位,检测骑行速度,检测心率,同时将以上数据写入SD卡内进行保存,使用MEGA2560主控
SD卡的SPI接口 ** MOSI - pin 51 ** MISO - pin 50 ** CLK  - pin 52 ** CS   - pin 53

GPS的串口使用mega2560的串口1  Serial 1: Pin19 (RX) and Pin18 (TX);Pin13接一个LED显示GPS是否工作正常

两个霍尔传感器接在外部中断  Pin2 (interrupt 0), Pin3 (interrupt 1)

心跳指示灯在 Pin5   int fadePin = 5
int blinkPin = 14;               

单片机源程序如下:

//#include"Arduino.h"

//#include "AllSerialHanding.h"

//#include "Interrupt.h"

//#include "SD_ReadWrite.h"

#include "all.h"

#define PROCESSING_VISUALIZER 1

#define SERIAL_PLOTTER  2

volatile int BPM;                   // int that holds raw Analog in 0. updated every 2mS

volatile int Signal;                // holds the incoming raw data

volatile int IBI = 600;             // int that holds the time interval between beats! Must be seeded!

static int outputType = SERIAL_PLOTTER;

String beat_data = " BPM:0 IBI:0 Signal:0";


void PulseSensor_SD_Write()

{

  SD_Write("test.txt",beat_data);  //脉冲数据写入SD卡中PulseSensor.txt文件

}

//  Sends Data to Pulse Sensor Processing App, Native Mac App, or Third-party Serial Readers.

void sendDataToSerial(char symbol, int data ){

    Serial.print(symbol);

    Serial.println(data);

  }

void serialOutput(){   // Decide How To Output Serial.

  

  switch(outputType){

    case PROCESSING_VISUALIZER:

      sendDataToSerial('S', Signal);     // goes to sendDataToSerial function

      break;

    case SERIAL_PLOTTER:  // open the Arduino Serial Plotter to visualize these data

      Serial.print(BPM);

      Serial.print(",");

      Serial.print(IBI);

      Serial.print(",");

      Serial.println(Signal);

      beat_data=" BPM:"+String(BPM)+" IBI:"+String(IBI)+" Signal:"+String(Signal);

      

      break;

    default:

      break;

  }


}


//  Decides How To OutPut BPM and IBI Data

void serialOutputWhenBeatHappens(){

  switch(outputType){

    case PROCESSING_VISUALIZER:    // find it here https://github.com/WorldFamousElectronics/PulseSensor_Amped_Processing_Visualizer

      sendDataToSerial('B',BPM);   // send heart rate with a 'B' prefix

      sendDataToSerial('Q',IBI);   // send time between beats with a 'Q' prefix

      break;


    default:

      break;

  }

}


// SET THE SERIAL OUTPUT TYPE TO YOUR NEEDS

// PROCESSING_VISUALIZER works with Pulse Sensor Processing Visualizer

//      https://github.com/WorldFamousElectronics/PulseSensor_Amped_Processing_Visualizer

// SERIAL_PLOTTER outputs sensor data for viewing with the Arduino Serial Plotter

//      run the Serial Plotter at 115200 baud: Tools/Serial Plotter or Command+L


void ledFadeToBeat(){

    fadeRate -= 15;                         //  set LED fade value

    fadeRate = constrain(fadeRate,0,255);   //  keep LED fade value from going into negative numbers!

    analogWrite(fadePin,fadeRate);          //  fade LED

  }


void Pulse_Init(){

  pinMode(blinkPin,OUTPUT);         // pin that will blink to your heartbeat!

  pinMode(fadePin,OUTPUT);          // pin that will fade to your heartbeat!

//  Serial.begin(115200);             // we agree to talk fast!

  interruptSetup();                 // sets up to read Pulse Sensor signal every 2mS

   // IF YOU ARE POWERING The Pulse Sensor AT VOLTAGE LESS THAN THE BOARD VOLTAGE,

   // UN-COMMENT THE NEXT LINE AND APPLY THAT VOLTAGE TO THE A-REF PIN

//   analogReference(EXTERNAL);

}



//  Where the Magic Happens

void Pulse_Allot(){


    serialOutput() ;


  if (QS == true){     // A Heartbeat Was Found

……………………




关键字:MEGA2560  主控  自行车骑行监测器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479381.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
下一篇:avr单片机可演奏的电子琴仿真加源码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

avr单片机mega32之ADC程序
查手册,写程序,有问题再讨论*****************************************************************//CPU:mega32//编译器:iar#include <ioavr.h>#include "adc.h"int main(void){        int m;adc_init();             m = adc_get(0);    
发表于 2019-11-14
mega32单片机最简单的中断程序——外部中断
学单片机的第二条槛:中断,每次我都选最简单的中断——外部中断。*****************************************************************//CPU:mega32//编译器:iar#include <ioavr.h>void eint0_init(void);int main(void){    DDRD |= (1 << 7);     //PD7置为输出    eint0_init();    
发表于 2019-11-14
mega32单片机最简单的中断程序——外部中断
二轮平衡机器人控制器代码
//MCU:Mega16;晶振:8MHz;//PWM:4KHz;滤波器频率:100Hz;系统频率:100Hz;10ms;//二轮平衡机器人项目#include <iom16v.h>#include <macros.h>#include <math.h>//#define checkbit(var,bit)     (var&(0x01<<(bit)))     /*定义查询位函数*///#define setbit(var,bit)     (var|=(0x01<<(bit)))  
发表于 2019-11-09
avr单片机 Mega16定时器实验报告
1、实验目的通过实验,掌握定时器的使用方法。着重掌握定时中断的使用!2、实验内容    1 使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定时中断中实现4位数码管的动态刷新。(2)在1ms的定时中断中设计100mS的时间标志位,在主程序中查询时间标志位,实现LED闪烁。    2 重新配置TImer0工作在PWM模式,用按键改变PWM的占空比,调节电机转速;3、实验预习要求仔细阅读教材中定时中断的范例;4、实验步骤    1 启动ICCAVR,创建
发表于 2019-10-30
avr单片机 Mega16定时器实验报告
阿斯加特AN3+ 全球首发,忆芯主控SSD家族再添新星
全球存储市场持续稳定增长,SSD大规模替代机械硬盘大潮涌现,中国势力不断崛起。2019年到2022年闪存应用方向以SSD和移动应用为主,SSD市场的增速持续上扬。SSD出货量又以消费级SSD为主,同时消费级SSD和企业级SSD均呈现良好的增长势头。  近日,搭载了国产高端NVMe SSD主控忆芯STAR1000P的阿斯加特AN3+固态硬盘,一经面世就引来业界广泛关注。 阿斯加特AN3+ NVMe SSD采用国产主控,性能卓越。它的出现,是SSD在自主可控、国产替代上又一次巨大的进步。阿斯加特AN3+ NVMe SSD采用嘉合劲威自封装3D TLC
发表于 2019-11-07
阿斯加特AN3+ 全球首发,忆芯主控SSD家族再添新星
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved