C# Android wifi控制灯,求助如何在基于安卓通过WiFi与Arduino通信,实现对LED灯的控制。...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

dkmeng

推荐于 2017.12.15

00e27ab806e4881f8254fe7ae8741834.png

采纳率:55%    等级:9

已帮助:567人

项目需要的硬件如下:

Arduino Uno

Ethernet Shield

LED灯 2个.

电阻 2个.

面包板(可选)

连接导线

路由器一个

项目要的连接管脚如下:

LED 1 --> pin 6 to ground

LED 2 --> pin 7 to ground

项目需要的软件如下:

Eclipse IDE

Arduino IDE 1.x.x

LED 1 --> pin 6 to ground

LED 2 --> pin 7 to ground

项目需要的软件如下:

Eclipse IDE

Arduino IDE 1.x.x

Step 1: 在 Arduino上编程如下:#include "etherShield.h"

#include "ETHER_28J60.h"

int led2 = 7;

int led1 = 6;

static uint8_t mac[6] = {0xAA, 0xBB, 0xCC, 0xDD, 0xBB, 0xAA}; // this just needs to be unique for your network,

// so unless you have more than one of these boards

// connected, you should be fine with this value.

static uint8_t ip[4] = {192, 168, 0, 15}; // the IP address for your board. Check your home hub

// to find an IP address not in use and pick that

// this or 10.0.0.15 are likely formats for an address

// that will work.

static uint16_t port = 80; // Use port 80 - the standard for HTTP

ETHER_28J60 e;

void setup()

{

e.setup(mac, ip, port);

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

}

void loop()

{

char* params;

if (params = e.serviceRequest())

{

if (strcmp(params, "?cmd=1") == 0)

{

digitalWrite(led1, HIGH);

}

if (strcmp(params, "?cmd=2") == 0)

{

digitalWrite(led1, LOW);

}

if (strcmp(params, "?cmd=3") == 0)

{

digitalWrite(led2, HIGH);

}

if (strcmp(params, "?cmd=4") == 0)

{

digitalWrite(led2, LOW);

}

e.respond();

}

}

Step 2: 制作安卓APP

package com.androidarduino;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;

import android.os.Bundle;

import android.os.StrictMode;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

@Override

protected void onCreate(Bundle savedInstanceState) {

StrictMode.ThreadPolicy policy = new StrictMode.

ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

View led1on = findViewById(R.id.led_1on);

View led1off = findViewById(R.id.led_1off);

View led2on = findViewById(R.id.led_2on);

View led2off = findViewById(R.id.led_2off);

led1on.setOnClickListener(this);

led1off.setOnClickListener(this);

led2on.setOnClickListener(this);

led2off.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

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

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

return true;

}

public void commandArduino(String url){

try {

HttpClient httpclient = new DefaultHttpClient();

httpclient.execute(new HttpGet(url));

} catch (Exception e) {

}

}

public void onClick(View thisView) {

switch(thisView.getId()){

case R.id.led_1on:

commandArduino("http://192.168.0.15/?cmd=1");

Toast.makeText(getApplicationContext(), "led_1on",Toast.LENGTH_LONG).show();

break;

case R.id.led_1off:

commandArduino("http://192.168.0.15/?cmd=2");

Toast.makeText(getApplicationContext(), "led_1off",Toast.LENGTH_LONG).show();

break;

case R.id.led_2on:

commandArduino("http://192.168.0.15/?cmd=3");

Toast.makeText(getApplicationContext(), "led_2on",Toast.LENGTH_LONG).show();

break;

case R.id.led_2off:

commandArduino("http://192.168.0.15/?cmd=4");

Toast.makeText(getApplicationContext(), "led_2off",Toast.LENGTH_LONG).show();

break;

}

}

}

01分享举报

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mozilla 放出新的 Firefox 3.5 RC 版本(RC 3)

这几天 Mozilla 对 Firefox 3.5 的更新节奏真是够快,今天,一个新的 RC 版本(显示为 RC 3)又放出了。Firefox 3.5 RC 3 主要根据用户对之前版本的反馈进行了修正。有趣的是,笔者在其关于对话框中并没有发现 RC 字样&…

android studio 抽屉,java - Android导航抽屉(由Android Studio默认提供) - 堆栈内存溢出...

