工程筆記本 / Android

Android

[Android ADK + Arduino] Lesson2 控制LED漸明漸暗

CAVEDU 阿吉 - 雜工📅 2012-06-22👁 17
[Android ADK + Arduino] Lesson1 控制LED亮滅 本範例是[Beginning Android ADK with Arduino]一書中的Project 2. 透過Android畫面上的SeekBar滑桿 來控制Arduino板上的LED燈漸明漸暗。 您需要的硬體有: 1. Arduino MEGA ADK or 其他相容ADK板 2. Android手機或平板(2.3.3 or 3.1以上). 3. LED(5V). 電阻(220歐姆) x1, 線材一批.    Android端程式(部分) Android端程式的關鍵在於使用SeekBar物件的狀態監聽事件來 呼叫sendLedIntensityCommand()方法, 對TARGET_PIN_2 (LED正極腳位)寫入 params[0]). 我們將SeekBar分成256個等級來控制LED的明暗, 和上個範例是不一樣的效果唷. OnSeekBarChangeListener ledIntensityChangeListener = new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { ledIntensityTextView.setText("LED intensity: " + ledIntensitySeekBar.getProgress()); new AsyncTask () { @Override protected Void doInBackground(Byte... params) { sendLedIntensityCommand(TARGET_PIN_2, params[0]); return null; } }.execute((byte) progress); } //...其它省略 }; 在sendLedIntensityCommand()方法中則是使用mOutputStream.write()來控制LED漸明漸暗 . public void sendLedIntensityCommand(byte target, byte value) { byte[] buffer = new byte[3]; buffer[0] = COMMAND_LED; buffer[1] = target; buffer[2] = value; if (mOutputStream != null) { try { mOutputStream.write(buffer); } catch (IOException e) { Log.e(TAG, "write failed", e); } } } Arduino端程式 部分, 省略main 與Acc物件定義. Arduino端程式與上一個範例 差別在於使用analogWrite方法來控制LED, 而非digitalWrite. 請注意您所使用的PIN腳位必須支援PWM才可以唷. void loop() { if (acc.isConnected()) { //read the received data into the byte array int len = acc.read(rcvmsg, sizeof(rcvmsg), 1); if (len > 0) { if (rcvmsg[0] == COMMAND_LED) { if (rcvmsg[1] == TARGET_PIN_2){ //get the analog value byte value = rcvmsg[2]; //set output pin to according analog value           analogWrite(PIN, value); } } } } }

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。