Pages: [1]   Go Down
Author Topic: Functions  (Read 585 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi.  I am trying to work around the inability of the Arduino to handle floating point reads/writes.  The following code gets a diagnostic of :
     R cannot be used as a function.
code is:
int R(2);

long Vout = 0;
int Int1 = 0;
int Rnum = 0;
int Temp = 0;


 R(Rnum)=(R(Rnum) * 10)+Temp;   //shift left & add new char

I'm new to C+ but it seems to me that these are just subscripted variables.  

What gives?

Thank you for your help.          
Zach
Logged

Forum Administrator
Cambridge, MA
Offline Offline
Faraday Member
*****
Karma: 12
Posts: 3538
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Can you post your whole sketch?  

The R(2) syntax means that you are calling the function called R, and passing it the argument 2.  What are you trying to do?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This routine is to calculate the resulting voltage for an LM350T when the two resistor values are given.  The R() is not a function, but the representative values of the resistors in a 2 cel vector (array).  

Since arrays are permitted, I am convused.  Thank you for your time and help.

Zach

int R(2);
int Rnum = 0;
int Temp = 0;
long Vout = 0;

void getRes ()
   {
    for(Rnum = 0;Rnum<2;Rnum++);  //Gets two resistor values
       {
        Serial.print("R");
        Serial.print(Rnum,DEC);
        Serial.print("= ");        //Request resistor #'Rnum' Value
        while (Serial.available () == 0)
           {
            delay (2000);
           }              

        while(Serial.available() > 0)
           {
            Temp=Serial.read();//Get next character          
            R(Rnum)=(R(Rnum) * 10)+Temp;//shift left & add new char
           }
       }
    Serial.flush ();
   }

void CalcVoltage ()
   {
    Vout = (1.25 * (1+R(2)/R(1))+R(2)*)100; // *100 keeps the 1st 2 deci places when
                                            // converting to integer.      
   }

void DisplayVolts ()
   {
    Serial.print("Vout= ");
    Serial.println(Vout,DEC);
   }

void setup ()
   {
    Serial.begin(9600);
   }
  
void loop ()
   {
    getRes ();
    CalcVoltage ();
    DisplayVolts ();
   }            
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Well, as usual, I am the problem..  thanks for you time.  The problem is that being new to C+ I wasn't subscripting with square brackets [], and so the system expected functions.  Naturally.  egg on face.

Oh well, thank you again.
Logged

Pages: [1]   Go Up
Jump to: