element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum TSL235R
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 2 replies
  • Subscribers 389 subscribers
  • Views 436 views
  • Users 0 members are here
Related

TSL235R

aureta
aureta over 10 years ago

Hi, I am running assays with the TSL235R light to frequency converter using the code included below. When I shine a flashlight into the sensor the reading slows down, this is, that if the specified period for sending the reading is 1 seconds, under an intense light the delay between each reading increases. Why is so?? and how to could it be corrected?.

Another issue relates to the delay period. When the delay time let´s say is 4 seconds, the serial monitor shows an X number of pulses/second, however when the delay time is 1 second the number returned is X/4. Given a similar light intensity the pulses/second should be the same independently of the moment at which the reading is done. I am probably missing here something related to the working of the sensor. Can I get some help with this too?, Best.

 

 

 

# define TSL235R 2 // Out of TSL235R connected to Digital pin 2

// Constants

int period = 1000; // Miliseconds of each light frecuency measurement

int ScalingFactor = 1; // Scaling factor of this sensor

float area = 0.0092; // Sensing area of TSL235R device (cm2)

// Variables

unsigned long counter = 0; // Counter of measurements during the test

unsigned long currentTime = millis();

unsigned long startTime = currentTime;

volatile long pulses = 0; // Counter of measurements of the TSL235R

unsigned long frequency; // Read the frequency from the digital pin (pulses/second)

float irradiance; // Calculated irradiance (uW/cm2)

void setup() {

Serial.begin(115200); // Start and configure the serial port

attachInterrupt(0, PulseCount, RISING);

pinMode(TSL235R, INPUT); // Declare the pin such as an input of data

Serial.println("Testing a TSL235R sensor:"); // Splash screen

Serial.println("-------------------------");

Serial.println();

}

void loop(){

counter++; // Increase the number of measurement

Serial.print(counter); // Print the measurement number

getfrequency(); // Request to measure the frequency

Serial.print(" ");

Serial.print(frequency); // print the frequency (pulses/second)

Serial.print(" pulses/second ");

getirradiance(); // Request to calculate the irradiance (uW/cm2)

Serial.print(" ");

Serial.print(irradiance); // print the frequency (pulses/second)

Serial.println(" uW/cm2");

pulses = 0; // reset the pulses counter

delay (4000); // wait 4 seconds until the next measurement

}

void PulseCount()

{

pulses++;

}

unsigned long getfrequency () {

noInterrupts();

frequency = pulses /(period/1000); // Calculate the frequency (pulses/second)

interrupts();

return (frequency);

}

float getirradiance () {

irradiance = frequency / area; // Calculate Irradiance (uW/cm2)

return (irradiance);

}

  • Sign in to reply
  • Cancel
Parents
  • neilk
    neilk over 10 years ago

    Hi aureta I may be wrong, but I think you are continuing to count pulses during the delay time:.

    Certain things do go on while the delay() function is controlling the Atmega chip however, because the delay function does not disable interrupts. Serial communication that appears at the RX pin is recorded, PWM (analogWrite) values and pin states are maintained, and interrupts will work as they should.

    This can be found at:   http://arduino.cc/en/reference/delay

     

    You need to keep interrupts disabled during the delay

     

    Hope this helps

     

    Neil

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • neilk
    neilk over 10 years ago

    Hi aureta I may be wrong, but I think you are continuing to count pulses during the delay time:.

    Certain things do go on while the delay() function is controlling the Atmega chip however, because the delay function does not disable interrupts. Serial communication that appears at the RX pin is recorded, PWM (analogWrite) values and pin states are maintained, and interrupts will work as they should.

    This can be found at:   http://arduino.cc/en/reference/delay

     

    You need to keep interrupts disabled during the delay

     

    Hope this helps

     

    Neil

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube