我的寻物机器人

在arduino中文社区无意间看到了一个大神的帖子,从此就一直关注着他,他的每一个项目都是很厉害的,有关于平衡的,图像识别,等等,于是乎,我也照着做了一个,效果很好。

资料教程:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=26747&highlight=opencv

视频地址https://v.qq.com/x/page/v0569i0805x.html

 

非原创   ,,, 资料来自于极客工坊大神 彭稚辉先生

其个人网站------

 1 /*******************************************
 2 一个个人小项目,配套APP下载以及相关教程见
 3 http://pengzhihui.xyz/2016/05/05/trace/
 4 *******************************************/
 5 #include <Arduino.h>
 6 #include <SPI.h>
 7 #include <U8g2lib.h>
 8 #include <TraceApp.h>
 9 #include <Servo.h>
10 U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* d0=*/ 4, /* d1=*/ 5, /* cs=*/ 3, /* dc=*/ 6, /* reset=*/ 7);
11 char val='/';
12 Servo myservoL;
13 Servo myservoR; 
14 int zero= 100;
15 SoftwareSerial mySerial(0, 1); // RX为D10, TX为D11,可以自己任意修改
16 TraceApp obj((SoftwareSerial&)mySerial, 9600);  //实例化检测对象
17 void Stop()
18 {
19 myservoL.detach();
20 myservoR.detach();   
21 // myservoL.write(zero);
22 //myservoR.write(zero); 
23   }
24 void setup()
25 {
26    Serial.begin(9600);  //硬件串口用于调试
27    u8g2.begin();
28   obj.begin();      //初始化
29    myservoL.attach(9);
30    myservoR.attach(10);
31    myservoL.write(100); //左轮归零
32    myservoR.write(100);//右轮归零
33 }
34 void loop()
35 {
36 obj.routine();    //尽可能让这一句频繁运行
37   if (obj.valid())  //检测的物体是否有效
38   {
39     /* u8g2.firstPage();
40      do {
41     u8g2.setFont(u8g2_font_ncenB14_tr);//设置字体集  
42     Serial.print("Obj detected at:");
43     Serial.print(obj.getX());  //x坐标
44     u8g2.setCursor(0, 15);    //设置光标处
45     u8g2.print("X=");  //输出内容
46     u8g2.setCursor(30, 15);    //设置光标处
47     u8g2.print(obj.getX());  //输出内容
48     Serial.print(",");
49     Serial.print(obj.getY());  //y坐标
50     u8g2.setCursor(0, 30);    //设置光标处
51      u8g2.print("Y=");  //输出内容
52      u8g2.setCursor(30, 30);    //设置光标处
53     u8g2.print(obj.getY());  //输出内容
54     Serial.print("  with size of:");
55     Serial.println(obj.getT()); //物体大小 
56     u8g2.setCursor(0, 45);    //设置光标处
57      u8g2.print("T=");  //输出内容
58     u8g2.setCursor(30, 45);    //设置光标处
59     u8g2.print(obj.getT());  //输出内容
60      }while ( u8g2.nextPage() );*/
61 int LL = obj.getX()-150;
62 int RR = obj.getY()-250;
63 if(LL<20&&LL>-20||RR<20&&RR>-20)
64 {
65   Stop();
66   }
67  else {
68 myservoL.attach(9);
69 myservoR.attach(10);
70 myservoL.write(zero-RR);
71 myservoR.write(zero-LL);
72   }
73   }
74   else
75   { 
76     Stop();
77      u8g2.firstPage();
78      do{
79     u8g2.setFont(u8g2_font_ncenB14_tr);//设置字体集  
80     u8g2.setCursor(30, 15);    //设置光标处
81     u8g2.print("Lost!!");  //输出内容
82      }while( u8g2.nextPage() );
83   Serial.println("No obj or too many detected");
84   }
85   delay(100);
86 }
@青山不移,文笔不息。学习,坚持,梦想青春!
原文地址:https://www.cnblogs.com/pengwenzheng/p/7781678.html