• 我的寻物机器人


    在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 }
    @青山不移,文笔不息。学习,坚持,梦想青春!
  • 相关阅读:
    WPF-学习笔记 将控件添加到Grid中的指定行指定列
    WPF 学习笔记-在WPF下创建托盘图标
    WPF-学习笔记 动态修改控件Margin的值
    WPF-学习笔记 按下鼠标拖动窗口
    WPF 学习笔记-判断动画完成的画件
    WPF 学习笔记-跨线程引用控件
    WPF 学习笔记-设置属性使窗口不可改变大小
    C语言博客作业02循环结构
    C语言博客作业03函数
    C语言博客作业01分支、顺序结构
  • 原文地址:https://www.cnblogs.com/pengwenzheng/p/7781678.html
Copyright © 2020-2023  润新知