Help with air ride code....


fair warning first code have written. when load code on arduino , have running through lcd runs fine little bit, of sudden seems jumps out of loop , starts doing whatever wants. did miss in code. help/input great. thank in advance. haven't hooked wires arduino yet, lcd serial wires.



code: [select]


//read air pressure in air bags, 4 air pressure sensors on analog pins 0-3
//2 tank sensors connected analog pins 4,5
//air ride control unit attached digital pin 13-6
//2 push buttons connected digital pins 2,3 interrupt , clear display upper , lower tank
//2 push buttons connected digital pins 5,4 set ride heights
//uses moderndevice 20x4 lcd screen



const int psisensor1 = 0;    //set lf bag sensor input on analog port 0
const int psisensor2 = 1;    //set rf bag sensor input on analog port 1
const int psisensor3 = 2;    //set lr bag sensor input on analog port 2
const int psisensor4 = 3;    //set rr bag sensor input on analog port 3
const int tank1sensor = 4;   //set upper tank sensor input on analog port 4
const int tank2sensor = 5;   //set lower tank sensor input on analog port 5
int sensor1val = 0;          //set lf bag sensor 0 value
int sensor2val = 0;          //set rf bag sensor 0 value
int sensor3val = 0;          //set lr bag sensor 0 value
int sensor4val = 0;          //set rr bag sensor 0 value
int tank1val = 0;            //set upper tank sensor value 0
int tank2val = 0;            //set lower tank sensor value 0
int press1 = 0;              
int press2 = 0;
int press3 = 0;
int press4 = 0;
volatile int tank1pres = 0;    //set tank 1 pressure 0
volatile int tank2pres = 0;    //set tank 2 pressure 0
const int lfuppin = 13;        //lf bag fill solenoid digital pin 13
const int lfdownpin = 12;      //lf bag release solenoid digital pin 12
const int rfuppin = 11;        //rf bag fill solenoid digial pin 11
const int rfdownpin = 10;      //rf bag release solenoid digital pin 10
const int lruppin = 9;         //lr bag fill solenoid digital pin 9
const int lrdownpin = 8;       //lr bag release solenoid digital pin 8
const int rruppin = 7;         //rr bag fill solenoid digital pin 7
const int rrdownpin = 6;       //rr bag release solenoid digital pin 4
const int upbuttonpin = 5;     //push button put car @ highes level on digital pin 5
const int ridebuttonpin = 4;   //push button put car @ ride height on digital pin 4
int upbuttonstate = low;         // current state of output pin
int button1state;             // current reading input pin
int lastbutton1state = high;   // previous reading input pin
int ridebuttonstate = low;
int button2state;
int lastbutton2state = high;
long lastdebouncetime = 0;  
long debouncedelay = 50;  

void setup()

