日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 8 esp8266,ESP8266 WIFI模块学习之路(8)——自写Android手机APP控制直流电机正反转...

發布時間:2025/4/5 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 8 esp8266,ESP8266 WIFI模块学习之路(8)——自写Android手机APP控制直流电机正反转... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本次向通過Android遠程控制直流電機正反轉,在這之前可以看一下我寫的“STC單片機簡單控制直流電機正反轉”有助剛學的同學理解。

可以看一下我的硬件連接電路,如圖:

單片機硬件程序:

#include #include #include sbit EN = P1^0; // 電機輸入輸出1,2

sbit IN1 = P1^1; // 輸入1

sbit IN2 = P1^2; // 輸入2

char Recive_table[20]=""; //接收緩沖,最大20個字節

char Recive_state = 0; //接收完成標志

void WIFI_Init(void);

void Uart_Init(void);

void ms_delay(int t);

void LED(void);

int main (void)

{

/********************功能初始化***********************/

Uart_Init();//串口初始化,波特率為9600

ms_delay(1000) ;

WIFI_Init(); //wifi初始化

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

/**********************主循環************************/

while(1)

{

ms_delay(10) ;

if(Recive_state == 1)

{

ES=0; //清空接收標志位

if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//接收到的字符串形式為+IPD,x,x:y

{

if((Recive_table[3]=='D')&&(Recive_table[6]==','))

{

if(Recive_table[9]=='0')

{

IN1=1;

IN2=0;

}

if(Recive_table[9]=='1')

{

IN1=0;

IN2=1;

}

}

}

memset(Recive_table,'\0',20);

Recive_state = 0;

ES=1; //打開接收標志位

}

}

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

}

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

函 數: void Uart_Interrupt() interrupt 4

功 能: 串口中斷函數,將收到的字符存到Recive_table[]數組中

參 數: 無

返回值: 無

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

void Uart_Interrupt() interrupt 4

{

static char i=0; //因為是一位一位接收,所以用static

if(RI==1)

{

ES = 0;

RI=0;

Recive_table[i]=SBUF;

i++;

if((Recive_table[i-1] == '\n'))

{

Recive_table[i]='\0';

i=0;

Recive_state = 1;

}

ES = 1;

}

else

TI = 0;

}

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

函 數: void Uart_Init(void)

功 能: 串口初始化,波特率為9600(這個不會,上網百度)

參 數: 無

返回值: 無

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

void Uart_Init(void)

{

TMOD=0x20;

TH1=0xfD;

TL1=0xfD;

TR1=1;

REN=1;

SM0=0;

SM1=1;

EA=1;

ES=1;

}

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

函 數: void ms_delay(int t)

功 能: 毫秒級延時

參 數: 無

返回值: 無

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

void ms_delay(int t)

{

int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

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

函 數: void LED(void)

功 能: 發送完命令后顯示用的函數

參 數: 無

返回值: 無

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

void LED(void)

{

P2 = 0;

ms_delay(100);

P2 = 0xff;

ms_delay(100);

}

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

函 數: void WIFI_Init(void)

功 能: wifi初始化(名字:esp8266;密碼:1234567890)

參 數: 無

返回值: 無

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

void WIFI_Init(void)

{

ES = 0;

TI = 1;

printf("AT+RST\r\n");

LED();

ms_delay(1000) ;

printf("AT+CWMODE=3\r\n");

LED();

ms_delay(1000) ;

printf("AT+CIPMUX=1\r\n");

LED();

ms_delay(1000) ;

printf("AT+CIPSERVER=1,8080\r\n");

LED();

ms_delay(1000) ;

printf("AT+CIOBAUD=9600\r\n"); // 設置與單片機一致的波特率

LED();

ms_delay(1000) ;

while(!TI);

TI = 0;

ES = 1;

}

Android程序:

package com.open_open_wifi_motor.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import java.io.IOException;

import java.io.PrintStream;

import java.net.Socket;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private EditText mIp; // IP

private EditText mPort; // 端口號

private String mStrIp; // 字符串類型ip

private int miPort; // 字符類型端口

private Button mBtnConnect; // 連接

private Button mMotorZ; // 按鈕LED燈開

private Button mMoyorF; // 按鈕LED燈關

private Socket mSocket; // 套接字

private PrintStream out; // 打印輸出流

private ConnectThread mConnectThread; // TCP連接線程

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mBtnConnect=(Button)findViewById(R.id.mBt1);

mMotorZ=(Button)findViewById(R.id.mBt2);

mMoyorF=(Button)findViewById(R.id.mBt3);

mIp=(EditText)findViewById(R.id.mEtIP);

mPort=(EditText)findViewById(R.id.mEtPort);

mBtnConnect.setOnClickListener(this);

mMotorZ.setOnClickListener(this);

mMoyorF.setOnClickListener(this);

}

