AppInventor + Arduino 制作蓝牙小车

news/2024/11/13 4:05:39/

制作需要:用AppInventor制作App,小车硬件以Arduino Nano为主控板,接蓝牙模块,超声波模块,两个直流电机。

功能:用手机App控制小车前进,后退,左转,右转,自动避障,并且可以通过滑动条调速。(其中自动巡线功能暂时未完成)

Arduino编程参考手册:

http://wiki.dfrobot.com.cn/index.php/Arduino%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C

AppInventor在线编辑器:

http://app.gzjkw.net/login/

App图标:

APP界面:

小车实物:

App代码:

小车代码(Arduino):

#include <Arduino.h>int MotorL(int speeed);
int MotorR(int speeed);
void Forward();
void Backward();
void TurnLeft();
void TurnRight();
void Stop();
int  Distance(); //超声波测距
void left_or_back(bool x);//0-左转,1-后退
int mode = 0;//0-按钮控制,1-自动避障
int moveSpeed = 125;
int turnSpeed = 0;
int distance=0;
unsigned long start_time = 0;
unsigned long end_time = 0;
const int TrigPin = 11;
const int EchoPin = 12;void setup() {Serial.begin(9600);pinMode(TrigPin,OUTPUT);pinMode(EchoPin,INPUT);pinMode(6, OUTPUT);  pinMode(7, OUTPUT); pinMode(3, OUTPUT); pinMode(5, OUTPUT); Stop();//停车start_time = millis();
}void loop() {if(mode == 1){int cm = Distance();if(cm>20){ //大于20CM直走Forward();  //直走}else if(cm>=0 && cm<=10){Stop();left_or_back(0);left_or_back(1);}}if(Serial.available()>0){int ch = Serial.read();if(ch>=0 && ch<=100){moveSpeed=int(ch*2.15+40);}else if(ch == 105){mode = 1;}else{switch(ch){case 101:Forward();break;//前进case 102:Backward();break;//后退case 103:TurnLeft();break;//左转case 104:TurnRight();break;//右转case 111:Stop();break;//停车default:break;}mode = 0;}}
}
void left_or_back(bool x){start_time = millis();end_time = millis();while(end_time - start_time < 500){end_time = millis();x ? TurnLeft() : Backward();//后退if(Serial.available()>0){int ch = Serial.read();if(ch!=105){mode = 0;Stop();break;}}}
}
int  Distance() //超声波测距
{digitalWrite(TrigPin,LOW);delayMicroseconds(2);digitalWrite(TrigPin,HIGH);delayMicroseconds(10);digitalWrite(TrigPin,LOW);int cm=pulseIn(EchoPin,HIGH)/58;return cm;
}
int MotorL(int speeed)
{  analogWrite(5, speeed);}int MotorR(int speeed)
{analogWrite(3, speeed);}void Forward()
{digitalWrite(6, LOW);digitalWrite(7, LOW);MotorL(moveSpeed);MotorR(moveSpeed);
}
void Backward()
{    digitalWrite(6,HIGH);digitalWrite(7,HIGH);MotorL(moveSpeed);MotorR(moveSpeed);
}
void TurnLeft()
{  digitalWrite(6, LOW);digitalWrite(7, HIGH);MotorL(moveSpeed);MotorR(moveSpeed);
}
void TurnRight()
{digitalWrite(6, HIGH);digitalWrite(7, LOW);MotorL(moveSpeed);MotorR(moveSpeed);
}
void Stop()
{MotorL(0);MotorR(0);
}

 


http://www.ppmy.cn/news/772003.html

相关文章

75款响应式国外漂亮网站建设中模板(上线倒计时模板)

一些关于国外漂亮网站建设中模板&#xff0c;希望大家能使用得上&#xff0c;大家喜欢就点个赞吧。 1、 【网站开通中】黑夜飘雪背景响应式网页倒计时模板 大小&#xff1a;2.09 MB 下载地址&#xff1a;http://www.177347.com/view-105-31847-0.html 2、 【网站计划实现中…

Unity 制作倒计时

效果&#xff1a;&#xff08;按指定格式每秒倒计时&#xff0c;最后3秒倒计时变红&#xff09; 步骤&#xff1a; 1.在Unity的Hierarchy面板点击鼠标右键->UI->Text&#xff0c;如下&#xff1a; 2.新建一个C#脚本&#xff0c;与上图中的TextTimer绑定&#xff0c;C#代…

AES加解密

概述 做个笔录&#xff0c;在线验证工具 1、链接 2、链接 1、code aes.h #pragma once #ifndef _AES_H #define _AES_H#define Nb 4 //加解密数据块大小&#xff0c;固定为4//加密类型对应的密匙长度&#xff0c;单位bit typedef enum {AES128 128,AES192 192,AES25…

Shellcode免杀技术的探索与应对策略

最近在学免杀的 顺道了解一些知识 文章目录 前言 一、Shellcode免杀技术的原理 二、常见的Shellcode免杀策略 三、应对策略

史诗级互联网电商系统的演进过程详解

史诗级互联网电商系统的演进过程详解 1. 业务模式演进1.1 发展历程1.1.1 萌芽期&#xff08;96-99&#xff09;1.1.2 发展期&#xff08;00-10&#xff09;1.1.3 稳定期&#xff08;11-今&#xff09; 1.2 业务模式1.2.1 B2C1.2.2 C2C1.2.3 B2B1.2.4 O2O1.2.5 其他 1.3 电商中台…

系统架构设计——互联网金融架构设计

摘要 根据第三方机构预统计&#xff0c;自2016年-2019年&#xff0c;我国零售信贷规模维持20%以上的高复合增长率&#xff0c;2017年中国零售信贷规模达到27万亿&#xff0c;到2019年&#xff0c;总规模超过37万亿。近年来互联网金融蓬勃发展&#xff0c;在借贷、保险、股权等…

京东区块链之供应链应用篇:溯源应用结合区块链能碰撞出什么火花?

云妹导读&#xff1a; 在区块链专题中&#xff0c;我们之前已经分享过《京东区块链之科普篇&#xff1a;京东在区块链技术领域的应用与布局》和《一文读懂区块链与传统数据库之共识机制》&#xff0c;为大家详细介绍了区块链的技术发展与技术原理。本篇文章我们将从实际落地应用…

springboot基于java的校园二手书籍交易平台毕业设计源码131558

校园二手书籍交易平台的设计与实现 摘 要 随着计算机技术和网络技术的迅速发展&#xff0c;网上购物已经融入了人们的日常生活中&#xff0c;电子商务也因此流行起来。国内的京东商城、天猫、苏宁易购等大型网站在图书销售等商品零售领域已经十分成熟完善&#xff0c;但是以高校…