/* 4-14-2010 Copyright SparkFun Electronics© 2010 Nathan Seidle spark at sparkfun.com This is a simple test sketch for OpenLog. It sends a large batch of characters to the serial port at 9600bps. Original test was recomended by ScottH on issue #12: http://github.com/nseidle/OpenLog/issues#issue/12 To use this sketch, attach RXI pin of OpenLog to TX pin on Arduino. Power OpenLog from 5V (or 3.3V) and GND pins from Arduino. After power up, OpenLog will start flashing (indicating it's receiving characters). It takes about 1 minute for the sketch to run to completion. This will create a file that looks like this: ... 6:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# 7:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# 8:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# 9:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# #:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# 1:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# 2:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!# ... The reason for creating these character blocks is it allows for a reader to very quickly scan the visible characters and indentify any byte errors or glitches along the way. Every 9 lines we print a 10th line that has a leading character such as # or !. These allow us to quickly see the different blocks of 10 lines. Note: Bootloading an Arduino will cause OpenLog to drop to command mode. This is because OpenLog is looking for the escape character (ctrl+z). During a bootload, all sorts of characters get sent to the Arduino and therefore ctrl+z is likely to get sent to OpenLog. v1.51 of the OpenLog firmware fixes this potential error by requiring three escape characters. */ int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); //Serial.begin(9600); //9600bps is default for OpenLog //Serial.begin(57600); //Much faster serial, used for testing buffer overruns on OpenLog Serial.begin(115200); //Much faster serial, used for testing buffer overruns on OpenLog delay(1000); //Wait a second for OpenLog to init Serial.println(); Serial.println("Run OpenLog Test"); } void loop() { int testAmt = 10; //At 9600, testAmt of 4 takes about 1 minute, 10 takes about 3 minutes //At 57600, testAmt of 10 takes about 1 minute, 40 takes about 5 minutes //testAmt of 10 will push 111,000 characters/bytes. With header and footer strings, total is 111,052 //Each test is 100 lines. 10 tests is 1000 lines (11,000 characters) for(int numofTests = 0 ; numofTests < testAmt ; numofTests++) { //This loop will print 100 lines of 110 characters each for(int k = 33; k < 43 ; k++) { //Print one line of 110 characters with marker in the front (markers go from '!' to '*') Serial.print(k, BYTE); //Print the ASCII value directly: ! then " then #, etc Serial.println(":abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!#"); //delay(50); //Then print 9 lines of 110 characters with new line at the end of the line for(int i = 1 ; i < 10 ; i++) { Serial.print(i, DEC); Serial.println(":abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-!#"); //delay(50); } if(digitalRead(ledPin) == 0) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); } } unsigned long totalCharacters = (long)testAmt * 100 * 110; Serial.print("Characters pushed: "); Serial.println(totalCharacters); Serial.print("Time taken (s): "); Serial.println(millis()/1000); Serial.println("Done!"); while(1) { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); // wait for a second } }