/** comparatorin_demo * Simple program to demonstrate the basic functions * of the analog comparator of the FRDM-KL25Z board. * * Used library: * - ComparatorIn //https://developer.mbed.org/users/frankvnk/code/ComparatorIn/ * written by Frank Vannieuwkerke * * Hardware requirements: * - FRDM-KL25 board * - CdS photoresistor pulled up by 10 k * - Connecect the midpoint of the divider to PTE29 * * 10k CdS photoresistor * +3.3V --/\/\/\---+---/\/\/\---- GND * | * PTE29 * */

Dependencies:   ComparatorIn mbed

Fork of 05_comparator_demo by Istvan Cserny

Committer:
icserny
Date:
Wed Nov 18 15:29:18 2015 +0000
Revision:
8:a5b18dfe684f
Parent:
7:a4f884972a0e
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
icserny 8:a5b18dfe684f 1 /** 05_comparator_demo
icserny 7:a4f884972a0e 2 * Simple program to demonstrate the basic functions
icserny 7:a4f884972a0e 3 * of the analog comparator of the FRDM-KL25Z board.
icserny 7:a4f884972a0e 4 *
icserny 7:a4f884972a0e 5 * Used library:
icserny 7:a4f884972a0e 6 * - ComparatorIn //https://developer.mbed.org/users/frankvnk/code/ComparatorIn/
icserny 7:a4f884972a0e 7 * written by Frank Vannieuwkerke
icserny 7:a4f884972a0e 8 *
icserny 7:a4f884972a0e 9 * Hardware requirements:
icserny 7:a4f884972a0e 10 * - FRDM-KL25 board
icserny 7:a4f884972a0e 11 * - CdS photoresistor pulled up by 10 k
icserny 7:a4f884972a0e 12 * - Connecect the midpoint of the divider to PTE29
icserny 7:a4f884972a0e 13 *
icserny 7:a4f884972a0e 14 * 10k CdS photoresistor
icserny 7:a4f884972a0e 15 * +3.3V --/\/\/\---+---/\/\/\---- GND
icserny 7:a4f884972a0e 16 * |
icserny 7:a4f884972a0e 17 * PTE29
icserny 7:a4f884972a0e 18 *
icserny 7:a4f884972a0e 19 */
frankvnk 2:bb19e60cb933 20
icserny 7:a4f884972a0e 21 #include "mbed.h"
icserny 7:a4f884972a0e 22 #include "ComparatorIn.h"
icserny 7:a4f884972a0e 23
icserny 7:a4f884972a0e 24 DigitalOut blinker (LED_BLUE); // blinking LED
icserny 7:a4f884972a0e 25 DigitalOut cmpled (LED_GREEN); // signing comparator status
icserny 7:a4f884972a0e 26 AnalogIn cmp_lvl (PTE29); // ADC input to check comparator input
icserny 7:a4f884972a0e 27 ComparatorIn compi(PTE29, PTE30); // in+ = PTE29, in- = 12-bit DAC
icserny 7:a4f884972a0e 28
icserny 7:a4f884972a0e 29 // Comparator interrupt callback functions
frankvnk 2:bb19e60cb933 30 void cmp_rise_ISR(void)
frankvnk 2:bb19e60cb933 31 {
icserny 7:a4f884972a0e 32 cmpled = 0; // LED ON at rising edge
frankvnk 2:bb19e60cb933 33 }
icserny 7:a4f884972a0e 34
frankvnk 2:bb19e60cb933 35 void cmp_fall_ISR(void)
frankvnk 2:bb19e60cb933 36 {
icserny 7:a4f884972a0e 37 cmpled = 1; // LED OFF at falling edge
frankvnk 2:bb19e60cb933 38 }
icserny 7:a4f884972a0e 39
icserny 7:a4f884972a0e 40
icserny 7:a4f884972a0e 41
frankvnk 2:bb19e60cb933 42 int main()
frankvnk 2:bb19e60cb933 43 {
icserny 7:a4f884972a0e 44 cmpled = 1; // LED OFF at the beginning
icserny 7:a4f884972a0e 45
icserny 7:a4f884972a0e 46 compi.rising(&cmp_rise_ISR); // Set pointer to rising interrupt function
icserny 7:a4f884972a0e 47 compi.falling(&cmp_fall_ISR); // Set pointer to falling interrupt function
icserny 7:a4f884972a0e 48 compi.treshold(0.3); // Set comparator threshold to 1V = 0.3 * 3.3V
icserny 7:a4f884972a0e 49
frankvnk 2:bb19e60cb933 50 while(1)
frankvnk 2:bb19e60cb933 51 {
frankvnk 2:bb19e60cb933 52 printf("Light sensor : %7.5f Volt\n",cmp_lvl*3.3);
icserny 7:a4f884972a0e 53 blinker = 1; // binking LED OFF
icserny 7:a4f884972a0e 54 wait(2); // wait for 2 sec
icserny 7:a4f884972a0e 55 blinker = 0; // blinking LED ON
frankvnk 2:bb19e60cb933 56 wait(0.2);
icserny 7:a4f884972a0e 57 if (compi.status() == 0x01) // poll comparator status
frankvnk 2:bb19e60cb933 58 {
frankvnk 2:bb19e60cb933 59 printf("*** Treshold reached : %7.5f\n",cmp_lvl*3.3);
frankvnk 2:bb19e60cb933 60 }
frankvnk 2:bb19e60cb933 61 }
frankvnk 2:bb19e60cb933 62 }
icserny 7:a4f884972a0e 63
icserny 7:a4f884972a0e 64