2

I am new with coding, and I was wondering how I could run something once and define it as a constant. Here is my code:

int sensorValue1 = analogRead(A0);  
int sensorValue2 = analogRead(A1);  
int g0 = 9.81*9.8;  
int h1 = 48;  
int R = 287.06;  
int a = -0.0065;  

void setup() {   
    Serial.begin(9600);  
    int p1 = (1.09512*sensorValue2-22.105)*133.3225;  
    int t1 = (-0.08126*sensorValue1+65.6597)*274.15;  
}

void loop() {
    String t = "Temperature:    ";  
    String tt = " Celsius";  
    String p = "Preassure:    ";  
    String pp = " Pascal";
    float celsius = -0.08126*sensorValue1+65.6597;     
    float kelvin = celsius*274.15;
    float pascal = (1.09512*sensorValue2-22.105)*133.3225;  
    float height = (t1/a)*((pascal/p1)^((a*R)/g0))-1)+h1;  
    Serial.println(t+celsius+tt);  
    Serial.println(p+pascal+pp);  
    Serial.println(kelvin);  
    Serial.println( );  
    Serial.println(height);  
    delay(1000);  
}
1
  • What do you need to run something once? Put in inside "setup" method (it gets executed once the Arduino powers up or gets reset) Commented Nov 19, 2015 at 14:53

2 Answers 2

6

You can't, and there's other things wrong with your code.

int sensorValue1 = analogRead(A0);  
int sensorValue2 = analogRead(A1);  

Calling functions from the global scope is an incredibly bad idea. Those are run before the board has been properly initialized, and the results you may get from it are not guaranteed in any way, shape, or form. Instead you must call functions like analogRead() from within another function, like setup(), or loop().

As for const - a const is just that - a constant value that can never change. You can only assign a value to it at the moment of creation.

And that means that you can only use it within the scope it was defined within. As you can't do that in the global scope (see above) then you cannot use a constant.

So just use a normal global variable. It will only change when you tell it to change. Using a const only makes sense when you have a numeric literal that you want to refer to by name. Using const doesn't protect the variable from being changed at run-time by memory leaks, etc, it just protects it from attempts to modify it at compile time - and if possible replace it with the numeric literal that it refers to.

So in summary just use:

int sensorValue1;
int sensorValue2;
int p1;
int t1;

void setup() {
    sensorValue1 = analogRead(A0);
    sensorValue2 = analogRead(A1);
    p1 = (1.09512*sensorValue2-22.105)*133.3225;
    t1 = (-0.08126*sensorValue1+65.6597)*274.15;
}
... etc ...

HOWEVER: Your program methodology is also completely flawed. You read the analog values once, and do calculations with them once, then repeatedly display the same values over and over again.

You must perform a new analogRead() of your sensors every iteration of loop() in order to update the values in your variables.

1

You can define Constants using the "const" keyword. Ex:

    const float pi = 3.14;
    const int foo = 12;

https://www.arduino.cc/en/Reference/Const

1
  • However scope rules mean that variables declared in setup() won't be visible in loop() – to make them visible declare them outside of any function. Commented Nov 21, 2015 at 5:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.