Hackaday.io Hackaday.io
Projects
Discover Contests Courses Stack
More
Courses Tutorials Events Hackerspaces Hackaday.com Tindie Marketplace
Sign up Log in
Close
0%
0%

Non-blocking analogRead()'s for Arduino

The goal of this project is to get non-blocking analogRead()'s added to Arduino core libraries.

jacob-christJacob Christ
Following Follow project
Liked Like project

Become a Hackaday.io member

Not a member? You should Sign up.

Already have an account? Log in.

Sign up with Github
Sign up with Twitter
OR
Forgot your password?

Just one more thing

To make the experience fit your profile, pick a username and tell us what interests you.

Pick an awesome username
hackaday.io/
Your profile's URL: hackaday.io/username. Max 25 alphanumeric characters.
Pick a few interests
Projects that share your interests
People that share your interests

We found and based on your interests.

Choose more interests.

OK, I'm done! Skip
Join this project
Similar projects worth following
294 views
6 comments
18 followers
17 likes
  • Description
  • Details
  • Files 1
    • View all
  • Components 0
  • Logs 1
    • View all
  • Instructions 0
  • Discussion 6
  • The 2017 Hackaday Prize
View Gallery
294
6
18
17

Team (1)

  • jacob-christJacob Christ

Join this project's team
ongoing project
arduino ChipKit 2017HackadayPrize analogread nonblocking

This project is submitted for

  • The 2017 Hackaday Prize
  • Design your concept

This project was created on 03/23/2017 and last updated 9 years ago.

Description

The goal of this project is to get non-blocking analogRead()'s added to Arduino core libraries. I recently made a change to chipKIT-core libraries to add this feature. It had the surprising effect of making existing hardware 2.5 to 5 times faster.

1. The primary challenge this project addresses is the ability to wrangle hardheaded Arduino developers into taking pushes from down stream
2. I'm not sure I can solve this problem of hardheaded developers, not am I sure I want to being one myself, but I'll try.
3. This project makes the world better by breathing new life into old hardware!
4. See picture to the left.
5. These changes have already been published in the chipKIT-core repo, but a Arduino version is needed. https://github.com/chipkit32/chipKIT-core/
6. BSD 3-Clause

Files

chipKIT-core 1.4.0 Non-Blocking Analog Reads.pdf

Original foils I created after implementing in chipKIT-core

Adobe Portable Document Format - 662.13 kB - 03/23/2017 at 20:29

Preview

Project Logs
Collapse

  • Started a Discussion

    Jacob Christ • 03/23/2017 at 20:31 • 1 comment

    Last night I submitted a suggestion to try to impliment this on the Arduino Developers form...

    https://groups.google.com/a/arduino.cc/forum/#!topic/developers/eTFLXvUiVZA

View project log

Enjoy this project?

Share

Discussions

Log In/Sign up to comment

Become a Hackaday.io Member

Create an account to leave a comment. Already have an account? Log In.

Sign up with Github
Sign up with Twitter
OR
K.C. Lee wrote 03/31/2017 at 12:17 • point

If you only need a single channel, just need to turn on the free running mode in the ADC, then you can grab the latest results anytime you want.  Most microcontrollers have something like this.  On chips with DMA, just grab and process whole block of data.  Some might even let you specify the channel sequence.

For a PID loop, you want to take the ADC snapshots from a hardware timer and not a software timing loop.  Jitters in the sampling time affects the D term in a PID controller.  Faster isn't necessarily better.

https://www.chiefdelphi.com/forums/archive/index.php/t-83734.html

  Are you sure? yes | no

Jacob Christ wrote 03/31/2017 at 17:03 • point

I rarely use a D term but good to know. Had never thought about this but a good point.

  Are you sure? yes | no

K.C. Lee wrote 03/31/2017 at 17:18 • point

I use the D term quite a bit.  It gets you a faster settling time while controlling the oscillations/overshoots.  As with finite derivatives, it is unfortunately prone to noise.  :(

  Are you sure? yes | no

Jacob Christ wrote 03/27/2017 at 17:57 • point

Sounds like a blocking mental-block.

  Are you sure? yes | no

Eric Hertz wrote 03/31/2017 at 06:02 • point

:)

  Are you sure? yes | no

Eric Hertz wrote 03/24/2017 at 03:44 • point
ah hah! "Non-Blocking" is the word that was on a mental-block for me

  Are you sure? yes | no

Similar Projects

This project is Arduino Pro Mini based and includes my mini shields prototypes.
Project Owner Contributor

XBee and FPV cam spy car

hubacekphubacekp

My somewhat odd and random project of building a racing mower( was brought on by my arduino ecm )
Project Owner Contributor

Racing Mower

cg72cg72

This project is perfect for those who want to take on an intermediate arduino project, and want to get some hands on mechanical experience
Project Owner Contributor

BUILDING AN ARDUINO BASED ROBOTIC HAND

stan-averystan avery

Implementation from last prototype project to real, a fish cultivator and plants fully automatic with Ubidots IoT Based
Project Owner Contributor

eUngkot - Fish Feeder & Aquaponics Based on IoT

al-qalitAl Qalit

Does this project spark your interest?

Become a member to follow this project and never miss any updates

Going up?

About Us Contact Hackaday.io Give Feedback Terms of Use Privacy Policy Hackaday API

© 2026 Hackaday

By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More

Yes, delete it Cancel

Report project as inappropriate

You are about to report the project "Non-blocking analogRead()'s for Arduino", please tell us the reason.

Send message

Your application has been submitted.

Remove Member

Are you sure you want to remove yourself as a member for this project?

Project owner will be notified upon removal.