Having trouble with my attachInterrupt not working
hoping can newbie out here. having problems attachinterrupt button. when connect digital pins #2 , #3 5v , run button ground clear out 0v low nothing happening on lcd. "regular" code keeps on running no interruption. more newbie status me me out.
thank in advance!!!
thank in advance!!!
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 6
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;
boolean tank1_print, tank2_print;
void setup()
{
serial.begin(9600);
attachinterrupt(0, tank1, low);
attachinterrupt(1, tank2, low);
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("?x03?y0rhodes caddy");
serial.print("?x03?y11950 cadillac");
serial.print("?x00?y3custom built andy");
delay (5000);
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
press1 = (sensor1val*35.0877-9.4737);
sensor2val = analogread(psisensor2);
press2 = (sensor2val*35.0877-9.4737);
sensor3val = analogread(psisensor3);
press3 = (sensor3val*35.0877-9.4737);
sensor4val = analogread(psisensor4);
press4 = (sensor4val*35.0877-9.4737);
serial.print("?x03?y1");
serial.print(press1);
serial.print("?x13?y1");
serial.print(press2);
serial.print("?x03?y3");
serial.print(press3);
serial.print("?x13?y3");
serial.print(press4);
delay(350);
if (tank1_print)
{
serial.print("?x05?y0");
serial.print("upper tank psi:");
tank1val = analogread(tank1sensor);
tank1pres =(tank1val*35.0877-9.4737);
serial.print("?x08?y1");
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.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
{
tank1_print = true;
}
void tank2() //interrupt button on digital pin 3 show tank 2 pressure
{
tank2_print = true;
}
quote
when connect digital pins #2 , #3 5v , run button ground clear out 0v low nothing happening on lcd
by "connecting pins 2 & 3 5v" mean way of external pull-up resistors? if not , wiring pins straight +5vdc , shorting ground switches, i'm sure cause power dip such chip reset , start again.
you need either use external pull-up resistors or using pinmode command turn on internal pull-ups pins 2 & 3.
lefty
Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Having trouble with my attachInterrupt not working
arduino
Comments
Post a Comment