Presentation is loading. Please wait.

Presentation is loading. Please wait.

로봇을 조종하자 3/4 UNIT 17 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 스마트 폰의 센서를 사용할 수 있다. 2.

Similar presentations


Presentation on theme: "로봇을 조종하자 3/4 UNIT 17 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 스마트 폰의 센서를 사용할 수 있다. 2."— Presentation transcript:

1 로봇을 조종하자 3/4 UNIT 17 로봇 SW 콘텐츠 교육원 조용수

2 학습 목표 스마트 폰의 센서를 사용할 수 있다. 2

3 가속도 센서 좌표축 3 x z y x z y

4 가속도 센서 4 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" />

5 가속도 센서 5 public class MainActivity extends Activity implements SensorEventListener { private TextView textView; private SensorManager sensorManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.text); sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST); } @Override protected void onDestroy() { super.onDestroy(); sensorManager.unregisterListener(this); }

6 가속도 센서 6 @Override public void onSensorChanged(SensorEvent event) { switch(event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: textView.setText(event.values[0] + ", " + event.values[1] + ", " + event.values[2]); break; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }

7 가속도 센서 7 public class MainActivity extends RobotActivity implements SensorEventListener { private TextView textView; private SensorManager sensorManager; private float[] accelerometer = new float[3]; private boolean touchDown; private Device leftWheelDevice; private Device rightWheelDevice; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.text); sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST); } @Override protected void onDestroy() { super.onDestroy(); sensorManager.unregisterListener(this); }

8 가속도 센서 8 @Override public void onInitialized(Robot robot) { super.onInitialized(robot); leftWheelDevice = robot.findDeviceById(Albert.EFFECTOR_LEFT_WHEEL); rightWheelDevice = robot.findDeviceById(Albert.EFFECTOR_RIGHT_WHEEL); } @Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: touchDown = true; break; case MotionEvent.ACTION_UP: touchDown = false; break; } return super.onTouchEvent(event); }

9 가속도 센서 9 @Override public void onSensorChanged(SensorEvent event) { switch(event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: accelerometer[0] = event.values[0]; accelerometer[1] = event.values[1]; accelerometer[2] = event.values[2]; textView.setText(event.values[0] + ", " + event.values[1] + ", " + event.values[2]); break; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }

10 가속도 센서 10 @Override public void onExecute() { if(touchDown == false) { leftWheelDevice.write(0); rightWheelDevice.write(0); return; } int h = (int)(accelerometer[1] * 24); if(h > 100) h = 100; else if(h < -100) h = -100; int v = (int)(accelerometer[0] * 24) - 127; if(v > 100) v = 100; else if(v < -100) v = -100; int leftWheel = -v / 2 + h / 2; int rightWheel = -v / 2 - h / 2; leftWheelDevice.write(leftWheel); rightWheelDevice.write(rightWheel); }

11 가속도 센서 11 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.unit14" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.unit14.MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" >

12 진동 12 public class MainActivity extends RobotActivity implements SensorEventListener { private TextView textView; private SensorManager sensorManager; private float[] accelerometer = new float[3]; private boolean touchDown; private Device leftWheelDevice; private Device rightWheelDevice; private Device leftProximityDevice; private Device rightProximityDevice; private Vibrator vibrator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.text); sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST); vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); }

13 진동 13 @Override public void onInitialized(Robot robot) { super.onInitialized(robot); leftWheelDevice = robot.findDeviceById(Albert.EFFECTOR_LEFT_WHEEL); rightWheelDevice = robot.findDeviceById(Albert.EFFECTOR_RIGHT_WHEEL); leftProximityDevice = robot.findDeviceById(Albert.SENSOR_LEFT_PROXIMITY); rightProximityDevice = robot.findDeviceById(Albert.SENSOR_RIGHT_PROXIMITY); }

14 진동 14 @Override public void onExecute() { if(touchDown == false) { leftWheelDevice.write(0); rightWheelDevice.write(0); return; } int h = (int)(accelerometer[1] * 24); if(h > 100) h = 100; else if(h < -100) h = -100; int v = (int)(accelerometer[0] * 24) - 127; if(v > 100) v = 100; else if(v < -100) v = -100; int leftWheel = -v / 2 + h / 2; int rightWheel = -v / 2 - h / 2; leftWheelDevice.write(leftWheel); rightWheelDevice.write(rightWheel); if(leftProximityDevice.read() > 50 || rightProximityDevice.read() > 50) vibrator.vibrate(50); }

15 진동 15 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.unit14" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.unit14.MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" >


Download ppt "로봇을 조종하자 3/4 UNIT 17 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 스마트 폰의 센서를 사용할 수 있다. 2."

Similar presentations


Ads by Google