@Override

public void onClick(View view) {

switch (view.getId()){

case R.id.mBt1:

// 連接

if(mSocket == null || !mSocket.isConnected()){

mStrIp=mIp.getText().toString();

miPort=Integer.valueOf(mPort.getText().toString());

mConnectThread = new ConnectThread(mStrIp,miPort);

mConnectThread.start();

}

if(mSocket != null && mSocket.isConnected()){

try{

mSocket.close();

mSocket=null; // 清空mSocket

mBtnConnect.setText("連接");

Toast.makeText(MainActivity.this,"連接已關閉",Toast.LENGTH_LONG).show();

}catch (IOException e){

e.printStackTrace();

}

}

break;

case R.id.mBt2:

if(out!=null){

out.print("0");

out.flush();

}

break;

case R.id.mBt3:

if (out!=null){

out.print("1");

out.flush();

}

break;

}

}

private class ConnectThread extends Thread{

private String ip;

private int port;

public ConnectThread(String ip,int port){

this.ip=ip;

this.port=port;

}

@Override

public void run(){

try {

mSocket=new Socket(ip,port);

out = new PrintStream(mSocket.getOutputStream());

runOnUiThread(new Runnable() {

@Override

public void run() {

mBtnConnect.setText("斷開");

Toast.makeText(MainActivity.this,"連接成功",Toast.LENGTH_LONG).show();

}

});

}catch (IOException e){

e.printStackTrace();

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this,"連接失敗",Toast.LENGTH_LONG).show();

}

});

}

}

}

}

所有代碼大家可以下載參考,效果如圖:

堅持每天學習一點點,收獲就多一點!!!!

總結

以上是生活随笔為你收集整理的android 8 esp8266,ESP8266 WIFI模块学习之路(8)——自写Android手机APP控制直流电机正反转...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国内久久精品视频 | 91日韩精品 | www.色播 | 国产字幕在线观看 | 欧美精品亚洲精品日韩精品 | 美女撒尿无遮挡网站 | 老熟妇仑乱一区二区av | 特黄一级大片 | 日本美女黄视频 | 日韩成人免费观看 | 日韩有码中文字幕在线 | 毛片网站网址 | 国产欧美亚洲一区 | 色哟哟国产精品 | 欧美美女黄色 | 日韩精品一区二区在线观看 | 亚洲自拍第三页 | 中文字幕 国产 | av看片网站 | 丁香花电影免费播放在线观看 | 香蕉色网 | 影音先锋激情 | 国产网站在线看 | 69av网站| 欧美操老女人 | 黄色一级大片 | 亚洲欧美婷婷 | 男男gay羞辱feet贱奴vk | 男女扒开双腿猛进入爽爽免费 | 欧美打屁股 | 久久香蕉影视 | 另类视频在线观看 | h在线免费观看 | 日本全黄裸体片 | 色一情一区二区三区四区 | 91国视频| 亚洲成人精品在线观看 | 后进极品白嫩翘臀在线视频 | 在线免费观看黄色av | 久久色资源网 | 风流老熟女一区二区三区 | 中文字幕在线免费看 | 欧美日韩一区二区综合 | 爽妇网国产精品 | 久久精品国产亚洲av无码娇色 | 国产乱淫av一区二区三区 | 日韩中文在线视频 | 欧美亚洲综合另类 | 日韩欧美福利视频 | 绿帽视频| 欧美日韩在线播放三区四区 | 日韩av高清| 毛片黄色片 | 亚洲一区二区三区电影 | 成人免费毛片高清视频 | 成人久久久 | 91免费黄 | 福利视频导航网 | 久久免费视频网 | 欧美 唯美 清纯 偷拍 | 毛片天天看| 可以直接看的无码av | 日产久久视频 | 人人亚洲 | 美女爆乳18禁www久久久久久 | 91免费黄色| 日本一级黄色 | 极品探花在线观看 | 天堂网国产| 天堂激情网 | aaa黄色大片 | 噜噜啪啪 | 国产特级视频 | 香蕉影院在线观看 | 久久婷婷六月 | 国产精品一线二线三线 | 水蜜桃91| 台湾佬久久 | 四虎影院在线观看免费 | 国产在线精品成人欧美 | 午夜高潮视频 | 久久av网 | 97色资源 | 国产性自拍 | 黄色录像三级 | 欧美精品一级 | 日本十八禁视频无遮挡 | 国产白丝喷水 | 97se亚洲国产综合在线 | 最新国产毛片 | 国产在线观看a | 少妇被中出 | 肉大捧一进一出免费视频 | 亚洲人网| 日本一道本 | 99精品一区二区三区无码吞精 | 韩国三级在线视频 | 蜜桃精品久久久久久久免费影院 | 18做爰免费视频网站 |