ninan 发表于 2019-1-28 15:10:18

#DFrobot 2018景观园

       老郭最近迷上了做塔,做完了灯塔,做宝塔,做完了宝塔,看到王老师做的青衣花旦,决定给他们搭个戏台,搭完了戏台,修亭子,修牌楼,修传达室:dizzy:.........作为机电双侠的电侠必须负责任地告诉老郭,围个圈,您终于做了个大园子。
       老郭的宝塔、戏台、亭子、牌楼。3D作品地址是:https://www.tinkercad.com/things/6TwAZafLP1w-dfrobot2018

       老郭说了,我这么漂亮一座塔,你要给设计个驱鸟器,别让鸟儿在塔顶做窝。给它加上绚丽的灯光吧.............好吧,我呢,决定给它们卖门票:(。          
                       

          circuits设计的要求:

          1.使用超声波传感器和压电蜂鸣器来制作驱鸟器。          2.使用红外线传感器和舵机配合为景观园做入口和出口的门闸,并统计进门出门的人数,即进入园里的人数。          3.使用16*2LCD来显示欢迎和园内人数。          4.使用全彩灯条neopixel来制作灯光,在晚上自动亮起,并能随机的变化灯光的颜色。         

       最后的硬件连接是:
                     

      circuits作品地址:https://www.tinkercad.com/things/8mEaISvUxh9-dfrobot2018

       其中第1、2点设计要求是比较容易实现的,写的时候使用块就可以。
                         

       number是园内人数,在第3点设计要求中要用到,需要先将块程序转换为文本程序以便添加第3、4点设计。                     
                        
      
       下面给大家介绍一下 circuits中16*2LCD和全彩灯条neopixel的使用方法。这两个器件在Tinkercad的circuits中没有针对它们使用的块,要使用它们需要在代码中选用文本,调用它们相应的库。下面为大家总结一下16*2LCD和全彩灯条neopixel的简易用法。
            
      16*2LCD是UNO中比较常见的输出器件,用的比较成熟,网上关于它的库文件用法也比较多,先介绍一下本例的接法。
                     
         固定接法:LED(红)串接220欧姆电阻和Vcc--------5v                         VO串联1欧姆电阻、GND、RW、LED--------GND                   DB7-DB4、E、RS在UNO数字接口1-13之间任选6个
      在程序的合适位置加入以下几句:               #include<LiquidCrystal.h>         LiquidCrystallcd(12, 11, 5, 4, 3, 2);         voidsetup() {         lcd.begin(16, 2);         lcd.print("hello, world!");          }         voidloop() {         lcd.setCursor(0, 1);         lcd.print(number);         }

         就可以显示:
                     
         
      第一句   #include<LiquidCrystal.h>   是16*2LCD要使用的库,程序里有了它相当于带了一个装着LCD会用到的各种资料的包,一般把这句添加在文本程序的第一句。
         
      第二句   LiquidCrystal lcd(12,11, 5, 4, 3, 2);   对LCD的一些端子进行声明,实际填法是   LiquidCrystal lcd(RS, E,DB4, DB5, DB6, DB7);即填入这六个端对应UNO的端,这一句添加在文本程序中void setup() 之前,#语句之后。
      
      第三句   void setup()    后 { }中的程序是刚启动会执行的程序。
      
      第四句   lcd.begin(16, 2);   代表了16*2LCD有两行,每行可以写16个字母或数字。
      
      第五、六句   lcd.setCursor(0, 0); lcd.print("hello,world!");      表示在第0行开始写入 hello,world! 它占了第0行13个字母位置,第四五六句填在文本程序的   void setup()后 { }中的前面或后面(不要影响void setup()中的其他程序)。
      
      第七句   void loop()的含义是要循环执行的程序。
             第八、九句   lcd.setCursor(0,1);    lcd.print(2);      含义是在第1行的开始写2,用number代替2就可以表示景观园里的人数。这两句填在文本程序的void loop ()后 { }中的前面或后面(不要影响void loop ()中的其他程序)。            基本上使用这段简单的程序就可以显示想要显示的文字数字。实际上每个表示字母的位又可以成5*8的点阵,在这里就不做介绍了。

                  
      下面是全彩灯条,neopixel一经推出大受欢迎,色彩绚丽明艳。neopixel 可以做成环状,条状,可以在每一节的 out 端继续续接 neo,但需要知道一共用了多少个单独的neopixel,比如本例中环状neopixel中有12个单独的neopixel,out 后的条状用了6个,一共18个。            硬件接线: power---UNO 的5v                        Grand---- Grand                        in接某一个UNO的数字输入端或前一节的out。            neopixel 的库是    #include <Adafruit_NeoPixel.h>               也需对neopixel做声明         Adafruit_NeoPixel strip = Adafruit_NeoPixel(18, 8, NEO_GRB + NEO_KHZ800);       实际上就是 Adafruit_NeoPixel 你给灯条起的名 =Adafruit_NeoPixel(灯条中共多少个, in 接的端子号, 灯条的型号);                      在void setup()    后 { }中写      strip.begin();即 你给灯条起的名 . begin();              在void loop()后 { }中写 strip.setPixelColor(7, 255, 144, 144);strip.show();       模拟一下看看那个灯亮了,亮成什么颜色?实际上就是 strip.setPixelColor(n, red, green, blue);     如果在strip.show(); 之前多加一行    strip.setPixelColor(5, 0, 0, 144);   看看又有那个灯亮了,什么颜色,找找规律。               填写(n, red, green, blue)的时候要注意 n<neo的个数,red, green, blue 的值不能超过255,要在半角输入状态下写,就是输入法是。也可以加入各种算法,使它亮的更漂亮。
          让你的全彩灯条华丽的亮起来吧:O。
       景观园的circuits模拟工作状态视频:
      https://v.qq.com/x/page/u0832pqflis.html
          谢谢各位老师!
页: [1]
查看完整版本: #DFrobot 2018景观园