Forum >Replies by Ferg.Colto
userhead Ferg.Colto
Replies (1)
  • You Reply:

    for reference, here is my code :

     

    #include "DFRobot_GP8403.h"

    DFRobot_GP8403 dac(&Wire,0x58);

    DFRobot_GP8403 dac2(&Wire,0x5F);

     


    int StateMachine = 0;


    // Interrupt Service Routine (ISR)

     

    void changeState ()

     {

     StateMachine++;

     if(StateMachine>4)

       {

         StateMachine=9;

       }

        Serial.print("Machine State = ");

        Serial.println(StateMachine);

     }

     


    void resetState ()

     {    

       Serial.println("reset");

     StateMachine=0;

     }

     

    void setup() {

     Serial.begin(115200);

     


     while(dac.begin()!=0){

       Serial.println("init error 1");

       delay(500);

      }

     


       while(dac2.begin()!=0){

       Serial.println("init error 2");

       delay(500);

      }

     


     Serial.println("init succeed");

     dac.setDACOutRange(dac.eOutputRange10V);//Set the output range as 0-10V

     dac2.setDACOutRange(dac2.eOutputRange10V);//Set the output range as 0-10V

     

     attachInterrupt(digitalPinToInterrupt(5), changeState, RISING);

     attachInterrupt(digitalPinToInterrupt(4), resetState, RISING);  

    }

     


    void loop(){

     

    switch (StateMachine) {

     case 1:

       dac.setDACOutVoltage(2000,0); // OUT0 channel 1

       dac.setDACOutVoltage(2000,1); // OUT1 channel 1

       dac2.setDACOutVoltage(2000,0); // OUT0 channel 2

       break;

     case 2:

       dac.setDACOutVoltage(4000,0); // OUT0 channel 1

       dac.setDACOutVoltage(4000,1); // OUT1 channel 1

       dac2.setDACOutVoltage(4000,0); // OUT0 channel 2

       break;

     

     default:

       dac.setDACOutVoltage(0,0); // OUT0 channel 1

       dac.setDACOutVoltage(0,1); // OUT1 channel 1

       dac2.setDACOutVoltage(0,0); // OUT0 channel 2

       break;

    }

     dac.store();

     dac2.store();

    }