MODEL RAILROADING WITH ARDUINO -...
Transcript of MODEL RAILROADING WITH ARDUINO -...
![Page 1: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/1.jpg)
MODEL RAILROADINGWITH ARDUINO
Dave FalkenburgSilicon Valley Lines Model Railroad Club
![Page 2: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/2.jpg)
WHAT IS AN ARDUINO?
![Page 3: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/3.jpg)
WHAT IS AN ARDUINO?
• Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software.
• It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
• A little programmable computer platform designed help people “make things go.”
http://www.arduino.cc/
![Page 4: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/4.jpg)
![Page 5: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/5.jpg)
WHAT IS OPEN SOURCE?
• Source Code is Publicly Available
•No Secrets Hidden from Developers
• License Controls How Code Can Be Used
•Different Code & Projects Use Different Licenses
• “Like Playing Poker With Everyone’s Cards Face Up”
![Page 6: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/6.jpg)
http://vimeo.com/18539129
THERE IS EVEN A MOVIE…
![Page 7: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/7.jpg)
HARDWARE
• Based upon widely available 8-bit Micro-controllers
• Single-chip Computers as powerful as the early PCs
• Open Hardware
• Schematics available under various licensing terms
• Kits and Built-up Boards from $15 to $80
• Expand with “Shields” (Stackable Boards)
![Page 8: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/8.jpg)
![Page 9: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/9.jpg)
HARDWARE
• 13 digital I/O pins
• 6 can be PWMed (digital dimmer)
• 6 Analog Inputs
• Can also be used as extra digital I/O pins
• 6V-12V Power Supply or 5V from USB
• Easily Expandable & Customizable to add features
![Page 10: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/10.jpg)
SOFTWARE
![Page 11: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/11.jpg)
SOFTWARE
•Works with Windows, Mac OS X, and Linux
• Open Source
• Free to Download & Use
• Source Code Available
• Program Hardware via USB or Serial Port
![Page 12: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/12.jpg)
SOFTWARE
• C-like Language
• Programs for the Arduino are called “Sketches”
• Ideal for Hobbyists, Artists, and Explorers
• Rapid Prototyping of small projects is the goal
• Easy to use “Libraries” developed by others
•DCC, Communications, LED etc.
![Page 13: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/13.jpg)
SOFTWARE
• All the “grunt work” is done for you by Arduino
•Only two functions to create
• setup() : initialize inputs & outputs
• loop() : run over and over again until power is removed
• Sketchbook and examples to build upon, too.
![Page 14: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/14.jpg)
“BLINKY” SKETCH
![Page 15: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/15.jpg)
/* Blink: Turns on an LED on for one second, then off for one second, repeatedly. * LED connected from digital pin 13 to ground. * Note: On most Arduino boards, there is already an LED on the board connected to pin 13, so you don't need any extra components for this example. Created 1 June 2005 By David Cuartielles http://arduino.cc/en/Tutorial/Blink based on an orginal by H. Barragan for the Wiring i/o board */
int ledPin = 13; // LED connected to digital pin 13
// The setup() method runs once, when the sketch starts
void setup(){ pinMode(ledPin, OUTPUT); // initialize the digital pin as an output:}
// the loop() method runs over and over again, as long as the Arduino has power
void loop(){ digitalWrite(ledPin, HIGH); // turn the LED on delay(100); digitalWrite(ledPin, LOW); // turn the LED off delay(100);}
![Page 16: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/16.jpg)
ARDUINO “SHIELDS”
![Page 18: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/18.jpg)
SOUND EFFECTS
WAV Shield MP3 Player Shield
http://www.adafruit.com/ http://www.sparkfun.com/
![Page 19: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/19.jpg)
RELAY SHIELD
http://shop.evilmadscientist.com/
![Page 20: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/20.jpg)
CONNECTING WIRES
Adafruit Proto-screwshieldhttp://www.adafruit.com/
![Page 21: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/21.jpg)
“PATCH SHIELD”
http://info.yawp.com/kits/patch-shield-v04/index.html
![Page 22: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/22.jpg)
NEED MORE I/O?
http://macetech.com http://mayhewlabs.com/
Centipede Shield (64-GPIO) MuxShield II
![Page 23: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/23.jpg)
ETHERNET
http://www.arduino.cc/
Ethernet Shield Arduino Ethernet*
![Page 24: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/24.jpg)
MESH NETWORKING
XBee ShieldArduino Wireless Shield
![Page 25: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/25.jpg)
WIFI
$69.95!!!$84.95!!!
![Page 26: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/26.jpg)
MICROCHIP RN-XV WIFI
$34.95
XBee Form-Factor WiFi Module
$24.95
![Page 27: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/27.jpg)
“ELECTRIC IMP” WIFI
$29.95$19.95 +(The “Imp” is actually a cloud-programmed WiFi Micro)
![Page 29: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/29.jpg)
SPECIAL EFFECTS
![Page 30: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/30.jpg)
SPECIAL EFFECTS
NOTE: This is an mbed, not an Arduino; probably should re-shoot the video.
![Page 31: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/31.jpg)
EFFECTS YOU CANNOT BUY
Sperry Rail Service Inspection Vehicle
![Page 32: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/32.jpg)
ARDUINO & YOUR LAYOUT
![Page 33: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/33.jpg)
MIX AND MATCH
• An Arduino can connect to existing Model Railroad Electronics
• Chubb SMC12 for using digital output to control Tortoise
•DCCOD, TeamDigital DBD22, and NCE BD20 Detectors
![Page 34: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/34.jpg)
LED SIGNALS
![Page 35: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/35.jpg)
CONNECTING LEDS• Anode (+, long leg) of LED to +5V (or 3.3V)• Cathode (-, short leg, flat side) of LED to DIGITAL I/O Pin
through a 470Ω resistor (330Ω for 3.3V)
I/O
I/O
5V470Ω
470Ω
• Anode (+, long leg) to DIGITAL I/O Pin through a 470Ω resistor (330Ω for 3.3V)• Cathode (-, short leg, flat side) to Ground
![Page 36: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/36.jpg)
SWITCHING 12V CIRCUITS
NPN Transistor as Low Side Switch
I/O
I/O
![Page 37: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/37.jpg)
LOTS MORE HERE
http://www.arduino.cc/playground/Main/InterfacingWithHardware
![Page 38: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/38.jpg)
DIVING INTO CODE
![Page 39: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/39.jpg)
MAKING FIREint ledPin = 13; // LED connected to digital pin 13
void setup() { pinMode(ledPin, OUTPUT); }
void loop() { int dark; for (dark=0;dark<1000;dark++) { if (dark<500) { digitalWrite(ledPin, HIGH); // set the LED on delay(random(10-10*(dark/500))); } digitalWrite(ledPin, LOW); // set the LED off delay(random(10+dark,50+dark)); }}
![Page 40: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/40.jpg)
AN ARC WELDERint ledPin = 13; // LED connected to digital pin 13
void setup() { pinMode(ledPin, OUTPUT); }
void loop() { int i,count;
count=random(10,60); for (i=0;i<count;i++) { digitalWrite(ledPin, HIGH); // set the LED on delay(random(60)); digitalWrite(ledPin, LOW); // set the LED off delay(random(200)); } delay(random(800,2000)); // wait a random bit of time}
![Page 41: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/41.jpg)
A GRADE CROSSING
![Page 42: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/42.jpg)
BUILDING THE HARDWARE
• Arduino Uno
•WAV Shield + SDCard
• Adafruit Proto-screwshield
•Optical Detectors (e.g., IRDOT or NightScope™)
•Walthers Crossing Signal
![Page 43: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/43.jpg)
BASIC STRATEGY
• If Train Detected (IRDOTs connected to Digital Inputs):
• Play Bell Sound Loop & Blink Crossing Lights (LEDs)
• If Train No Longer Detected:
• Lights Off; Stop Bell Sound Loop
• Source Code Available Here:
https://github.com/railnerd/grade-crossing/
![Page 44: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/44.jpg)
STATE MACHINE SIDEBAR
• Simple If… Then… Sequences are Easy
• Doing Complex, or Multiple Things at Once is Harder
• (Blinking, Playing Sound, Reading Detectors)
• Requires Breaking Up the Work you Do
• Computer Folks Do This With “State Machines”
• If you are a non-programmer, this can be mind blowing
![Page 45: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/45.jpg)
GRADE CROSSING SKETCH#include <WaveHC.h> // WaveShield Functions#include <WaveUtil.h>
// Arduino Pin Assignments#define EB_DETECT A0#define WB_DETECT A1#define LED_LEFT A2#define LED_RIGHT A3
// Global Stateenum { kIdle = 0, kEastboundApproach, kWestboundApproach, kApproachCommon, kOccupied};
int interlockingState = kIdle;int deactivateTimer = 10000;
![Page 46: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/46.jpg)
SETUP()void setup(){ Serial.begin(9600); // for debugging
// Set up detector inputs, and enable on-‐chip ~20K pullup resistors pinMode(EB_DETECT,INPUT); pinMode(WB_DETECT,INPUT); digitalWrite(EB_DETECT,HIGH); digitalWrite(WB_DETECT,HIGH); // Could also implement “center” detector if road is fouled
// Set up LED outputs pinMode(LED_LEFT,OUTPUT); pinMode(LED_RIGHT,OUTPUT);
// Get ready to play audio files from the SD Card setupSDCard(); turnOffLEDs();}
![Page 47: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/47.jpg)
LOOP()void loop(){ switch (interlockingState) { case kIdle: if ((digitalRead(EB_DETECT) == LOW) && (digitalRead(WB_DETECT) == HIGH)) { interlockingState = kEastboundApproach; } else if ((digitalRead(WB_DETECT) == LOW) && (digitalRead(EB_DETECT) == HIGH)) { interlockingState = kWestboundApproach; } break;
case kEastboundApproach: interlockingState = kApproachCommon; break;
case kWestboundApproach: interlockingState = kApproachCommon; break;
....
![Page 48: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/48.jpg)
LOOP() case kApproachCommon: deactivateTimer = 10000; interlockingState = kOccupied; break;
case kOccupied: animateLEDs(); playCrossingBell(); // Hang out in occupied state until both detectors are showing clear if ((digitalRead(WB_DETECT) == HIGH) && (digitalRead(EB_DETECT) == HIGH)) { deactivateTimer-‐-‐; if (!deactivateTimer) { turnOffLEDs(); interlockingState = kIdle; } } else { deactivateTimer = 10000; } break;
default: break; }}
....
![Page 49: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/49.jpg)
LED ROUTINESvoid animateLEDs(void) {
if (ledTimer) ledTimer-‐-‐;
switch (ledState) {
case kLEDsOff: ledTimer = 0; // fall through
case kLEDRightOn: if (!ledTimer) { ledState = kLEDLeftOn; ledTimer = 10000; digitalWrite(LED_LEFT,LOW); digitalWrite(LED_RIGHT,HIGH); } break;
case kLEDLeftOn: if (!ledTimer) { ledState = kLEDRightOn; ledTimer = 10000; digitalWrite(LED_LEFT,HIGH); digitalWrite(LED_RIGHT,LOW); } break; }}
//////////////////////////////// LED Animation Routines//
enum { kLEDsOff = 0, kLEDLeftOn, kLEDRightOn};
int ledState = kLEDsOff;int ledTimer = 0;
void turnOffLEDs(void) { digitalWrite(LED_RIGHT,HIGH); digitalWrite(LED_LEFT,HIGH); ledState = kLEDsOff;}
![Page 50: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/50.jpg)
WHAT ELSE CAN YOU DO?
• Push Buttons
• Photocells
• Current Detectors
• Servo Motors
• Stepper Motors
•MP3 Playback Chips
• RFID Readers
•Other Computers
•WiFi
• Ethernet
![Page 51: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/51.jpg)
COOL STUFF
• Seth Neumann’s RFID Work:• http://www.pcrnmra.org/pcr/clinics/RFID-in-Model-Railroading-20130123.pdf
• Chuck Catania: Simple Signals With Arduino
•DCC Sniffer : http://www.mynabay.com/arduino
•DCC Throttle: http://www.oscale.net/en/arduino
•DC Control:http://modelrail.otenko.com/electronics/controlling-your-trains-with-an-arduino
http://dawson-station.blogspot.com/2010/01/wii-nunchuk-train-control.html
![Page 52: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/52.jpg)
NEW THINGS
![Page 53: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/53.jpg)
NEW STUFF
•More powerful boards with ARM processors now available
•Due: http://arduino.cc/en/Main/ArduinoBoardDue
• Teensy 3.0: http://www.pjrc.com/store/teensy3.html
![Page 54: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/54.jpg)
OPENLCB, TOO.
http://railstars.com/hardware/io/io-duino/
![Page 55: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/55.jpg)
RASPBERRY PI• Another Game Changing
Device
• 700MHz ARM Linux Computer for $25/$35!
• Full Linux System with GPIO, I2C, SPI, etc.
• Look for a Clinic Soon
![Page 56: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/56.jpg)
WRAP UP
![Page 57: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/57.jpg)
GETTING MORE HELP
•Online Resources:
http://arduino.cc
• Arduini Yahoo Group:
• TechShop Classes
• Books
![Page 58: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/58.jpg)
USEFUL LINKS
• http://www.arduino.cc/
• http://www.sparkfun.com/
• http://www.adafruit.com/
• http://learn.adafruit.com/category/learn-arduino
• http://moderndevice.com/
• http://spikenzielabs.com/
• http://techshop.ws/
Just Google/Bing/Yahoo for “Arduino” in your favorite web browser!
![Page 59: MODEL RAILROADING WITH ARDUINO - Pacificpcrnmra.org/pcr/clinics/ModelRailroadingWithArduinoRdr7up.pdf · MODEL RAILROADING WITH ARDUINO Dave Falkenburg Silicon Valley Lines Model](https://reader033.fdocuments.us/reader033/viewer/2022051009/5a79d10e7f8b9ad7608cdea7/html5/thumbnails/59.jpg)
Q&A