Skip to content

An Arduino library for Spice camp (Oregon Center for Optical, Molecular, and Quantum Science), Pinball building activity

License

Notifications You must be signed in to change notification settings

dileepvr/spice-pinball

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project has been released under a Modified MIT License, the text
of which is presented in the accopanying file LICENSE.md.

Future versions of the MIT license may not automatically apply.

********************************************************
06-03-2014 - Entry by Dileep Reddy
********************************************************

This is a readme file for developers. New entries may be appended at
the end with appropriate header containing date and author(s).

This project is not being released with a license at the time of this
entry. For updates on licensing, check the newer entries below.

The project aims to create a simple Arduino library for use in the
SPICE summer science camp for middle-school kids, being conducted by
the Oregon Center for Optics, and partners on the campus of the
University of Oregon every year. The library is meant to aid in the
engineering branch of the camp, where teams of participants are
expected to design and build Pinball tables using basic electronic
sensors and circuits.


The trunk consists of a folder named 'Pinball'.
It consists of the following files:

notes.h
Pinball.cpp
Pinball.h
README

and a subdirectory named 'examples', with sample programs that
demonstrate the use of each new class defined in the library.

To use this library via the standard arduino IDE, 

1) Copy the entire 'Pinball' folder into the 'libraries' folder.
2) Begin your arduino script with the line:

#include <Pinball.h>

The library uses Arduino.h. So you'll need the arduino core library
files along with the 'Pinball' library if you wish to compile it using
avr-gcc.

The camp uses the Arduino Uno dev boards, and hence the library is specific to ATMEGA168/328P chip pin-mappings.

The planned usage is:

* 3 Digital pins will be used to update the score on a custom
score-board which uses shift registers.

* 1 Digital pin will be used to play melodies on a speaker.

* 3 Digital pins will be used to shift out digital control outputs to
any number of shift latched registers in series.

* 3 Digital pins will be used to address an 8-channel multiplexer to read digital sensor inputs.

* 6 Analog input pins are to be used for optional analog sensors.

* Remaining digital pins may be used any way the team chooses.



As of this entry, there are two classes defined:

Pb_speaker - Meant to play melodies asynchronously on a speaker.
Pb_outputs - Meant to shift out byte-arrays to shift registers.

End of entry

********************************************************
06-09-2014 - Entry by Dileep Reddy
********************************************************

No license yet.

New classes defined:

Pb_switch - Meant to check for toggles with debouncing.
Pb_stopwatch - Meant to keep time (milliseconds).

********************************************************
06-17-2014 - Entry by Wesley Erickson
********************************************************

Added folder for printed circuit board designs in spice-pcb/
Added scoreboard pcb draft.

********************************************************
06-19-2014 - Entry by Wesley Erickson
********************************************************

Finalized scoreboard pcb draft (and added speaker). Submitted
gerber files stored in spice-pcb/scoreboard/order1.tar.gz


********************************************************
06-21-2014 - Entry by Dileep Reddy
********************************************************


The project is now released under the MIT license.

Added new class:

Pb_timedevent - Can execute any 'void(* function)( int)' in a
specified timed sequence, much like Pb_speaker.
Added example (Pbtimedevent).

Also modified Pb_speaker and Pb_timedevent to handle background
loops. This can play a looping sequence (function or melody), and
automatically pause it when new finite duration event/melody needs to
be executed, and continue looping afterwards.

See examples folder (Pbspeakerloop and Pbtimedeventloop) for more.

Added a mariotracks.h file containing a melody for usage in examples.

********************************************************
06-28-2014 - Entry by Dileep Reddy
********************************************************


Wes has added the following classes:

Pb_display - To shift out 2-digit numbers to 7-segment display board
that uses 74HC595 shift registers.
Pb_motor - To control motor using L293D driver chips and pwm pins.

Note that Pb_motor can conflict with the audio classes as Tone() uses
Timer2. So it is best to avoid pins 3 and 11 for motor control.

I added the following class:

Pb_muxin - Probes (digitally) channels of 4051 8-channel multiplexer.

Corresponding examples also created.

********************************************************
06-29-2014 - Entry by Dileep Reddy
********************************************************


Fixed last-note/event-swallowed-by-loop bug in update routines of both
Pb_speaker and Pb_timedevent.

Fixed bug in Pb_switch. Now, it debounces falling edge only.

Corrected Pb_speakerloop example (number of notes is 61, not 62).


********************************************************
06-11-2015 - Entry by Dileep Reddy
********************************************************


Added support for new scoreboard with four 7-segment displays based on
the TM1637 LED driver chip. Used code from TM1637Display library by
[email protected] (released under GNU lesser public license). I
believe that the lesser license allows use of his/her code in our
library as long as we make original library available with original
license, which is done as a subfolder.

Check out Pbscoreboard.ino example file for list of features.
Will add text support soon.

********************************************************
07-05-2015 - Entry by Dileep Reddy
********************************************************


Added support of peak detection circuit PCB to be used in conjunction
with piezo element. Very selfexplanatory.

Gerber and PCB design files will soon be added to repo.

Check out Pbpeakpiezo.ino example file for simple usage.

About

An Arduino library for Spice camp (Oregon Center for Optical, Molecular, and Quantum Science), Pinball building activity

Resources

License

Stars

Watchers

Forks

Packages

No packages published