example to read an analog input ultrasonic sensor.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers amaxmain2.cpp Source File

amaxmain2.cpp

00001 #include "mbed.h"
00002 
00003 //#define PRINTDBUG
00004 #define WAITTIME 100
00005 #define NEARLIMIT 0.025
00006 #define FARLIMIT 0.40
00007 #define LEDON false
00008 #define LEDOFF true
00009 #define LEDFULLBRITE 0.0
00010 #define LEDNOBRITE 1.0
00011 #define HALFBRITE 0.5
00012 #define PROGNAME "AnalogMAX v2\r\n"  // puTTY does not automatically add carriage return
00013 
00014 AnalogIn input(PTC2);
00015 // Set up PWM on all three colors
00016 PwmOut greenLED(LED_GREEN); // green led
00017 PwmOut blueLED(LED_BLUE);
00018 PwmOut redLED(LED_RED); // red led
00019 Serial pc(USBTX, USBRX);
00020 Timer millis;
00021 
00022 int ledState = false;
00023 
00024 void takeData(float spanScale) {
00025             
00026     float samples;
00027     float scaledPWM;
00028     
00029         samples = input.read();
00030 #ifdef PRINTDBUG
00031         pc.printf("%f\r\n", samples);
00032 #endif
00033     if ((samples > NEARLIMIT) && (samples < FARLIMIT)){
00034             scaledPWM = (samples - NEARLIMIT)*spanScale;
00035             redLED = 1.0 - scaledPWM;
00036            // greenLED = LEDOFF; // on
00037             blueLED = scaledPWM;
00038 #ifdef PRINTDBUG
00039             pc.printf("RED -> %f BLUE -> %f\r\n", redLED.read(), blueLED.read());
00040 #endif
00041     }else{
00042             redLED = LEDNOBRITE; // off
00043             // greenLED = HALFBRITE;
00044             blueLED = LEDNOBRITE;
00045     }
00046     return;
00047 }
00048 // end takeData()
00049 // ----------------------------
00050 int main() {
00051     float spanScale;
00052 
00053   // initialization  
00054   // calulate scaling for red/blue LED
00055    
00056     
00057     spanScale = 1.0/(FARLIMIT-NEARLIMIT);
00058     pc.printf(PROGNAME);
00059     
00060     greenLED = HALFBRITE; // 1/2 on
00061     redLED = LEDNOBRITE; // pwm off
00062     blueLED = LEDFULLBRITE; // pwm on
00063     millis.start();
00064     millis.reset();
00065 // Loop forever
00066     while(true){     
00067         if (millis.read_ms() > WAITTIME) { 
00068             takeData(spanScale);
00069             millis.reset();
00070         }
00071     }      
00072    
00073 }   // end main