Listing 5 5 FindRandomTarget
Jump to navigation
Jump to search
/* Random Number Match - WHAT IT DOES: Loops while: - Generate random number 0..4999 - Looks for match with Target - If Match, blink "Found" LED - increment an int counter - when int counter overflows: - blink "Recycle LED" - Reset int counter = 0 - increment Recycle counter - When Recycle counter = 5, END - SEE the comments after "//" on each line below - CONNECTIONS: - "FOUNDIT_PIN" LED and resistor on pin 10 - "RECYCLE_PIN" LED and resistor on pin 11 - V1.05 02/23/2015 Questions: terry@yourduino.com */ /*-----( Import needed libraries )-----*/ //None /*-----( Declare Constants and Pin Numbers )-----*/ #define MAX 5000L #define MIN 0L #define TARGETVALUE 2500L #define MAXRECYCLES 5 #define PAUSE 1000 #define FOUNDIT_PIN 10 // Green LED #define RECYCLE_PIN 11 // Red LED /*-----( Declare objects )-----*/ //None /*-----( Declare Variables )-----*/ int analogValueForRandomSeed; long randomNumber; int recycleCounter = 0; int counter = 0; void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(9600); Serial.println("Find target among Random numbers"); pinMode(FOUNDIT_PIN, OUTPUT); pinMode(RECYCLE_PIN, OUTPUT); analogValueForRandomSeed = analogRead(A0); Serial.print ("Analog Value used to seed Random = "); Serial.println(analogValueForRandomSeed, DEC); Serial.println(); randomSeed(analogValueForRandomSeed); }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { while (counter != -1) { randomNumber = generateRandomNumber(); if (randomNumber == TARGETVALUE) { Serial.print("Counter = "); Serial.print(counter, DEC); Serial.print(" Recycles = "); Serial.println(recycleCounter, DEC); digitalWrite(FOUNDIT_PIN, HIGH); delay(PAUSE); digitalWrite(FOUNDIT_PIN, LOW); }//TargetValue counter++; if (counter < 0) // We've overflowed the int { counter = 0; recycleCounter++; Serial.print("int overflow beyond 32767. Recycles = "); Serial.println(recycleCounter, DEC); digitalWrite(RECYCLE_PIN, HIGH); delay(PAUSE); digitalWrite(RECYCLE_PIN, LOW); }//Overflow if (recycleCounter == MAXRECYCLES) { FakeAnEnd(); // End program } }//While Counter }//--(end main loop )--- /*-----( Declare User-written Functions )-----*/ //----------------------- long generateRandomNumber() { return random(MIN, MAX); // Generate random numbers 0 and 5000 } //------------------------------------------------- void FakeAnEnd() { // Fake the end of the program Serial.print("*** THE END ***"); while (true) { } } //*********( THE END )***********