2020年3月19日 星期四

[AI] 心情指數:使用VIA Pixetto視覺感測器之形狀偵測(Shape Detection)功能

心情指數:

使用VIA Pixetto視覺感測器之形狀偵測(Shape Detection)功能


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

Mar. 19, 2020
88x31.png[1]

難易度

★★★☆☆

主題:人機互動

生我者父母,知我者…?如果AIread our mind那該有多好呢?(請參考 https://reurl.cc/MddgmL 和 https://reurl.cc/Y66br0 這兩篇的20種解釋)。

任務

請設計一款能顯示今日心情指數(blue Monday、生人勿近…)的小燈來點亮你我心中那盞光明燈!
利用8787的形狀偵測功能來觸發燈條以閃爍不同顏色。

材料

項目品名單位數量
1VTS-8787視覺感測器1
2micro USB傳輸線1
3Arduino Nano(FT232晶片,含mini USB傳輸線)1
4mini USB傳輸線1
5Grove – 4x公端杜邦線+母座 to Grove 4pin連接線1
6麵包板1
7WS2812B燈條1

    • 如果讀者要將項目3的開發板換成Uno或其他Arduino版本,請自行將項目4的傳輸線做調當的調整。
    • 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。

    造形設計(機構)

    為自己的創作小物https://reurl.cc/AqgWG3)加上心情顏色https://reurl.cc/AqgWQK),例如萌萌橘、鎮定藍…。

      功能設計(電路、程式)

      先依照下表及圖1接妥8787、Nano、燈條與電池盒雙電源共地的連接線路。若僅作功能測試,可以將燈條直接使用Nano上的5V電源,以省去準備外接電源的功夫。

      NanoWS2812B8787
      D0
      D1
      D8DIN
      5V5V
      GNDGND

      圖1:接線圖。


      在Pixetto Utility上(圖2)選用形狀偵測功能後,將之套用至8787。

      圖2:在Pixetto Utility上選用形狀偵測功能。

      接著,在Pixetto Junior上拉出圖3的積木程式。這個程式的邏輯是當8787識別出圓形時就讓Nano板載D13腳位的SMD LED點亮;若為矩形就關閉。其中,點亮LED將於最後的Arduino程式中改為燈條的顏色顯示。

      圖3:Pixetto Junior的Blockly程式碼。

      在進行最後一個步驟前,先將燈條的Arduino函數庫https://reurl.cc/j7qZ8n)加到Pixetto Junior中(預設路經為C:\Pixetto\PixettoJunior\arduino\libraries)。然後再將以下標示底線用來控制燈條的指令(初始化綠光、圓形:紅光、矩形:藍光)加到圖3自動產生的Arduino程式碼中。

      #include <Adafruit_NeoPixel.h>


      #include <Arduino.h>
      #include <SmartSensor.h>

      SmartSensor ss(0,1);

      #define PIN 8 //Which pin on the Arduino is connected to the NeoPixels? 
      #define NUMPIXELS 6 // How many NeoPixels are attached to the Arduino?

      // When setting up the NeoPixel library, we tell it how many pixels,
      // and which pin to use to send signals. Note that for older NeoPixel
      // strips you might need to change the third parameter -- see the
      // strandtest example for more information on possible values.
      Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

      void setup() {
        ss.begin();

        pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
        pixels.fill(0x00FF00, 0, 6);
        pixels.show();  
        delay(500);

        pixels.clear(); // Set all pixel colors to 'off'  
        pixels.show();  
      } //end of setup()

      void loop() {
        if (ss.isDetected()) {
          if (ss.getTypeID() == ss.SHAPE_ROUND) {
              pixels.fill(0xFF0000, 0, 6);
              pixels.show();  
          } else if (ss.getTypeID() == ss.SHAPE_RECTANGLE) {
              pixels.fill(0x0000FF, 0, 6);
              pixels.show();  
          } //end of if
        } //end of if
      } //end of loop()

      本單元的操作影片https://youtu.be/fb64gvMK_RQ 如圖4所示。

        圖4:展示影片。

          教學活動設計

          1. 讓8787看到圓形時閃流水燈(https://reurl.cc/N66gV5樣式(pattern)(圖5),看到矩形時閃霹靂燈(https://reurl.cc/9XXqgX)樣式(圖6)。

            圖5:燈條的流水燈樣式。


            圖6:燈條的霹靂燈樣式。

            参考資料
            1. 六種授權條款

            沒有留言: