Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
80 views

Arduino Uno Ec Sample Code

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views

Arduino Uno Ec Sample Code

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

TM

Arduino Uno
Conductivity Sample Code

//This code was written to be easy to understand.


//Code efficiency was not considered.
//Modify this code as you see fit.
//This code will output data to the Arduino serial monitor.
//Type commands into the Arduino serial monitor to control the EC circuit.
//This code was written in the Arduino 1.6.5 IDE
//An Arduino UNO was used to test this code.

GND

9
8

7
6
5
4
3
2
1
0
AREF

13
12

10
11

RESET

RX0
TX0
DIGITAL (PWM= )
ICSP2
L

TX ON
Arduino
TM

RX
1
ICSP
center

sheild

POWER ANALOG IN
RESET
IOREF

GND
GND
3V3

VIN
5V

A0

A1

A2

A3

A4

A5

BNC

#include <SoftwareSerial.h> //we have to include the SoftwareSerial library, or else we can't use it
#define rx 2 //define what pin rx is going to be
#define tx 3 //define what pin tx is going to be

SoftwareSerial myserial(rx, tx); //define how the soft serial port is going to work

String inputstring = ""; //a string to hold incoming data from the PC
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product
boolean input_string_complete = false; //have we received all the data from the PC
boolean sensor_string_complete = false; //have we received all the data from the Atlas Scientific product

void setup() { //set up the hardware


Serial.begin(9600); //set baud rate for the hardware serial port_0 to 9600
myserial.begin(9600); //set baud rate for the software serial port to 9600
inputstring.reserve(10); //set aside some bytes for receiving data from the PC
sensorstring.reserve(30); //set aside some bytes for receiving data from Atlas Scientific product
}

void serialEvent() { //if the hardware serial port_0 receives a char


inputstring = Serial.readStringUntil(13); //read the string until we see a <CR>
input_string_complete = true; //set the flag used to tell if we have received a completed string from the PC
}

void loop() { //here we go...

if (input_string_complete) { //if a string from the PC has been received in its entirety
myserial.print(inputstring); //send that string to the Atlas Scientific product
myserial.print('\r'); //add a <CR> to the end of the string
inputstring = ""; //clear the string
input_string_complete = false; //reset the flag used to tell if we have received a completed string from the PC
}

if (myserial.available() > 0) { //if we see that the Atlas Scientific product has sent a character
char inchar = (char)myserial.read(); //get the char we just received
sensorstring += inchar; //add the char to the var called sensorstring
if (inchar == '\r') { //if the incoming character is a <CR>
sensor_string_complete = true; //set the flag
}
}

if (sensor_string_complete == true) { //if a string from the Atlas Scientific product has been received in its entirety
if (isdigit(sensorstring[0]) == false) { //if the first character in the string is a digit
Serial.println(sensorstring); //send that string to the PC's serial monitor
}
else //if the first character in the string is NOT a digit
{
print_EC_data(); //then call this function
}
sensorstring = ""; //clear the string
sensor_string_complete = false; //reset the flag used to tell if we have received a completed string from the
} //Atlas Scientific product
}

void print_EC_data(void) { //this function will pars the string

char sensorstring_array[30]; //we make a char array


char *EC; //char pointer used in string parsing
char *TDS; //char pointer used in string parsing
char *SAL; //char pointer used in string parsing
char *GRAV; //char pointer used in string parsing
float f_ec; //used to hold a floating point number that is the EC

sensorstring.toCharArray(sensorstring_array, 30); //convert the string to a char array


EC = strtok(sensorstring_array, ","); //let's pars the array at each comma
TDS = strtok(NULL, ","); //let's pars the array at each comma
SAL = strtok(NULL, ","); //let's pars the array at each comma
GRAV = strtok(NULL, ","); //let's pars the array at each comma

Serial.print("EC:"); //we now print each value we parsed separately


Serial.println(EC); //this is the EC value

Serial.print("TDS:"); //we now print each value we parsed separately


Serial.println(TDS); //this is the TDS value

Serial.print("SAL:"); //we now print each value we parsed separately


Serial.println(SAL); //this is the salinity value

Serial.print("GRAV:"); //we now print each value we parsed separately


Serial.println(GRAV); //this is the specific gravity
Serial.println(); //this just makes the output easier to read

//f_ec= atof(EC); //uncomment this line to convert the char to a float


}

Click here to download the *.ino file

Atlas-Scientific.com Copyright © Atlas Scientific LLC All Rights Reserved

You might also like