{
 serial.begin(9600);
 attachinterrupt(0, tank1, change);
 attachinterrupt(1, tank2, change);
 pinmode (lfuppin, output);
 pinmode (lfdownpin, output);
 pinmode (rfuppin, output);
 pinmode (rfdownpin, output);
 pinmode (lruppin, output);
 pinmode (lrdownpin, output);
 pinmode (rruppin, output);
 pinmode (rrdownpin, output);
 pinmode (upbuttonpin, input);
 pinmode (ridebuttonpin, input);  
 serial.print("?f");                //clear lcd per lcd117 command
 serial.print("?x05?y1rhodes caddy");     //print @ column 6, row 2
 serial.print("?x06?y31950 cadillac");     //print @ column 7, row 4
 delay (2000);
 serial.print("?f");                //clear lcd per lcd117 command
 serial.print("?x02?y0lf psi:");     // print @ column 4, row 1
 serial.print("?x12?y0rf psi:");     //print @ column 13, row 1
 serial.print("?x02?y2lr psi:");     //print @ column 4, row 3
 serial.print("?x12?y2rr psi:");     //print @ column 13, row 3


}
 
 void loop()
 {
   sensor1val = analogread(psisensor1);  //reads pressures in 4 bags
   sensor2val = analogread(psisensor2);
   sensor3val = analogread(psisensor3);
   sensor4val = analogread(psisensor4);
   press1 = ((sensor1val)*35.0877-9.4737);           //calculates pressure in bags voltage
   press2 = ((sensor2val)*35.0877-9.4737);
   press3 = ((sensor3val)*35.0877-9.4737);
   press4 = ((sensor4val)*35.0877-9.4737);
   serial.write(press1);
   serial.print("?x03?y1");
   serial.print(press1);
   serial.write(press2);
   serial.print("?x13?y1");
   serial.print(press2);
   serial.write(press3);
   serial.print("?x03?y3");
   serial.print(press3);
   serial.write(press4);
   serial.print("?x13?y3");
   serial.print(press4);
   delay(200);
   
   
   if (digitalread(upbuttonpin)== high)
   {
     if (press1 < 116);
     {
       delay(50);
       digitalwrite(lfuppin, high);
       if (press1 >115);
       {
         delay(50);
         digitalwrite(lfdownpin, high);
       }
     }
     if (press2 < 116);
     {
       delay(50);
       digitalwrite(rfuppin, high);
       if (press2 > 115);
       {
         delay(50);
         digitalwrite(rfdownpin, high);
       }
     }
     if (press3 < 116);
     {
       delay(50);
       digitalwrite (lruppin, high);
       if (press3 > 115);
       {
         delay(50);
         digitalwrite (lrdownpin, high);
       }
     }  
     if (press4 < 116);
     {
       delay(50);
       digitalwrite(rruppin, high);
       if (press4 > 115);
       {
         delay(50);
         digitalwrite(rrdownpin, high);
       }
     }
     return;
    }
   
    if (digitalread(ridebuttonpin) == high)
    {
      if (press1 < 80);
      {
        delay(50);
        digitalwrite (lfuppin, high);
        if (press1 > 80);
        {
          delay(50);
          digitalwrite (lfdownpin, high);
        }
      }
      if (press2 < 80);
      {
        delay(50);
        digitalwrite(rfuppin, high);
        if (press2 > 80);
       {
        delay(50);
        digitalwrite(rfdownpin, high);
       }
      }
      if (press3 < 80);
      {
        delay(50);
        digitalwrite(lruppin, high);
        if (press3 > 80);
        {
          delay(50);
          digitalwrite(lrdownpin, high);
        }
      }
      if (press4 < 80);
      {
        delay(50);
        digitalwrite(rruppin, high);
        if (press4 > 80);
        {
          delay(50);
          digitalwrite(rrdownpin, high);
        }
       }
   return;
  }
 
  int reading1 = digitalread(upbuttonpin);
  if (reading1 != lastbutton1state)
  {

    lastdebouncetime = millis();
  }

  if ((millis() - lastdebouncetime) > debouncedelay)
  {
    button1state = reading1;
  }

  digitalwrite(upbuttonpin, button1state);
  lastbutton1state = reading1;


  int reading2 = digitalread(ridebuttonpin);
  if (reading2 != lastbutton2state)
  {

    lastdebouncetime = millis();
  }

  if ((millis() - lastdebouncetime) > debouncedelay)
  {
    button2state = reading2;
  }

  digitalwrite(ridebuttonpin, button2state);
  lastbutton2state = reading2;


}


 
void tank1()                          //interrupt button on digital pin 2 show tank 1 pressure
{
 serial.print("?x5?y0");
 serial.print("upper tank psi:");
 tank1val = analogread(tank1sensor);
 tank1pres =((tank1val)*35.0877-9.4737);
 serial.print("?x08?y1");
 serial.write(tank1pres);
 serial.print(tank1pres);
}

void tank2()                         //interrupt button on digital pin 3 show tank 2 pressure
{
 serial.print("?x05?y2");
 serial.print("lower tank psi:");
 tank2val = analogread(tank2sensor);
 tank2pres =((tank2val)*35.0877-9.4737);
 serial.print("?x08?y3");
 serial.write(tank2pres);
 serial.print(tank2pres);
}


hi,

it not idea write seril port function loop , interrupt procedure. writing loop can interrupted serial print of interrupt function , strange things may happen! set global flag inside interrupt function , place printing in loop function this:

code: [select]

bool tank1_print, tank2_print;

void setup()

