91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Android應用程序控制arduino IO引腳

454398 ? 來源:網(wǎng)絡整理 ? 作者:佚名 ? 2019-11-06 17:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:部件

對于這個instructables你需要幾個部分。

一個arduino

一個Android智能手機或平板電腦(我正在使用android 5.0.1)

以太網(wǎng)屏蔽

3 Led

3 220歐姆電阻

一些跳線

a breadboard

安裝了android studio的計算機

步驟2:以太網(wǎng)盾

我從gearbest.com獲得了這個以太網(wǎng)屏蔽。

它立即在我的arduino mega(也來自gearbest.com)上工作

在屏蔽上你有2個SPI設備。 SD卡讀卡器和用于以太網(wǎng)的W5100 IC。

在這個instructables中,我們只使用以太網(wǎng)部件。

步驟3:架構

我們需要將3個led連接到arduino。您可以使用除引腳0,1,10到13和50到53之外的每個引腳。

我使用的是引腳22,引腳23和引腳24.

您還需要將arduino連接到你的本地網(wǎng)絡。不需要互聯(lián)網(wǎng)。

第4步:Arduino草圖

對于arduino草圖,我從示例網(wǎng)絡服務器草圖開始。

我嘗試記錄每一件事,但如果你有問題可以隨意提問!

#include

#include

// Set the MAC address

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

// Set the IP address

IPAddress ip(192, 168, 1, 177);

// Start a server at port 80 (http)

EthernetServer server(80);

void setup() {

// Open serial communications

Serial.begin(9600);

// start the Ethernet connection and the server

Ethernet.begin(mac, ip);

server.begin();

// Pin 22 - 24 output (leds)

pinMode(22, OUTPUT);

pinMode(23, OUTPUT);

pinMode(24, OUTPUT);

}

void loop() {

// Check if client connected

EthernetClient client = server.available();

if (client) { // If there is a client.。.

boolean currentLineIsBlank = true;

String buffer = “”; // A buffer for the GET request

while (client.connected()) {

if (client.available()) {

char c = client.read();// Read the data of the client

buffer += c; // Store the data in a buffer

if (c == ‘ ’ && currentLineIsBlank) {// if 2x new line ==》 Request ended

// send a standard http response header

client.println(“HTTP/1.1 200 OK”);

client.println(“Content-Type: text/html”);

client.println(“Connection: close”);

client.println(); // Blank line ==》 end response

break;

}

if (c == ‘ ’) { // if New line

currentLineIsBlank = true;

buffer = “”; // Clear buffer

} else if (c == ‘ ’) { // If cariage return.。.

//Read in the buffer if there was send “GET /?。..”

if(buffer.indexOf(“GET /?led1=1”)》=0) { // If led1 = 1

digitalWrite(24, HIGH); // led 1 》 on

}

if(buffer.indexOf(“GET /?led1=0”)》=0) { // If led1 = 0

digitalWrite(24, LOW); // led 1 》 off

}

if(buffer.indexOf(“GET /?led2=1”)》=0) { // If led2 = 1

digitalWrite(22, HIGH); // led 2 》 on

}

if(buffer.indexOf(“GET /?led2=0”)》=0) { // If led2 = 0

digitalWrite(22, LOW); // led 2 》 off

}

if(buffer.indexOf(“GET /?led3=1”)》=0) { // If led3 = 1

digitalWrite(23, HIGH); // led 3 》 on

}

if(buffer.indexOf(“GET /?led3=0”)》=0) { // If led3 = 0

digitalWrite(23, LOW); // led 3 》 off

}

} else {

currentLineIsBlank = false;

}

}

}

delay(1);

client.stop();

}

}

那是arduino上的代碼。

很簡單,對吧?讓我們?nèi)タ纯磻贸绦虬桑?/p>

第5步:應用程序布局

為了創(chuàng)建一個android工作室項目我會在這里重定向你。開頭是相同的,選擇一個名稱并創(chuàng)建主要活動,但在刪除“hello world” textview后,您需要添加任意類型的3個按鈕。我正在使用開關,切換按鈕和普通按鈕,但您可以選擇最喜歡的。

注意:

如果出現(xiàn)渲染錯誤,請在窗口頂部將 Apptheme 更改為 Appcompat.NoActionBar

!注意!

正常按鈕只會在按下時點亮它的LED。釋放按鈕后led將熄滅。

在 res/values/styles.xml 中,您需要將父級更改為:“Theme.Appcompat.NoActionBar”

好的,現(xiàn)在我們可以開始編寫應用程序了!

第6步:應用程序編碼

