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