说明:
用到的一些东西:
串口助手,tcp连接,java相关,夜神模拟器。
1、设置小车网络:
1、STA模式
2、客户端代码实现
2、实现小车前后左右。
3、实现小车避障。
1、Serial.begin(115200(波特率)); //初始化串口
2、Serial.printin(打印什么); //打印并换行
3、Serial.avavliable();//判断数据是否有:>0(表示有数据)
*/
/*
#include
char* ssid = “20”; //“wifi热点名称”
char* passwd = “dzx521hsn”; //wifi密码
void initWifiSta()
{
WiFi.mode(WIFI_STA); //设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED) { //判断是否连接上
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP());
}
//上面是一些关于设置网络连接的函数 注意要在setup里面做调用,调用一次就好。
/*
//但是你想用c/s模式,你就要使用下面的代码
int port = 8888; //设置端口号
WiFiServer server(port); //设置服务端端口号
void setup() { //只执行过一次
Serial.begin(115200); //启动串口
initWifiSta(); //连接上网络
Serial.begin(); //启动服务器。
}
void loop() { //不断执行
char cmd; //字符
WiFiClient client = server.available(); //初始化服务器
while (client.connected()) { //等待客户端连接
while (client.available() > 0) { //判断数据传输
cmd = client.read();
}
}
}
*/
/*
超声波测距原理:vcc:正极,trig:触发,echo:回应,gnd:地线。
trig发射一个波,遇到障碍物:echo,用于接收。
给他一个十微妙高电平
#define Echo D2 //引脚相关初始化。
#define Trig D8
long getTime()
{
digitalWrite(Trig, HIGH); //给触发一个高电平,开始发波
delayMicroseconds(10); //维持十秒
digitalWrite(Trig, LOW); //给触发一个低电平,停止发波
return pulseIn(Echo, HIGH); //pulsein 是某个电平的维持时间。
}
void chaoshengbo()
{
pinMode(Echo, INPUT); //输入引脚
pinMode(Trig, OUTPUT); //为输出引脚
}
void setup() { //单单将他们设置成这样,不足,因为并不能发波,所以可以用上述函数。
chaoshenbo();
}
void loop() {
long dis;
dis = getTime() / 58; //gettime的返回值是某个的维持时间。
Serial.print(dis); //打印距离
Serial.println(“cm”);
delay(500);
}
*/
/*
#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5
void intsit()
{
pinMode(Dong1, OUTPUT); //设置为输出引脚
pinMode(Dong2, OUTPUT);
pinMode(Zhuan1, OUTPUT);
pinMode(Zhuan2, OUTPUT);
}
void you()
{
digitalWrite(Zhuan1, HIGH);
digitalWrite(Zhuan2, LOW);
}
void zuo()
{
digitalWrite(Zhuan1, LOW);
digitalWrite(Zhuan2, HIGH);
}
void qian()
{
digitalWrite(Dong1, HIGH); //让dong1,是高电平
digitalWrite(Dong2, LOW); //让dong1,是低电平
}
void hou()
{
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, HIGH);
}
void setup() {
intsit();
Serial.begin(115200);
initWifiSta();
server.begin();
}
void loop() {
char cmd;
WiFiClient client = server.available(); //服务初始化
while (client.connected()) { //等待客户端连接
while (client.available() > 0) {
cmd = client.read();
switch (cmd) {
case ‘h’: qian();
break;
case ‘q’: hou();
break;
case ‘z’: zuo();
break;
case ‘y’: you();
break;
case ‘s’: ting();
break;
case ‘d’: zheng();
break;
}
}
}
}
这并不能让小车停止:但是如何让小车方向回正,小车停止呢?
‘s’
void ting() //停止,在前后之后
{
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, LOW); //直接给他低电平就可以。
}
‘z’
void zheng() //回正,在左右之后
{
digitalWrite(Zhuan1, LOW);
digitalWrite(Zhuan2, LOW); //直接给他低电平就可以。
}
*/
#include
#define Echo D2 //引脚相关初始化。
#define Trig D8
#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5
char* ssid = “20”; //“wifi热点名称”
char* passwd = “dzx521hsn”; //wifi密码
void initWifiSta()
{
WiFi.mode(WIFI_STA); //设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED) { //判断是否连接上
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP());
}
long getTime()
{
digitalWrite(Trig, HIGH); //触发,给你一个高电平
delayMicroseconds(10); //维持十秒
digitalWrite(Trig, LOW); /触发,给你一个低电平
return pulseIn(Echo, HIGH); //计算回应的时间
}
void intsit()
{
pinMode(Dong1, OUTPUT); //设置为输出引脚
pinMode(Dong2, OUTPUT);
pinMode(Zhuan1, OUTPUT);
pinMode(Zhuan2, OUTPUT);
}
void you()
{
digitalWrite(Zhuan1, HIGH);
digitalWrite(Zhuan2, LOW);
}
void zuo()
{
digitalWrite(Zhuan1, LOW);
digitalWrite(Zhuan2, HIGH);
}
void qian()
{
digitalWrite(Dong1, HIGH); //让dong1,是高电平
digitalWrite(Dong2, LOW); //让dong1,是低电平
}
void hou()
{
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, HIGH);
}
void setup()
{
intsit(); //初始化引脚:
chaoshengbo(); //超声波初始化
//串口初始化
initWifiSta//wifi初始化
server.begin();//初始化客户端
}
void loop()
{
char cmd;
int mark=0;
long dis;
dis = getTime() / 58;
WiFiClient client = server.available(); //初始化服务器
while (client.connected()) { //等待客户端连接
while (client.available() > 0) { //判断数据传输
cmd = client.read();
//Serial.printin(cmd);
if(dis<10){
hou();
delay(200);
ting();
mark=1;
} else{
mark=0;
}
if(mark==0){
switch (cmd) {
case 'h': qian();
break;
case 'q': hou();
break;
case 'z': zuo();
break;
case 'y': you();
break;
case 's': ting();
break;
case 'd': zheng();
break;
}
}
}
}
}
1、设置垃圾桶的舵机功能的实现:1、连接
2、转向
2、设置超声波的测距功能:检测到障碍物时,则舵机转向
障碍物离开时,舵机返回。
/*
#include
#define Duo D5 //定义舵机做一些事情。
#define Echo D2 //超声波相关
#define Trig D8
Servo myDuo;
long getTime()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);
}
void setup() {
pinMode(Echo, INPUT); //输入引脚
pinMode(Trig, OUTPUT); //为输出引脚
myDuo.attach(Duo); //连接舵机
Serial.begin(115200);
}
void loop() {
long dis;
dis = getTime() / 58;
if (dis < 10) {
myDuo.write(60); //转向功能
delay(500);
}
else {
myDuo.write(180);
delay(500);
}
Serial.print(dis);
Serial.println(“cm”);
delay(500);
}
个人学习后间接,浅谈,错误请指正,记录生活,记录学习,望明天更好。