当我按下导航菜单项的更改时,它的颜色为黄色,直到释放时一直按它为默认。我没有明确编写任何代码来设置这些设置。 我该如何停止?请帮忙。 这是我的代码。 主要布局xmlns:android"http://schemas.android.com/apk/res/android"xmln…

大数据正在改变客户服务的五种方式

大数据正在改变客户服务的五种方式 任何组织的命脉,无论是否面向服务,都是需要为客户提供良好的服务。组织如何与其客户进行互动,会影响他们如何看待组织,这会影响潜在客户,除了组织最忠实的客户之外。 客户服务行业一…

JS正则表达式详解

JS的正则表达式//校验是否全由数字组成 function isDigit(s){var patrn/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn true} //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 function isRegisterUserName(s){var patrn/^[a-zA-…

android底部导航栏svg,vue开发移动端底部导航条功能

效果图src/app.vue头部导航内容区域import Tabbar from components/tabbar;export default {name: App,components:{Tabbar}}.g-container{position: relative;width:100%;height:100%;max-width:640px;min-width:320px;margin:0 auto;overflow:hidden;}.g-header-container{po…

C++ const的使用

下面的声明都是什么意思?const int a; int const a; const int *a; int * const a; int const * a const; 1、a是一个常整形数 2、a是一个常整形数 3、a是指向常整形数的指针(整形数不可以修改,指针可修改) 4、a是指向整形数的常指…

给ADSL用户的忠告

1. ADSL是非对称宽带网络,最高局限速度:下行为8M/上行为0.5M。2. 就目前电信大多数通信线路而言,ADSL带宽2M时是最优网络(个人意见),所以2M带宽时网络最稳定(这就是很多2M AD老用户不愿升级3M、…

如何在64位WIN7下安装64位的解压版mysql-5.6.37-winx64.zip

1、到mysql官网下载 https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.37-winx64.zip 2、将解压缩后的文件放到自己想要的地方,并配置环境变量。例如我存放的目录为:F:\mysql\mysql-5.6.14-winx64 在环境变量中添加:MYSQL_HOME:F:\mysq…

android theme 错误,为什么修改android:theme就崩溃,求助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼01-08 04:49:31.229: E/AndroidRuntime(4688): FATAL EXCEPTION: main01-08 04:49:31.229: E/AndroidRuntime(4688): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.iweixin/com.example.iweix…

一次自定义Configuration的悲惨经历。

终于发现问题了。。。太不容易了。。。5555昨天偶然想起来把一个项目中生成静态页配置文件做成一个单独到config文件。由于以前没有接触过自定义Configuration动手前上网查一下资料,发现蛮简单的。。定义section。。。定义属性。。。ConfigurationProperty声明。很快…

A query was run and no Result Maps were found for the Mapped Statement

原因:这是因为查询的结果集没有书写返回的类型resultType/resultMap 修改后如下

android+4.4.2+横屏,Android 横竖屏和布局问题

在这里我做了一个小test,之前看过关于这方面的东西,到后来我才真正的遇到项目的时候,不得已才要去真正的熟悉里面的流程。这里我贴测试源码:TestActivity.javapackage cn.com.hrmdemo;import Android.app.Activity;import android.content.re…

Silverlight 3 全系列开发工具发布

Silverlight 3 全系列开发工具发布Expression Studio 3Make your vision real with the four professional tools in Microsoft Expression Studio 3. Design for standards-based web sites, rich desktop experiences or Silverlight. Includes Expression Blend™ SketchFl…

KVM安装

KVM安装 1.查看系统是否支持,grep -E (vmx|svm) /proc/cpuinfo --color 2.安装kvm管理,yum install -y qemu-kvm libvirt 3.安装虚拟机工具,yum install -y virt-install 使用: 启动 service libvirtd start 启动后创建virbr0,192…

Android实现打开本地文件,Android 打开本地文件(示例代码)

Android 打开本地的文件,目前来说,其实很常见。而且现在有手机版的office了。查看office的全家桶就更加方便。首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定如果不知道是什么类型&#…

mysql配置文件注解

#BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大#TYPE: SYSTEM#END CONFIG INFO## 此mysql配置文件例子针对4G内存# 主要使用INNODB#处理复杂队列并且连接数量较少的mysql服务器# # 将此文件复制到/etc/my.cnf 作为全局设置,# mysql-data-dir/…