Robert Hill
/
FRDM_HE_
Hall Effect Demo Program, using a hall effect sensor to calculate pedal speed while riding a bike
Revision 0:b83e5e826d81, committed 2016-02-24
- Comitter:
- roberthill04
- Date:
- Wed Feb 24 17:42:35 2016 +0000
- Commit message:
- This is the Hall Effect Demo Program, testing the functionality of the hall effect as a means of finding pedal speed while riding a bike.;
Changed in this revision
HallEffect.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r b83e5e826d81 HallEffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HallEffect.cpp Wed Feb 24 17:42:35 2016 +0000 @@ -0,0 +1,85 @@ +#include "mbed.h" +#include "AnalogIn.h" //not sure if this is necessary +#include "DigitalIn.h" //^^^ + +DigitalOut led_red(LED_RED); +DigitalOut led_green(LED_GREEN); +DigitalOut led_blue(LED_BLUE); +DigitalIn sw2(SW2); +DigitalIn sw3(SW3); +Serial pc(USBTX, USBRX); + +//LED is ON when set to 0, OFF when set to 1 +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +DigitalIn HallEffect(D2); //Intializes Digital input into pin D2 (Hall Effect sensor) + + +int Hall_Counter = 0; //Initialize Counter for Hall Effect +bool Low_Hall = true; //Initialize Flag for Hall Effect sensor +bool Button_Pressed = true; //Initialize flag for output on terminal +Timer Hall_Timer; //Initialize timer for pedal speed calc +int Pedal_Time; //Intialize int for Time Passed +int Pedal_Speed; //Initialize int for Pedal Speed +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void Hall_Effect_Count(void) +{ + if (sw3 == 0 && Button_Pressed == true) { + //led_blue = 0; //Blue LED is ON + //led_green = 1; + //led_red = 1; + pc.printf("Number of times magnet has passed sensor: %d\n", Hall_Counter); //Outputs # of times magnet passed sensor + Hall_Timer.stop(); //stop the timer + pc.printf("Time passed (in seconds): %f \n", Hall_Timer.read()); //Outputs time in seconds + Pedal_Time=Hall_Timer.read()/60; //Divides Time in seconds by 60 so we have minutes for Pedal_Speed (RPM) + Pedal_Speed=Hall_Counter/(Hall_Timer.read()/60); + pc.printf("Approximate pedal speed: %d RPM\n", Pedal_Speed); //Outputs pedal speed + Button_Pressed = false; + //Hall_Timer.reset(); //idea here is the timer is reset after the program outputs the pedal speed so the demo can be reran + } +} + +int main() { + led_blue=1; + led_red=0; + led_green=1; + pc.baud(9600); + pc.printf("Hello World from FRDM-K64F board. This is the Hall Effect Demo Program. "); + pc.printf("Press SW3 (Button Near LED on board) to see Pedal Speed.\n "); + Hall_Timer.start(); //Starts Timer for Pedal Speed Calculation **see if this is better in loop or out** + //Looks like it works better here (Feb. 10) + + + + + while (1){ //infinite loop + //Hall_Timer.start(); //Start the timer ***See if timer works here or above while loop + Button_Pressed = true; + if(HallEffect==0 && Low_Hall==true) { //If Hall Effect Digital Output is low + Hall_Counter++; //Add one to counter for calc pedal speed + led_green = 0; //Output Green on LED, simulates wheel rotation "sensed" + led_red = 1; + led_blue = 1; + Low_Hall = false; //flag to avoid errors + } + else if(HallEffect==1 && Low_Hall==true){ //Additional logic for accurate readings + led_green = 1; + led_red = 0; //Stays red while hall effect outputs digital high + led_blue = 1; + } + else if(HallEffect==0 && Low_Hall==false){ + led_green = 0; + led_red = 1; + led_blue = 1; + + } + else if(HallEffect==1 && Low_Hall==false){ + led_green = 1; + led_red = 0; + led_blue = 1; + Low_Hall = true; + } + Hall_Effect_Count(); + //wait(5.0f); //LOOK at this, this may be why the button isnt working**** + } +}
diff -r 000000000000 -r b83e5e826d81 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Feb 24 17:42:35 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3 \ No newline at end of file