X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=programming%2Floops%2Fmatch_5_while_loop%2Fmatch_5_while_loop.ino;fp=programming%2Floops%2Fmatch_5_while_loop%2Fmatch_5_while_loop.ino;h=92d930d9d3d50a84e8d18f7092d9d61641f25777;hb=81ae6f5410398f1f3a59b671aa400338a8748284;hp=0000000000000000000000000000000000000000;hpb=0ef9dc22a6c180ef5470b5dd1389ba297a7d1e39;p=sketchbook_andrea diff --git a/programming/loops/match_5_while_loop/match_5_while_loop.ino b/programming/loops/match_5_while_loop/match_5_while_loop.ino new file mode 100644 index 0000000..92d930d --- /dev/null +++ b/programming/loops/match_5_while_loop/match_5_while_loop.ino @@ -0,0 +1,73 @@ +/* Exercise 2, with a WHILE loop and a Break statement: +- http://arduino.cc/en/Reference/Break + + Test a random number agains a value: + a iteretive loop perform 255 runs to see if a random number in range 0-255 + is equal to the target value set to 200. + + Light a led in case + Light the other LED if a run of 255 test has gone + Log the results (if success) trough serialport + */ + +// Data structure + +const byte GREEN = 13 ; // LED for found value +const byte RED = 12 ; // LEAD for restart + +const int TARGET = 200 ; +long randomNumber = 0L; + +// Staff +const int WAIT = 1000 ; +const int REST = 10 ; +byte count = 0 ; +const byte MAXRUN = 10 ; +byte totalRun = 0 ; + +void setup() { + pinMode(RED,OUTPUT); + pinMode(GREEN,OUTPUT); + // Serial stuff + Serial.begin(9600); + Serial.println("Initializing random sequence, please wait for results."); + randomSeed(analogRead(0)); // Random initializer +} + +void loop() { // put your main code here, to run repeatedly: + digitalWrite(GREEN, LOW); + digitalWrite(RED, LOW); + // Serial.println(count); + + while (count < 255) { + randomNumber = random(0,255); //Randoom value generated + Serial.print("|"); + count++ ; + delay(REST); + if (randomNumber == TARGET) { // When we catch the value + Serial.println(); + Serial.print("--> Match found! Counter was at: "); // serial message + Serial.println(count); + digitalWrite(GREEN, HIGH); + delay(WAIT); + count++ ; + break; // Interrompe il ciclo + } + } + + Serial.println(); + Serial.println("Counter resetted."); // serial staff + count = 0; + digitalWrite(RED, HIGH); + delay(WAIT); + count++ ; + totalRun++ ; + if (totalRun == MAXRUN) { + Serial.println("10 runs done, exit program."); + digitalWrite(RED, HIGH); + delay(WAIT); + exit(0); + } +} + +