I am working on a test bench code. I want to display "Enter PSI"... I then do calculations and store the calculated values to compare to the actual reading I am getting. I am running into an issue where I can input my PSI... it will do the calculations and compare to the real value...but it never resets. I can re-enter a value and it shows the new calculated values, but never sends out the pulse to get a new reading. I guess I am having a problem looping the program to restart so I can test another board.
I can tell it is not outputting a new pulse because I am viewing the outputs with my oscilloscope.
Any help is much appreciated. My code is below.
#include <math.h>
double INPUT_PSI;
double V_OUT_CALC;
double V_OUT_CALC_2;
//float HALF = 1/2;
double DAC_READING;
double EXPECTED_ANALOG;
double EXPECTED_ANALOG_PLUS;
double EXPECTED_ANALOG_MINUS;
int ADC_OUT;
boolean VALUE_ENTERED = false;
String readString;
int Signal = 7;
void setup ()
{
Serial.begin(9600);
pinMode(Signal, OUTPUT);
pinMode(A0, INPUT);
Serial.println("Please enter PSI reading");
}
void loop ()
{
// Serial.println("Please enter PSI reading");
while (Serial.available())
{
// Serial.println("Please enter PSI reading");
char p = Serial.read();
readString += p;
delay (2);
// if (readString+=p == 'n/')
// {
// VALUE_ENTERED = true;
// continue;
// }
}
if (readString.length () >0)
{
INPUT_PSI = readString.toInt ();
V_OUT_CALC = (INPUT_PSI * .02)+.5;
Serial.println ("V OUT:");
Serial.println (V_OUT_CALC);
Serial.println(" ");
// Serial.println(INPUT_PSI);
DAC_READING = (.003 * ((V_OUT_CALC/5)*1023)-.306);
Serial.println ("DAC_READING:");
Serial.println (DAC_READING);
Serial.println(" ");
EXPECTED_ANALOG = ((DAC_READING+.306)/.003);
Serial.println("EXPECTED_ANALOG:");
Serial.println(EXPECTED_ANALOG);
Serial.println(" ");
EXPECTED_ANALOG_PLUS = (EXPECTED_ANALOG *1.01);
Serial.println("EXPECTED_ANALOG_PLUS:");
Serial.println(EXPECTED_ANALOG_PLUS);
Serial.println(" ");
EXPECTED_ANALOG_MINUS = (EXPECTED_ANALOG *.99);
Serial.println("EXPECTED_ANALOG_MINUS:");
Serial.println(EXPECTED_ANALOG_MINUS);
Serial.println(" ");
delay(200);
digitalWrite(Signal, HIGH);
delay(20);
ADC_OUT = analogRead(A0);
Serial.println("ADC_OUT:");
Serial.println(ADC_OUT);
Serial.println(" ");
if (ADC_OUT >= EXPECTED_ANALOG_MINUS && ADC_OUT <= EXPECTED_ANALOG_PLUS)
{
Serial.println ("PASS");
}
else
{
Serial.println("FAIL");
}
digitalWrite(Signal, LOW);
INPUT_PSI = 0;
V_OUT_CALC = 0;
readString="";
DAC_READING = 0;
EXPECTED_ANALOG = 0;
EXPECTED_ANALOG_PLUS = 0;
EXPECTED_ANALOG_MINUS = 0;
ADC_OUT;
}
//return;
}