在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

如何使用Android應(yīng)用程序控制arduino IO引腳

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2019-11-06 17:47 ? 次閱讀

步驟1:部件

對(duì)于這個(gè)instructables你需要幾個(gè)部分。

一個(gè)arduino

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

以太網(wǎng)屏蔽

3 Led

3 220歐姆電阻

一些跳線

a breadboard

安裝了android studio的計(jì)算機(jī)

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

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

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

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

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

步驟3:架構(gòu)

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

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

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

第4步:Arduino草圖

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

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

#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上的代碼。

很簡(jiǎn)單,對(duì)吧?讓我們?nèi)タ纯磻?yīng)用程序吧!

第5步:應(yīng)用程序布局

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

注意:

如果出現(xiàn)渲染錯(cuò)誤,請(qǐng)?jiān)诖翱陧敳繉?Apptheme 更改為 Appcompat.NoActionBar

!注意!

正常按鈕只會(huì)在按下時(shí)點(diǎn)亮它的LED。釋放按鈕后led將熄滅。

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

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

第6步:應(yīng)用程序編碼

為了對(duì)應(yīng)用進(jìn)行編碼,我讓您更輕松。您需要將此代碼復(fù)制到 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。

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

定義按鈕

為每個(gè)按鈕添加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)在我們需要為您的應(yīng)用添加權(quán)限。

步驟7:向您的應(yīng)用添加權(quán)限

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

步驟8:恢復(fù)

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

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

