tweaked detection to use photoresistor through an opamp

Dependents:   rgb_sensor_buffer

Fork of rgb_sensor by Milosch Meriac

Committer:
meriac
Date:
Wed Jun 25 14:59:12 2014 +0000
Revision:
1:204db97d10c9
Parent:
0:576e43bd193d
Child:
2:4545984e62b6
Fixed header license

Who changed what in which revision?

UserRevisionLine numberNew contents of line
meriac 1:204db97d10c9 1 /* Discrete RGB color sensor
meriac 1:204db97d10c9 2 *
meriac 1:204db97d10c9 3 * - uses single-channel light-dependent resistor (via ADC)
meriac 1:204db97d10c9 4 * and a RGB LED.
meriac 1:204db97d10c9 5 * - compensates background light
meriac 1:204db97d10c9 6 *
meriac 1:204db97d10c9 7 * Copyright (c) 2014 ARM Limited
meriac 1:204db97d10c9 8 *
meriac 1:204db97d10c9 9 * Licensed under the Apache License, Version 2.0 (the "License");
meriac 1:204db97d10c9 10 * you may not use this file except in compliance with the License.
meriac 1:204db97d10c9 11 * You may obtain a copy of the License at
meriac 1:204db97d10c9 12 *
meriac 1:204db97d10c9 13 * http://www.apache.org/licenses/LICENSE-2.0
meriac 1:204db97d10c9 14 *
meriac 1:204db97d10c9 15 * Unless required by applicable law or agreed to in writing, software
meriac 1:204db97d10c9 16 * distributed under the License is distributed on an "AS IS" BASIS,
meriac 1:204db97d10c9 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
meriac 1:204db97d10c9 18 * See the License for the specific language governing permissions and
meriac 1:204db97d10c9 19 * limitations under the License.
meriac 1:204db97d10c9 20 */
meriac 1:204db97d10c9 21
meriac 1:204db97d10c9 22 #ifndef __RGB_SENSOR_H__
meriac 0:576e43bd193d 23 #define __RGB_SENSOR_H__
meriac 0:576e43bd193d 24
meriac 0:576e43bd193d 25 #ifndef RGB_OVERSAMPLING
meriac 0:576e43bd193d 26 #define RGB_OVERSAMPLING 128
meriac 0:576e43bd193d 27 #endif/*RGB_OVERSAMPLING*/
meriac 0:576e43bd193d 28
meriac 0:576e43bd193d 29 #ifndef RGB_MAX_ADC_CLK
meriac 0:576e43bd193d 30 #define RGB_MAX_ADC_CLK 12400000UL
meriac 0:576e43bd193d 31 #endif/*RGB_MAX_ADC_CLK*/
meriac 0:576e43bd193d 32
meriac 0:576e43bd193d 33 #define RGB_CHANNELS 4
meriac 0:576e43bd193d 34
meriac 0:576e43bd193d 35 typedef struct
meriac 0:576e43bd193d 36 {
meriac 0:576e43bd193d 37 int red,green,blue;
meriac 0:576e43bd193d 38 } TRGB_Channel;
meriac 0:576e43bd193d 39
meriac 0:576e43bd193d 40 typedef union
meriac 0:576e43bd193d 41 {
meriac 0:576e43bd193d 42 TRGB_Channel ch;
meriac 0:576e43bd193d 43 int data[3];
meriac 0:576e43bd193d 44 } TRGB;
meriac 0:576e43bd193d 45
meriac 0:576e43bd193d 46 class RGB_Sensor
meriac 0:576e43bd193d 47 {
meriac 0:576e43bd193d 48 public:
meriac 0:576e43bd193d 49 RGB_Sensor(PinName red, PinName green, PinName blue, PinName adc);
meriac 0:576e43bd193d 50 ~RGB_Sensor(void);
meriac 0:576e43bd193d 51 bool capture(TRGB &rgb);
meriac 0:576e43bd193d 52 bool capture(void);
meriac 0:576e43bd193d 53 bool wait(TRGB &rgb);
meriac 0:576e43bd193d 54 protected:
meriac 0:576e43bd193d 55 bool m_done;
meriac 0:576e43bd193d 56 uint8_t m_adc_channel, m_rgb_channel;
meriac 0:576e43bd193d 57 DigitalOut m_red, m_green, m_blue;
meriac 0:576e43bd193d 58 int m_adc_aggregation[RGB_CHANNELS], m_adc_count;
meriac 0:576e43bd193d 59 bool wait(void);
meriac 0:576e43bd193d 60 private:
meriac 0:576e43bd193d 61 static void __adc_irq(void);
meriac 0:576e43bd193d 62 void adc_irq(void);
meriac 0:576e43bd193d 63 static RGB_Sensor *m_global;
meriac 0:576e43bd193d 64 };
meriac 0:576e43bd193d 65
meriac 0:576e43bd193d 66 #endif/*__RGB_SENSOR_H__*/