為了對應用進行編碼,我讓您更輕松。您需要將此代碼復制到 MainActivity.java ,并將包 laurens_wuyts.arduinoiocontrol 更改為 company.appname 。

package laurens_wuyts.arduinoiocontrol;

import android.app.Activity;

import android.os.AsyncTask;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

import android.widget.CompoundButton;

import android.widget.Switch;

import android.widget.ToggleButton;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class MainActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

/*****************************************************/

/* This is a background process for connecting */

/* to the arduino server and sending */

/* the GET request withe the added data */

/*****************************************************/

private class Background_get extends AsyncTask {

@Override

protected String doInBackground(String.。. params) {

try {

/*********************************************************/

/* Change the IP to the IP you set in the arduino sketch */

/*********************************************************/

URL url = new URL(“http://192.168.1.177/?” + params[0]);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

StringBuilder result = new StringBuilder();

String inputLine;

while ((inputLine = in.readLine()) != null)

result.append(inputLine).append(“ ”);

in.close();

connection.disconnect();

return result.toString();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

}

}

在此代碼中,您只需要將IP更改為arduino的IP。

要檢查按鈕,您需要做兩件事:

定義按鈕

為每個按鈕添加onclick/onchange監(jiān)聽器。

定義按鈕:

/* For a switch */

Switch led1 = (Switch) findViewById(R.id.Led1);

/* For a toggle button */

ToggleButton led2 = (ToggleButton) findViewById(R.id.Led2);

/* For a normal button */

Button led3 = (Button) findViewById(R.id.Led3);

添加onclick/onchange:

將onclick/onchange偵聽器放在onCreate函數(shù)中。

/* For a switch you‘ll need an “OnCheckedChangeListener” like this */

led1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked) {

/* Switch is led 1 */

new Background_get().execute(“l(fā)ed1=1”);

} else {

new Background_get().execute(“l(fā)ed1=0”);

}

}

});

/* For a toggle button you also need a “OnCheckedChangeListener” */

led2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked) {

/* Toggle button is led 2 */

new Background_get().execute(“l(fā)ed2=1”);

} else {

new Background_get().execute(“l(fā)ed2=0”);

}

}

});

/* For a button you’ll need a “OnTouchListener” */

led3.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

/* button is led 3 */

new Background_get().execute(“l(fā)ed3=1”);

} else if (event.getAction() == MotionEvent.ACTION_UP) {

new Background_get().execute(“l(fā)ed3=0”);

}

return true;

}

});

這就是所有編碼這需要做!現(xiàn)在我們需要為您的應用添加權限。

步驟7:向您的應用添加權限

讓您的應用運行你需要賦予它權限。我們只需要1個權限:上網(wǎng)。要獲得此權限,您需要打開清單文件并添加:

步驟8:恢復

在這個教程中,我向您展示了如何通過網(wǎng)絡從Android手機控制arduino IO引腳。

我還為想要使用它的人提供了完整的應用程序目錄。

責任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    4031

    瀏覽量

    134131
  • Arduino
    +關注

    關注

    190

    文章

    6526

    瀏覽量

    197060
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    USBISP/USBasp編程器給Atmega32U4下載Arduino bootloader引導程序

    對于新出廠的ATmega32U4芯片內(nèi)部是沒有arduino引導程序的,需要用戶預先下載bootloader后才能用串口下載自己的應用程序.在某些罕見情況下舊的bootloader會導致一些bug
    的頭像 發(fā)表于 01-31 14:38 ?716次閱讀
    USBISP/USBasp編程器給Atmega32U4下載<b class='flag-5'>Arduino</b> bootloader引導<b class='flag-5'>程序</b>

    睿遠研究院丨IO-Link規(guī)范解讀(十二):SM模塊與CM模塊解析

    Manager,負責協(xié)調(diào)主站的各個應用程序模塊,并根據(jù)端口狀態(tài)啟動或停止其他應用程序。 1 System Manager模塊 System Manager 模塊作為IO-Link最核心的模塊,承上啟下,把從最底層
    的頭像 發(fā)表于 12-04 18:27 ?5292次閱讀
    睿遠研究院丨<b class='flag-5'>IO</b>-Link規(guī)范解讀(十二):SM模塊與CM模塊解析

    將JTAG引腳用作普通IO

    將JTAG引腳用作普通IO時,需要通過復用功能重映射來釋放調(diào)試接口占用的引腳資源。 void JTAG_To_GPIO_Config(void) { // 關閉JTAG功能(保留SWD調(diào)試接口
    發(fā)表于 11-13 06:39

    學生適合使用的SOLIDWORKS 云應用程序

    隨著科技的不斷發(fā)展,計算機輔助設計(CAD)技術已經(jīng)成為現(xiàn)代工程教育的重要組成部分。SOLIDWORKS作為一款CAD軟件,其教育版云應用程序為學生提供了強大而靈活的設計平臺。本文將探討
    的頭像 發(fā)表于 09-15 10:39 ?817次閱讀
    學生適合使用的SOLIDWORKS 云<b class='flag-5'>應用程序</b>

    S7-200 可編程序控制器系統(tǒng)手冊

    電子發(fā)燒友網(wǎng)站提供《S7-200 可編程序控制器系統(tǒng)手冊.pdf》資料免費下載
    發(fā)表于 09-02 16:24 ?5次下載

    當ICE_DAT引腳和ICE_CLK引腳應用程序代碼中配置為備用功能時,是否會導致編程失???

    當ICE_DAT引腳和ICE_CLK引腳應用程序代碼中配置為備用功能時,是否會導致編程失敗?
    發(fā)表于 08-25 06:55

    如何用Arduino Nano/UNO R3開發(fā)板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發(fā)板重新燒錄引導程序bootlaoder

    本文介紹了如何用能夠Arduino IDE下載的Arduino Nano/UNO R3開發(fā)板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發(fā)板重新燒錄
    的頭像 發(fā)表于 08-08 20:16 ?3663次閱讀
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3開發(fā)板給另一個<b class='flag-5'>Arduino</b> IDE不能下載的<b class='flag-5'>Arduino</b> Nano/UNO R3開發(fā)板重新燒錄引導<b class='flag-5'>程序</b>bootlaoder

    CY8C4128LQI-BL543無法掃描PC和Android手機,為什么?

    。 為什么?(PC和Android手機 CAN 廣告和s同時CAN )。 我使用的是 Psoc 4 ble 4.2 版本的設備和 Psoc creator 4.4 版本。 掃描 PC 和 Android 手機需要配置或應用程序
    發(fā)表于 07-07 08:09

    無法將應用程序下載到串行閃存怎么解決?

    我嘗試在藍牙模塊CYBT-343026-01(CYW20706)上下載應用程序到串行閃存,但失敗了。 第一步是按照 AIROC? HCI UART 控制協(xié)議文檔(見下文)的指示向模塊發(fā)送
    發(fā)表于 07-04 06:49

    對于具有直接反饋控制的 CCG3PA 應用程序,是否可以正確地重新使用引腳 12(負載使能控制),它有哪些限制?

    對于具有直接反饋控制的 CCG3PA 應用程序,是否可以正確地重新使用引腳 12(負載使能控制),它有哪些限制? 我們能夠?qū)⑵渲貜陀糜谕ㄐ?,但是當使?\"
    發(fā)表于 05-26 07:23

    《ESP32S3 Arduino開發(fā)指南》第二章 Arduino基礎知識

    ,目前最新的Arduino核心庫采用C與C++混合編程。通常所說的Arduino語言,是指Arduino核心庫文件提供的各種應用程序編程接口(Applocation Programmi
    發(fā)表于 05-13 09:28

    是否有辦法用標準Windows驅(qū)動程序控制GPIO嗎?

    問題。 CY7C65213-28PVXI 的 GPIO 控制使用“cyusbserial.dll”執(zhí)行 由CYPRESS?提供, 但我發(fā)現(xiàn)該 dll 不能與標準 Windows 驅(qū)動程序一起使用。 您能告訴我是否有辦法用標準 Windows 驅(qū)動
    發(fā)表于 05-08 07:05

    如何在i.mx8mq的android13上啟用Widevine DRM?

    Widevine DRM 13 級呢? 附加圖片由“DRM 信息”應用程序檢查。 Android 11 中支持的 Widevine Android 11 中支持的 Widevine
    發(fā)表于 04-11 06:44

    【技術案例】Android in Docker

    Docker介紹Docker是一個開源的容器化平臺,用于打包、分發(fā)和運行應用程序。它通過將應用及其所有依賴打包到獨立的容器中,確保應用在不同環(huán)境中一致運行。Docker提供快速部署、隔離性強和高效
    的頭像 發(fā)表于 04-02 16:33 ?1800次閱讀
    【技術案例】<b class='flag-5'>Android</b> in Docker

    一文讀懂IO控制器:靈活高效的工業(yè)信號采集與控制利器

    什么是IO控制器? IO控制器(輸入輸出控制器)是現(xiàn)代工業(yè)自動化系統(tǒng)中的關鍵設備,它如同工業(yè)現(xiàn)場的"神經(jīng)末梢",負責采集各種傳感器信號(輸入
    的頭像 發(fā)表于 03-31 16:39 ?1313次閱讀