責(zé)任編輯:wv

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

    關(guān)注

    12

    文章

    3946

    瀏覽量

    128200
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6478

    瀏覽量

    188288
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    android手機(jī)上emulate應(yīng)用程序的方法

    Android手機(jī)上模擬(emulate)應(yīng)用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環(huán)境,以便在沒有實(shí)際物理設(shè)備的情況下運(yùn)行
    的頭像 發(fā)表于 12-05 15:33 ?568次閱讀

    AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建一個(gè)應(yīng)用程序
    的頭像 發(fā)表于 11-27 11:46 ?338次閱讀
    AWTK-WEB 快速入門(1) - C 語言<b class='flag-5'>應(yīng)用程序</b>

    Arduino程序:實(shí)現(xiàn)SD NAND(貼片sd卡)的讀寫功能

    引腳對(duì)應(yīng) []()   下載程序 沒有錯(cuò)誤的話會(huì)出現(xiàn)如下的內(nèi)容 []()   使用SPI讀寫的話,我看他們官網(wǎng)博客上沒有連接相應(yīng)的電阻,直接接IO口上了   下面是官方提供的SPI連接示意圖
    發(fā)表于 11-07 17:45

    【軟件干貨】Android應(yīng)用進(jìn)程如何保活?

    Android應(yīng)用程序中,為了保證應(yīng)用的正常運(yùn)行和穩(wěn)定性,有時(shí)需要對(duì)應(yīng)用進(jìn)程進(jìn)行保活。以下是一些實(shí)現(xiàn)進(jìn)程保活的方法:
    的頭像 發(fā)表于 10-15 17:05 ?621次閱讀
    【軟件干貨】<b class='flag-5'>Android</b>應(yīng)用進(jìn)程如何保活?

    計(jì)算機(jī)進(jìn)行程序控制工作的基本原理是怎樣的

    計(jì)算機(jī)程序控制是計(jì)算機(jī)科學(xué)中的一個(gè)核心概念,它涉及到計(jì)算機(jī)如何根據(jù)預(yù)設(shè)的指令序列執(zhí)行任務(wù)。 1. 計(jì)算機(jī)硬件基礎(chǔ) 在深入程序控制之前,我們需要了解計(jì)算機(jī)的基本硬件組件,因?yàn)樗鼈兪?b class='flag-5'>程序控制
    的頭像 發(fā)表于 09-04 16:57 ?842次閱讀

    如何在Android 10設(shè)備上通過App控制GPIO

    本文檔提供了在 Android 10 設(shè)備上通過應(yīng)用程序(App)控制通用輸入輸出(GPIO)的詳細(xì)指南。這涵蓋了從創(chuàng)建 gpio驅(qū)動(dòng)到App 配置 以及 SELinux 策略以允許特定訪問的所有必要步驟。
    的頭像 發(fā)表于 07-22 17:59 ?1406次閱讀

    寫一個(gè)程序控制像圖上這樣控制電磁閥 但是沒什么頭緒 請(qǐng)各位大神幫幫忙

    寫一個(gè)程序控制像圖上這樣控制電磁閥 但是沒什么頭緒 請(qǐng)各位大神幫幫忙
    發(fā)表于 07-22 13:18

    ESP8266如何為應(yīng)用程序選擇正確的Wi-Fi模塊嗎?

    您能幫我為我們的新應(yīng)用程序選擇正確的 Wi-Fi 模塊嗎? 該模塊的要求如下: - 從主機(jī)應(yīng)用程序控制(通過STM32通過SPI、SDIO或最壞情況下的UART) - 接入點(diǎn)/軟 AP,可以同時(shí)
    發(fā)表于 07-19 16:56

    Anthropic推出Claude Android應(yīng)用程序,挑戰(zhàn)ChatGPT市場(chǎng)地位

    在人工智能領(lǐng)域的激烈競(jìng)爭(zhēng)中,新興力量Anthropic于本周二正式推出了其備受矚目的Claude Android應(yīng)用程序,標(biāo)志著這家公司在多平臺(tái)布局上邁出了重要一步,旨在通過提供更廣泛、更便捷的訪問方式,吸引并留住用戶,從而在與ChatGPT等巨頭的競(jìng)爭(zhēng)中脫穎而出。
    的頭像 發(fā)表于 07-17 17:24 ?1146次閱讀

    初識(shí)IO-Link及IO-Link設(shè)備軟件協(xié)議棧

    軟件堆疊套件包括亞信IO-Link 設(shè)備軟件協(xié)議棧試用庫、IO-Link傳感器驅(qū)動(dòng)程序以及演示應(yīng)用程序
    的頭像 發(fā)表于 07-08 13:55 ?3191次閱讀
    初識(shí)<b class='flag-5'>IO</b>-Link及<b class='flag-5'>IO</b>-Link設(shè)備軟件協(xié)議棧

    安裝在Android 14上的LE OTA應(yīng)用程序無法使用是怎么回事?

    你好。 LE OTA 應(yīng)用程序示例代碼無法在 Android 14 智能手機(jī)上運(yùn)行。 點(diǎn)擊更新按鈕時(shí),顯示"abort" ,OTA 進(jìn)程無法繼續(xù)。 13 及以下版本沒有問題。 為什么會(huì)這樣?
    發(fā)表于 07-05 06:01

    遠(yuǎn)程IO模塊與PLC的區(qū)別

    在工業(yè)自動(dòng)化領(lǐng)域中,遠(yuǎn)程IO模塊(Remote Input/Output Module)和可編程序控制器(Programmable Logic Controller,簡(jiǎn)稱PLC)都是重要的組成部分
    的頭像 發(fā)表于 06-15 15:53 ?2065次閱讀

    可編程序控制器系統(tǒng)概述

    AB可編程序控制器系統(tǒng)
    發(fā)表于 05-23 14:26 ?8次下載

    應(yīng)用程序中的服務(wù)器錯(cuò)誤怎么解決?

    在使用應(yīng)用程序時(shí),可能會(huì)遇到服務(wù)器錯(cuò)誤的問題。這種錯(cuò)誤通常會(huì)導(dǎo)致應(yīng)用程序無法正常運(yùn)行 ,給用戶帶來不便。下面將介紹應(yīng)用程序中的服務(wù)器錯(cuò)誤及其解決方法,幫助您快速解決這一問題。
    的頭像 發(fā)表于 03-12 15:13 ?6680次閱讀

    如何去提高EtherCAT IO的性能呢?

    進(jìn)行EtherCAT IO性能優(yōu)化涉及多個(gè)方面,包括硬件選擇、網(wǎng)絡(luò)配置、軟件優(yōu)化和應(yīng)用程序設(shè)計(jì)。
    的頭像 發(fā)表于 03-07 09:28 ?651次閱讀
    主站蜘蛛池模板: 天天综合天天色 | 又粗又爽又色男女乱淫播放男女 | 美女隐私黄www视频 美女用手扒开尿口给男生桶爽 | 亚洲国产一区二区三区在线观看 | 1000部又爽又黄的做黄禁片 | 欧美行爱| 国产一级特黄aa大片在线 | 天天爱综合 | 国产床戏无遮掩视频播放 | 色视频免费观看 | 天堂在线最新版资源www | 高清一级 | 亚洲一区二区在线播放 | 国产精品综合色区在线观看 | 看黄视频网站 | 五月天色丁香 | 黄色午夜剧场 | 深爱激情五月网 | 久久久久性 | 看全黄大片狐狸视频在线观看 | 日本国产在线 | www.四虎影| 日韩一级一片 | 天天摸夜夜摸成人免费视频 | 色多网站免费视频 | 欧美a区| 女人被两根一起进3p在线观看 | 9999毛片免费看 | 日本黄色站 | 久久久久国产精品免费看 | 2021日本三级理论影院 | 正在播放国产巨作 | 在线操| 五月婷婷六月丁香激情 | 欧美激情一欧美吧 | 欧美三级色图 | 色在线视频观看 | 久久亚洲成人 | 一区二区三区免费视频播放器 | 免费观看黄色在线视频 | 成人精品综合免费视频 |