pH meter

Hi, I have previously used code from around the net to read from a pH meter fine.

Now I have done the same with a flowmeter and the serial monitor gives jumbled reading

going back to using the pH meter/ reading current gives also jumbled readings

Where do I begin to solve these problems?

Thanks Mat

Do you really think anyone can help from just that? Maybe a few details are in order? Perhaps it has something to do with the code? But right now you're the only one who can see that. Perhaps it has something to do with wiring? But again, you're the only one who can see that.

Can you maybe provide a few details to work from? Otherwise all anyone can say is, you've done something wrong.

I have used the same saved code as before and same wiring as its only gnd,signal and 5v. I do not have anything else in the circuit

Stupid question, how does the code stay with the arduino? I have tried the reset button can see the memory doesnt work in same way as an sd card might

wm334:
I have used the same saved code as before and same wiring as its only gnd,signal and 5v. I do not have anything else in the circuit

Stupid question, how does the code stay with the arduino? I have tried the reset button can see the memory doesnt work in same way as an sd card might

What is the baud rate your Sketch is using? Serial.begin(3883)?

Make sure the Serial Monitor is set to the Same rate? Probably 19200, 115200,9600… etc

Chuck.

wm334: I have used the same saved code as before and same wiring as its only gnd,signal and 5v. I do not have anything else in the circuit

Stupid question, how does the code stay with the arduino? I have tried the reset button can see the memory doesnt work in same way as an sd card might

The code goes into non-volatile Flash memory.

That's too bad about it not working anymore. I wish I could see something of your project I could probably help. But unfortunately I don't read minds and I can't help you fix something I can't see and you won't tell about.

If you want help please include some details and some code. If you don't want to do that then please stop wasting time.

Apologies, the code I'm using is from

http://diyhacking.com/arduino-flow-rate-sensor/

