Ok as promised here is to code I'm running though. Lemme know what you think I should do/change/etc... Thanks.
You will notice that several of the inputs are currently not implemented in the code, it is this way till I can debug the current code and will be enabled in final version just not necessary right now.
// this section names the input and output pins
const int vss = 48; //sets pin 48 to vss signal
unsigned int vssval; //declares vssval
const int ssa = 10; //sets pin 10 to ssa(shfit solenoid A
int ssast;
const int ssb = 11; //sets pin 11 to ssb)shift solenoid B
int ssbst;
const int tps = A0; //sets analog pin 0 to tps(throttle position sensor
unsigned int tpsval; //declares tpsval
const int epc = 12; //sets pin 12 to epc(electronic pressure sontrol solenoid
const int rev = 30; //sets pin 30 to reverse switch
const int drv = 32; //sets pin 32 to drive switch
const int thd = 34; //sets pin 34 to third switch
const int scd = 36; //sets in 36 to second switch
const int fst = 38; //sets pin 38 to first switch
const int tcc = 40; //sets pin 40 to tcc(torque converter clutch solenoid
void setup()
{
Serial.begin(9600);
pinMode(ssa, OUTPUT); // ssa-HIGH in first and fourth gears, LOW in second and third
pinMode(ssb, OUTPUT); // ssb_HIGH in first and second gears, LOW in third and fourth
pinMode(vss, INPUT); // vehivle speed sensor input
pinMode(epc, OUTPUT); //electronic pressure control solenoid control pin
pinMode(rev, INPUT); // reverse switch input-tells arduino transmission is in reverse range and raises line pressure
pinMode(drv, INPUT); // drive switch input-tells arduino trans is indrive range and allows for upshifting and downshifting
pinMode(thd, INPUT); // third switch input-used for manual shift mode
pinMode(scd, INPUT); // second switch input-used for manual shift mode
pinMode(fst, INPUT); // first switch input-used for manual shift mode
pinMode(tcc, OUTPUT); //applied only in fourth gear
}
void loop()
{
Serial.print("TPS % =");
Serial.println(tpsval / 10.23);
delay(175);
Serial.print("PPM/VSS = ");
Serial.println(vssval);
delay(175);
Serial.print("ssa = ");
Serial.println(ssast, HIGH);
vssval = pulseIn(vss, HIGH);
tpsval = analogRead(tps);
analogWrite(epc, tpsval / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, HIGH); //FIRST GEAR
}
// Upshift at 0-5% TPS
if (vssval >= 5700 && vssval <= 7100 && tpsval <= 50)
{
digitalWrite(ssa, LOW); //1-2 SHIFT
digitalWrite(ssb, HIGH);
}
if (vssval >= 11400 && vssval <= 12900 && tpsval <= 50)
{
digitalWrite(ssa, LOW); //2-3 SHIFT
digitalWrite(ssb, LOW);
}
if (vssval >= 27200 && tpsval >= 0 && tpsval <= 50)
{
digitalWrite(ssa, HIGH); //3-4 SHIFT
digitalWrite(ssb, LOW);
}
// Upshift at 5-10% TPS
//
{
digitalWrite(ssa, HIGH); //FIRST GEAR
digitalWrite(ssb, HIGH);
}
if (vssval >= 7100 && vssval <= 8600 && tpsval <= 100)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH); //1-2
}
if (vssval >= 12900 && vssval <= 14300 && tpsval <= 100)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW); // 2-3
}
if (vssval >= 28600 && tpsval >= 0 && tpsval <= 100)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
//Upshift at 10-15% TPS
//
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, HIGH);
}
if (vssval >= 8600 && vssval <= 10000 && tpsval <= 150)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 14300 && vssval <= 15700 && tpsval <= 150)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 30100 && tpsval >= 0 && tpsval <= 150)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 15-20% TPS
//
if (vssval >= 10000 && vssval <= 11400 && tpsval <= 200)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 15700 && vssval <= 17200 && tpsval <= 200)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 32900 && tpsval >= 151 && tpsval <= 200)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 20-25% TPS
//
if (vssval >= 11400 && vssval <= 17200 && tpsval <= 250)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 17200 && vssval <= 18600 && tpsval <= 250)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 34400 && tpsval >= 0 && tpsval <= 250)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 25-30% TPS
//
if (vssval >= 12900 && vssval <= 14300 && tpsval <= 300)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 18600 && vssval <= 20000 && tpsval <= 300)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 35800 && tpsval >= 0 && tpsval <= 300)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 30-35% TPS
//
if (vssval >= 14300 && vssval <= 15700 && tpsval <= 350)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 20000 && vssval <= 21500 && tpsval <= 350)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 37200 && tpsval >= 0 && tpsval <= 350)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 35-40% TPS
//
if (vssval >= 15700 && vssval <= 17200 && tpsval <= 400)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 21500 && vssval <= 22900 && tpsval <= 400)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 38700&& tpsval >= 0 && tpsval <= 400)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 40-45% TPS
//
if (vssval >= 17200 && vssval <= 18600 && tpsval <= 450)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 22900 && vssval <= 24300 && tpsval <= 450)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 40100 && tpsval >= 0 && tpsval <= 450)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Ushift at 45-50% TPS
//
if (vssval >= 18600 && vssval <= 20000 && tpsval <= 500)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 24300 && vssval <= 25800 && tpsval <= 500)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 41500 && tpsval >= 0 && tpsval <= 500)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 50-55% TPS
//
if (vssval >= 20000 && vssval <= 21500 && tpsval <= 550)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 27200 && vssval <= 28600 && tpsval <= 550)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 43000 && tpsval >= 0 && tpsval <= 550)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 55-60% TPS
//
if (vssval >= 21500 && vssval <= 22900 && tpsval <= 600)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 28600 && vssval <= 30100 && tpsval <= 600)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 44400 && tpsval >= 0 && tpsval <= 600)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
// Upshift at 60-65% TPS
//
if (vssval >= 22900 && vssval <= 24300 && tpsval <= 650)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, HIGH);
}
if (vssval >= 30100 && vssval <= 31500 && tpsval <= 650)
{
digitalWrite(ssa, LOW);
digitalWrite(ssb, LOW);
}
if (vssval >= 45800 && tpsval >= 0 && tpsval <= 650)
{
digitalWrite(ssa, HIGH);
digitalWrite(ssb, LOW);
}
}
Bill