{
 serial.begin(9600);
 attachinterrupt(0, tank1, change);
 attachinterrupt(1, tank2, change);
 pinmode (lfuppin, output);
 pinmode (lfdownpin, output);
 pinmode (rfuppin, output);
 pinmode (rfdownpin, output);
 pinmode (lruppin, output);
 pinmode (lrdownpin, output);
 pinmode (rruppin, output);
 pinmode (rrdownpin, output);
 pinmode (upbuttonpin, input);
 pinmode (ridebuttonpin, input);
 serial.print("?f");                //clear lcd per lcd117 command
 serial.print("?x05?y1rhodes caddy");     //print @ column 6, row 2
 serial.print("?x06?y31950 cadillac");     //print @ column 7, row 4
 delay (2000);
 serial.print("?f");                //clear lcd per lcd117 command
 serial.print("?x02?y0lf psi:");     // print @ column 4, row 1
 serial.print("?x12?y0rf psi:");     //print @ column 13, row 1
 serial.print("?x02?y2lr psi:");     //print @ column 4, row 3
 serial.print("?x12?y2rr psi:");     //print @ column 13, row 3


}

 void loop()
 {
   sensor1val = analogread(psisensor1);  //reads pressures in 4 bags
   sensor2val = analogread(psisensor2);
   sensor3val = analogread(psisensor3);
   sensor4val = analogread(psisensor4);
   press1 = ((sensor1val)*35.0877-9.4737);           //calculates pressure in bags voltage
   press2 = ((sensor2val)*35.0877-9.4737);
   press3 = ((sensor3val)*35.0877-9.4737);
   press4 = ((sensor4val)*35.0877-9.4737);
   serial.write(press1);
   serial.print("?x03?y1");
   serial.print(press1);
   serial.write(press2);
   serial.print("?x13?y1");
   serial.print(press2);
   serial.write(press3);
   serial.print("?x03?y3");
   serial.print(press3);
   serial.write(press4);
   serial.print("?x13?y3");
   serial.print(press4);
   delay(200);
   if (tank1_print) {
     serial.print("?x5?y0");
     serial.print("upper tank psi:");
     tank1val = analogread(tank1sensor);
     tank1pres =((tank1val)*35.0877-9.4737);
     serial.print("?x08?y1");
     serial.write(tank1pres);
     serial.print(tank1pres);
     tank1_print = false:
   }

   if (tank2_print) {
     serial.print("?x05?y2");
     serial.print("lower tank psi:");
     tank2val = analogread(tank2sensor);
     tank2pres =((tank2val)*35.0877-9.4737);
     serial.print("?x08?y3");
     serial.write(tank2pres);
     serial.print(tank2pres);
     tank2_print = false;
   }

   if (digitalread(upbuttonpin)== high)
   {
     if (press1 < 116);
     {
       delay(50);
       digitalwrite(lfuppin, high);
       if (press1 >115);
       {
         delay(50);
         digitalwrite(lfdownpin, high);
       }
     }
     if (press2 < 116);
     {
       delay(50);
       digitalwrite(rfuppin, high);
       if (press2 > 115);
       {
         delay(50);
         digitalwrite(rfdownpin, high);
       }
     }
     if (press3 < 116);
     {
       delay(50);
       digitalwrite (lruppin, high);
       if (press3 > 115);
       {
         delay(50);
         digitalwrite (lrdownpin, high);
       }
     }
     if (press4 < 116);
     {
       delay(50);
       digitalwrite(rruppin, high);
       if (press4 > 115);
       {
         delay(50);
         digitalwrite(rrdownpin, high);
       }
     }
     return;
    }

    if (digitalread(ridebuttonpin) == high)
    {
      if (press1 < 80);
      {
        delay(50);
        digitalwrite (lfuppin, high);
        if (press1 > 80);
        {
          delay(50);
          digitalwrite (lfdownpin, high);
        }
      }
      if (press2 < 80);
      {
        delay(50);
        digitalwrite(rfuppin, high);
        if (press2 > 80);
       {
        delay(50);
        digitalwrite(rfdownpin, high);
       }
      }
      if (press3 < 80);
      {
        delay(50);
        digitalwrite(lruppin, high);
        if (press3 > 80);
        {
          delay(50);
          digitalwrite(lrdownpin, high);
        }
      }
      if (press4 < 80);
      {
        delay(50);
        digitalwrite(rruppin, high);
        if (press4 > 80);
        {
          delay(50);
          digitalwrite(rrdownpin, high);
        }
       }
   return;
  }

  int reading1 = digitalread(upbuttonpin);
  if (reading1 != lastbutton1state)
  {

    lastdebouncetime = millis();
  }

  if ((millis() - lastdebouncetime) > debouncedelay)
  {
    button1state = reading1;
  }

  digitalwrite(upbuttonpin, button1state);
  lastbutton1state = reading1;


  int reading2 = digitalread(ridebuttonpin);
  if (reading2 != lastbutton2state)
  {

    lastdebouncetime = millis();
  }

  if ((millis() - lastdebouncetime) > debouncedelay)
  {
    button2state = reading2;
  }

  digitalwrite(ridebuttonpin, button2state);
  lastbutton2state = reading2;


}



void tank1()                          //interrupt button on digital pin 2 show tank 1 pressure
{
 tank_print = true;
}

void tank2()                         //interrupt button on digital pin 3 show tank 2 pressure
{
 tank2_print = true;
}


mike


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Help with air ride code....


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums