vendredi 17 juin 2016

Hooking a Regular Button up to IOIO Instead of a Toggle Button

The AS Hello IOIO Master comes with a default toggle button to control the on board led. I'm curious how I could switch this to a regular button, so the light is on while i hold it down and is then shut off when released. As of now I have a button that updates text on the screen. It looks like this:

public void buttonOnClick(View v) {
    counter.setText("Sequence count: " + count);
}

So I understand how to declare the button and all of that, but how do I get it to interact with the ioio board? Must it be inside the loop?

public class MainActivity extends IOIOActivity {
    private ToggleButton button_;
    private ToggleButton button_2;
    private ToggleButton button_3;
    private ToggleButton button_4;
    private ToggleButton button_5;
    private ToggleButton button_7;
    private ToggleButton button_8;
    private EditText delay;
    private EditText delay2;
    private EditText delay3;
    private EditText delay4;
    private EditText delay5;
    private EditText delay6;
    private TextView counter;
    private int count = 0;

    public void buttonOnClick(View v) {
        counter.setText("Sequence count: " + count);
    }

    public void resetButtonOnClick(View v) {
        count = 0;
        counter.setText("Sequence count: " + count);
    }

    /**
     * Called when the activity is first created. Here we normally initialize
     * our GUI.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button_ = (ToggleButton) findViewById(R.id.button);
        button_2 = (ToggleButton) findViewById(R.id.button2);
        button_3 = (ToggleButton) findViewById(R.id.button3);
        button_4 = (ToggleButton) findViewById(R.id.button4);
        button_5 = (ToggleButton) findViewById(R.id.button5);
        button_7 = (ToggleButton) findViewById(R.id.button7);
        button_8 = (ToggleButton) findViewById(R.id.button8);
        delay = (EditText) findViewById(R.id.editText);
        delay2 = (EditText) findViewById(R.id.editText2);
        delay3 = (EditText) findViewById(R.id.editText3);
        delay4 = (EditText) findViewById(R.id.editText4);
        delay5 = (EditText) findViewById(R.id.editText5);
        delay6 = (EditText) findViewById(R.id.editText6);
        counter = (TextView) findViewById(R.id.textView);
    }

    /**
     * This is the thread on which all the IOIO activity happens. It will be run
     * every time the application is resumed and aborted when it is paused. The
     * method setup() will be called right after a connection with the IOIO has
     * been established (which might happen several times!). Then, loop() will
     * be called repetitively until the IOIO gets disconnected.
     */
    class Looper extends BaseIOIOLooper {
        /**
         * The on-board LED.
         */
        private DigitalOutput led_;
        private DigitalOutput led_2;
        private DigitalOutput led_3;
        private DigitalOutput solenoid;
        private DigitalInput read;

        /**
         * Called every time a connection with IOIO has been established.
         * Typically used to open pins.
         *
         * @throws ConnectionLostException When IOIO connection is lost.
         * @see ioio.lib.util.IOIOLooper#setup()
         */
        @Override
        protected void setup() throws ConnectionLostException {
            showVersions(ioio_, "IOIO connected!");
            led_ = ioio_.openDigitalOutput(14, false);
            led_2 = ioio_.openDigitalOutput(45, false);
            led_3 = ioio_.openDigitalOutput(46, false);
            solenoid = ioio_.openDigitalOutput(18, false);
            read = ioio_.openDigitalInput(34, DigitalInput.Spec.Mode.PULL_DOWN);
            enableUi(true);
        }

        /**
         * Called repetitively while the IOIO is connected.
         *
         * @throws ConnectionLostException When IOIO connection is lost.
         * @throws InterruptedException    When the IOIO thread has been interrupted.
         * @see IOIOLooper#loop()
         */
        @Override
        public void loop() throws ConnectionLostException, InterruptedException {
            int a;
            if (button_.isChecked()) {
                a = 100 * Integer.parseInt(delay.getText().toString());
                led_.write(true);
                Thread.sleep(a);
                led_.write(false);
                //button_.setChecked(false);
            }
            int b;
            if (button_2.isChecked()) {
                b = 100 * Integer.parseInt(delay2.getText().toString());
                led_2.write(true);
                Thread.sleep(b);
                led_2.write(false);
                //button_2.setChecked(false);
            }
            int c;
            if (button_3.isChecked()) {
                c = 100 * Integer.parseInt(delay3.getText().toString());
                led_3.write(true);
                Thread.sleep(c);
                led_3.write(false);
                //button_3.setChecked(false);
            }
            int d;
            int e;
            int f;
            if (button_4.isChecked()) {
                a = 100 * Integer.parseInt(delay.getText().toString());
                b = 100 * Integer.parseInt(delay2.getText().toString());
                c = 100 * Integer.parseInt(delay3.getText().toString());
                d = 100 * Integer.parseInt(delay4.getText().toString());
                e = 100 * Integer.parseInt(delay5.getText().toString());
                f = 100 * Integer.parseInt(delay6.getText().toString());
                led_.write(true);
                Thread.sleep(a);
                led_.write(false);
                Thread.sleep(e);
                led_2.write(true);
                Thread.sleep(b);
                led_2.write(false);
                Thread.sleep(f);
                led_3.write(true);
                Thread.sleep(c);
                led_3.write(false);
                Thread.sleep(d);
                count = count + 1;
                //button_4.setChecked(false);
            }
            if (button_5.isChecked()) {
                if (!button_7.isChecked()) {
                    if (read.read()) {
                        a = 100 * Integer.parseInt(delay.getText().toString());
                        b = 100 * Integer.parseInt(delay2.getText().toString());
                        c = 100 * Integer.parseInt(delay3.getText().toString());
                        d = 100 * Integer.parseInt(delay4.getText().toString());
                        e = 100 * Integer.parseInt(delay5.getText().toString());
                        f = 100 * Integer.parseInt(delay6.getText().toString());
                        led_.write(true);
                        Thread.sleep(a);
                        led_.write(false);
                        Thread.sleep(e);
                        led_2.write(true);
                        Thread.sleep(b);
                        led_2.write(false);
                        Thread.sleep(f);
                        led_3.write(true);
                        Thread.sleep(c);
                        led_3.write(false);
                        solenoid.write(true);
                        Thread.sleep(500);
                        solenoid.write(false);
                        Thread.sleep(d);
                        count = count + 1;
                        //button_5.setChecked(false);
                    }
                } else {
                    a = 100 * Integer.parseInt(delay.getText().toString());
                    b = 100 * Integer.parseInt(delay2.getText().toString());
                    c = 100 * Integer.parseInt(delay3.getText().toString());
                    d = 100 * Integer.parseInt(delay4.getText().toString());
                    e = 100 * Integer.parseInt(delay5.getText().toString());
                    f = 100 * Integer.parseInt(delay6.getText().toString());
                    led_.write(true);
                    Thread.sleep(a);
                    led_.write(false);
                    Thread.sleep(e);
                    led_2.write(true);
                    Thread.sleep(b);
                    led_2.write(false);
                    Thread.sleep(f);
                    led_3.write(true);
                    Thread.sleep(c);
                    led_3.write(false);
                    solenoid.write(true);
                    Thread.sleep(500);
                    solenoid.write(false);
                    Thread.sleep(d);
                    count = count + 1;
                    //button_5.setChecked(false);
                }
            }
            if (button_8.isChecked()) {
                solenoid.write(true);
            } else {
                solenoid.write(false);
            }
            Thread.sleep(100);
        }

This is the relevant part of my code. Essentially I would like to switch button_1, button_2, and button_3 to regular buttons that turn an output on while held down. Any information is appreciated, thanks!

Aucun commentaire:

Enregistrer un commentaire