//upwards voltage ramp from 40V to 68.8V, takes approx 60 seconds to reach //03 10 15 Jdevine #include const int slaveAPin = 52; void setup() { pinMode (slaveAPin, OUTPUT); digitalWrite(slaveAPin, LOW); SPI.begin(); ramp(0x69); } void loop() { Serial.print("Looper"); stepset(0x60); Serial.print("up"); stepset(0x70); Serial.print("down"); } void ramp(int target) { //wait 100ms before ramp up int currentval=0xFF; int difference = currentval - target; for(int i = 0; i < difference; i++) { digitalWrite(slaveAPin, LOW); SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); //digitalWrite(slaveAPin, LOW); delay(200); SPI.transfer(currentval); delay(200); //digitalWrite(slaveAPin, HIGH); SPI.endTransaction(); digitalWrite(slaveAPin, HIGH); currentval = currentval -1; } } void stepset(int target) { digitalWrite(slaveAPin, LOW); SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); //digitalWrite(slaveAPin, LOW); delay(300); SPI.transfer(target); delay(300); //digitalWrite(slaveAPin, HIGH); SPI.endTransaction(); digitalWrite(slaveAPin, HIGH); }