package com.blindvision.main; import ioio.lib.api.DigitalOutput; import ioio.lib.api.PulseInput; import ioio.lib.api.PulseInput.PulseMode; import ioio.lib.api.exception.ConnectionLostException; import ioio.lib.util.AbstractIOIOActivity; import android.os.Bundle; import android.os.Vibrator; import android.util.Log; public class IOIOUltrasonicSensorActivity extends AbstractIOIOActivity { /* ultrasonic sensor */ private int echoSeconds1,echoSeconds2,echoSeconds3; private int echoDistanceCm1, echoDistanceCm2, echoDistanceCm3; Vibrator v; /** * Called upon creation for initialization */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); v = (Vibrator) getSystemService(this.VIBRATOR_SERVICE); System.out.println("Inside US activity"); /* ultrasonic sensor */ } @Override public void onDestroy() { super.onDestroy(); v.cancel(); } /** * Primary thread...runs until interrupted */ class IOIOThread extends AbstractIOIOActivity.IOIOThread { private DigitalOutput triggerPin1_; private PulseInput echoPin1_; private DigitalOutput triggerPin2_; private PulseInput echoPin2_; private DigitalOutput triggerPin3_; private PulseInput echoPin3_; @SuppressWarnings("deprecation") public void setup() throws ConnectionLostException { try { echoPin1_ = ioio_.openPulseInput(5, PulseMode.POSITIVE); triggerPin1_ = ioio_.openDigitalOutput(7); echoPin2_ = ioio_.openPulseInput(9, PulseMode.POSITIVE); triggerPin2_ = ioio_.openDigitalOutput(11); echoPin3_ = ioio_.openPulseInput(13, PulseMode.POSITIVE); triggerPin3_ = ioio_.openDigitalOutput(15); Log.v("Blind Vision", "inside setup"); } catch (ConnectionLostException e) { throw e; } } public void loop() throws ConnectionLostException { try { System.out.println("Inside Loop"); /*triggerPin1_.write(false); sleep(5); triggerPin1_.write(true); sleep(1); triggerPin1_.write(false); echoSeconds1 = (int) (echoPin1_.getDuration() * 1000 * 1000); echoDistanceCm1 = echoSeconds1 / 29 / 2; checkDistance(); sleep(20); triggerPin2_.write(false); sleep(5); triggerPin2_.write(true); sleep(1); triggerPin2_.write(false); echoSeconds2 = (int) (echoPin2_.getDuration() * 1000 * 1000); echoDistanceCm2 = echoSeconds2 / 29 / 2; checkDistance(); sleep(20); */triggerPin3_.write(false); sleep(5); triggerPin3_.write(true); sleep(1); triggerPin3_.write(false); echoSeconds3 = (int) (echoPin3_.getDuration() * 1000 * 1000); echoDistanceCm3 = echoSeconds3 / 29 / 2; checkDistance(); sleep(20); Log.v("Blind Vision", echoDistanceCm1 + ", " + echoDistanceCm2 + ", " + echoDistanceCm3); sleep(1000); } catch (InterruptedException e) { ioio_.disconnect(); } catch (ConnectionLostException e) { throw e; } } } @SuppressWarnings("deprecation") @Override protected AbstractIOIOActivity.IOIOThread createIOIOThread() { return new IOIOThread(); } private void checkDistance() { runOnUiThread(new Runnable() { @Override public void run() { Log.v("Blind Vision", echoDistanceCm1 + ", " + echoDistanceCm2 + ", " + echoDistanceCm3); if(echoDistanceCm1<50) { v.vibrate(new long[]{0, 200, 200}, -1); } else if(echoDistanceCm2<50) { v.vibrate(new long[]{0, 1000, 0}, 0); } else if(echoDistanceCm3<50) { v.vibrate(new long[]{0, 300, 100, 100, 300}, -1); } else { v.cancel(); } } }); } }