AnalogIn
This content relates to a deprecated version of Mbed
Mbed 2 is now deprecated. For the latest version please see the Mbed OS documentation.
For the latest AnalogIn API, please see AnalogIn.
The AnalogIn API is used to read an external voltage applied to an analog input pin. Only certain pins are capable of making these measurement so check the documentation for compatible pins. For more information on what it takes to convert an analog signal to its digital representation see: http://en.wikipedia.org/wiki/Analog-to-digital_converter
API¶
Import librarymbed
Hello World!¶
Import program
00001 /* mbed Example Program 00002 * Copyright (c) 2006-2014 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #include "mbed.h" 00018 00019 // Initialize a pins to perform analog input and digital output fucntions 00020 AnalogIn ain(A0); 00021 DigitalOut dout(LED1); 00022 00023 int main(void) 00024 { 00025 while (1) { 00026 // test the voltage on the initialized analog pin 00027 // and if greater than 0.3 * VCC set the digital pin 00028 // to a logic 1 otherwise a logic 0 00029 if(ain > 0.3f) { 00030 dout = 1; 00031 } else { 00032 dout = 0; 00033 } 00034 00035 // print the percentage and 16 bit normalized values 00036 printf("percentage: %3.3f%%\n", ain.read()*100.0f); 00037 printf("normalized: 0x%04X \n", ain.read_u16()); 00038 wait(0.2f); 00039 } 00040 }
Examples¶
Control a R/C servo with an analog input
#include "mbed.h" AnalogIn position(A0); PwmOut servo(D3); int main() { // servo requires a 20ms period servo.period(0.020f); while (1) { // servo position determined by a pulse width between 1-2ms servo.pulsewidth(0.001f + 0.001f * position); } }
AnalogIn reading 16-bit normalized samples
#include "mbed.h" AnalogIn input(A0); int main() { uint16_t samples[1024]; for(int i=0; i<1024; i++) { samples[i] = input.read_u16(); wait(0.001f); } printf("Results:\n"); for(int i=0; i<1024; i++) { printf("%d, 0x%04X\n", i, samples[i]); } }
Visual volt meter using LEDs
#include "mbed.h" AnalogIn ain(A0); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); int main() { while (1){ led1 = (ain > 0.2f) ? 1 : 0; led2 = (ain > 0.4f) ? 1 : 0; led3 = (ain > 0.6f) ? 1 : 0; led4 = (ain > 0.8f) ? 1 : 0; } }