/* Liquid flow rate sensor -DIYhacking.com Arvind Sanjeev Measure the
liquid/water flow rate using this code. Connect Vcc and Gnd of sensor
to arduino, and the signal line to arduino digital pin 2. */ byte
statusLed = 13; byte sensorInterrupt = 0; // 0 = digital pin 2 byte
sensorPin = 2; // The hall-effect flow sensor outputs approximately
4.5 pulses per second per // litre/minute of flow. float
calibrationFactor = 4.5; volatile byte pulseCount; float flowRate;
unsigned int flowMilliLitres; unsigned long totalMilliLitres; unsigned
long oldTime; void setup() { // Initialize a serial connection for
reporting values to the host Serial.begin(38400); // Set up the status
LED line as an output pinMode(statusLed, OUTPUT);
digitalWrite(statusLed, HIGH); // We have an active-low LED attached
pinMode(sensorPin, INPUT); digitalWrite(sensorPin, HIGH); pulseCount =
0; flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime
= 0; // The Hall-effect sensor is connected to pin 2 which uses
interrupt 0. // Configured to trigger on a FALLING state change
(transition from HIGH // state to LOW state)
attachInterrupt(sensorInterrupt, pulseCounter, FALLING); } /** * Main
program loop */ void loop() { if((millis() - oldTime) > 1000) // Only
process counters once per second { // Disable the interrupt while
calculating flow rate and sending the value to // the host
detachInterrupt(sensorInterrupt); // Because this loop may not
complete in exactly 1 second intervals we calculate // the number of
milliseconds that have passed since the last execution and use // that
to scale the output. We also apply the calibrationFactor to scale the
output // based on the number of pulses per second per units of
measure (litres/minute in // this case) coming from the sensor.
flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) /
calibrationFactor; // Note the time this processing pass was executed.
Note that because we've // disabled interrupts the millis() function
won't actually be incrementing right // at this point, but it will
still return the value it was set to just before // interrupts went
away. oldTime = millis(); // Divide the flow rate in litres/minute by
60 to determine how many litres have // passed through the sensor in
this 1 second interval, then multiply by 1000 to // convert to
millilitres. flowMilliLitres = (flowRate / 60) * 1000; // Add the
millilitres passed in this second to the cumulative total
totalMilliLitres += flowMilliLitres; unsigned int frac; // Print the
flow rate for this second in litres / minute Serial.print("Flow rate:
"); Serial.print(int(flowRate)); // Print the integer part of the
variable Serial.print("."); // Print the decimal point // Determine
the fractional part. The 10 multiplier gives us 1 decimal place. frac
= (flowRate - int(flowRate)) * 10; Serial.print(frac, DEC) ; // Print
the fractional part of the variable Serial.print("L/min"); // Print
the number of litres flowed in this second Serial.print(" Current
Liquid Flowing: "); // Output separator Serial.print(flowMilliLitres);
Serial.print("mL/Sec"); // Print the cumulative total of litres flowed
since starting Serial.print(" Output Liquid Quantity: "); // Output
separator Serial.print(totalMilliLitres); Serial.println("mL"); //
Reset the pulse counter so we can start incrementing again pulseCount
= 0; // Enable the interrupt again now that we've finished sending
output attachInterrupt(sensorInterrupt, pulseCounter, FALLING); } } /*
Insterrupt Service Routine */ void pulseCounter() { // Increment the
pulse counter pulseCount++; }

Ok, you need to select More, Modify, and put carriage returns all thru that. Or delete the code, and paste in a version that is formatted to be readable.

/* Liquid flow rate sensor -DIYhacking.com Arvind Sanjeev

Measure the liquid/water flow rate using this code. Connect Vcc and Gnd of sensor to arduino, and the signal line to arduino digital pin 2.

*/

byte statusLed = 13;

byte sensorInterrupt = 0; // 0 = digital pin 2 byte sensorPin = 2;

// The hall-effect flow sensor outputs approximately 4.5 pulses per second per // litre/minute of flow. float calibrationFactor = 4.5;

volatile byte pulseCount;

float flowRate; unsigned int flowMilliLitres; unsigned long totalMilliLitres;

unsigned long oldTime;

void setup() {

// Initialize a serial connection for reporting values to the host Serial.begin(38400);

// Set up the status LED line as an output pinMode(statusLed, OUTPUT); digitalWrite(statusLed, HIGH); // We have an active-low LED attached

pinMode(sensorPin, INPUT); digitalWrite(sensorPin, HIGH);

pulseCount = 0; flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime = 0;

// The Hall-effect sensor is connected to pin 2 which uses interrupt 0. // Configured to trigger on a FALLING state change (transition from HIGH // state to LOW state) attachInterrupt(sensorInterrupt, pulseCounter, FALLING); }

/** * Main program loop */ void loop() {

if((millis() - oldTime) > 1000) // Only process counters once per second { // Disable the interrupt while calculating flow rate and sending the value to // the host detachInterrupt(sensorInterrupt);

// Because this loop may not complete in exactly 1 second intervals we calculate // the number of milliseconds that have passed since the last execution and use // that to scale the output. We also apply the calibrationFactor to scale the output // based on the number of pulses per second per units of measure (litres/minute in // this case) coming from the sensor. flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;

// Note the time this processing pass was executed. Note that because we've // disabled interrupts the millis() function won't actually be incrementing right // at this point, but it will still return the value it was set to just before // interrupts went away. oldTime = millis();

// Divide the flow rate in litres/minute by 60 to determine how many litres have // passed through the sensor in this 1 second interval, then multiply by 1000 to // convert to millilitres. flowMilliLitres = (flowRate / 60) * 1000;

// Add the millilitres passed in this second to the cumulative total totalMilliLitres += flowMilliLitres;

unsigned int frac;

// Print the flow rate for this second in litres / minute Serial.print("Flow rate: "); Serial.print(int(flowRate)); // Print the integer part of the variable Serial.print("."); // Print the decimal point // Determine the fractional part. The 10 multiplier gives us 1 decimal place. frac = (flowRate - int(flowRate)) * 10; Serial.print(frac, DEC) ; // Print the fractional part of the variable Serial.print("L/min"); // Print the number of litres flowed in this second Serial.print(" Current Liquid Flowing: "); // Output separator Serial.print(flowMilliLitres); Serial.print("mL/Sec");

// Print the cumulative total of litres flowed since starting Serial.print(" Output Liquid Quantity: "); // Output separator Serial.print(totalMilliLitres); Serial.println("mL");

// Reset the pulse counter so we can start incrementing again pulseCount = 0;

// Enable the interrupt again now that we've finished sending output attachInterrupt(sensorInterrupt, pulseCounter, FALLING); } }

/* Insterrupt Service Routine */ void pulseCounter() { // Increment the pulse counter pulseCount++; }