2020年8月18日 星期二

著色本:使用VIA Pixetto視覺感測器之顏色偵測功能

著色本

使用VIA Pixetto視覺感測器之顏色偵測功能[1]

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/

Aug. 18, 2020
88x31.png[2]

難易度★★


主題:著色本(Coloring Book)

P最近工作不順,常感覺壓力很大。有一天,他看到女兒小V正拿起著色本邊哼小曲邊著色,一派輕鬆無憂的樣子。剛購入8787的你,是否能也能用上它強大的AI功能來製作一本電子版的「解憂」著色本呢?

任務

各位看官,水果都端上桌了,請替它們上上色吧~。
使用8787辨色功能來替各種水果上新顏色

材料

項目

品名

單位

數量

1

VTS-8787視覺感測器

1

2

micro USB傳輸線

1

l   請備妥測試用紅、黃、綠、藍、紫物件(色筆、彩球、色紙、…)若干。

 

功能設計

1.         按下水果圖案()時清除它的顏色。

2.         當滑鼠碰到水果圖案([3]後開始吸色:也就是將事先備好有顏色的物件靠近8787讓它認 出來以便改變水果「服裝(costume

[4]

 

三種水果的積木控制程式如 1所示。完整的參考範例程式可由 https://reurl.cc/k0d3kr 下載。

 

1:水果控制的完整積木程式。

 

造形設計

還記得童年畫過的著色本(https://reurl.cc/n0z722)嗎?請連到Super Coloring網站(https://reurl.cc/MdvRgX)回味一下小時候拿著著色本塗色的那種小小滿足與快樂。

本章的美工素材(assets要設計三個水果的六種顏色,我們可以使用Pixetto Scratch內建的繪圖工具設計,也可以用其他電腦繪圖程式(例如:Adobe PhotoshopIllustrator…)製作好再匯入。所有素材清單如所示[5]

 

2Pixetto Scratch內建的繪圖工具介面。

 

教學活動設計

1. 將本章範例修改成闖關遊戲,例如:第一關是香蕉著色、第二關是葡萄著色、第三關是蘋果著色,而且每關有預設的答案。玩家必需挑對該水果對應的顏色才能晉級。

2. 1的水果著色順序改為亂數(random點選水果出現的順序。

3. 將本章範例加入限時完成的條件。

4.加入地圖(map的概念,例如:第一張是水果著色地圖、第二張是花類地圖…。


参考資料

  1. 本文系改編自VIA官網 https://reurl.cc/D66796
  2. 六種授權條款
  3. 因為一個人要操作滑鼠,又要讓8787替水果圖案上色。建議先把滑鼠放置在水果圖案內部後再進行辨色會較順暢一些。
  4. 下拉式選單中White、Red、Yellow、Green、Blue、Purple分別圖 2的水果素材檔名。
  5. 三種水果的六個顏色皆以方式各自存檔。

2020年6月28日 星期日

[程式設計工法] C/ C++,a009: 解碼器@0判

C/ C++,a009: 解碼器@0判


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/

Jun. 28, 2020
88x31.png[1]
解析:
  • 直接run結果建立直觀:
  • Idea:



#include <iostream>
#include <string.h>
using namespace std;

int main(void) {
string str;
int k=-7;

 //Read data in getline(cin, str); //Process data //Shift for (int i=0; i<str.size(); i++) { str[i]=str[i]+k; } //Output data for (int i=0; i<str.size(); i++) { cout<<str[i];
}
}

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

2020年6月23日 星期二

[程式設計工法] C/ C++,a005: Eva 的回家作業@0判

C/ C++,a005: Eva 的回家作業@0判


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/

May. 16, 2020
88x31.png[1]

問題解決(Problem Solving之逻輯思維 =
心法: 程式設計哲思(Philosophical Thinking for Programming) +
技法:程式設計工法(Skills for Programming)


    解析:
    • 直接run結果建立直觀:
    • Idea:將test data讀入(存在1-D陣列data[]中)後計算結果(等差或等比),再依題目需求編排輸出格式。
    • 一般測資(例如:open data)會以CSV(Comma Separated ValuesXML(Extensible Markup Language)JSON(JavaScript Object Notation)格式(format)儲存。所以,programmer會呼叫parser來幫忙將raw data讀進memory中。讀進來的資料常會以arraystructures、甚或data base的tables革等data structures來儲存。
    • 用scanf()讀console輸入的字串時要留意字串結尾控制碼'\0'的額外處理。
    • 學習要學一般的通則(general purpose),這樣會一理通、萬理通。所以,我們乖乖的從stdin讀入data後,存在內部的資料結構。經運算後再丟到stdout(實際應用可能是用.txt、.csv、.xml、.json格式存)。

    #include <iostream>
    using namespace std;

    int data[100];

    void printArray(int t) {
    int i = 0;

    for (i=0; i<5*t; i++) {
    cout << data[i] << " ";
    if ((i+1)%5==0) {
    cout << endl;
    }
    }
    }

    int main(void) {
    //int data[100]={1, 2, 3, 4, 0, 1, 2, 4, 8, 0, 4, 6, 8, 10, 0};

    int i = 0;
    int d1 = 0;
    int d2 = 0;
    int r1 = 0;
    int r2 = 0;

    int t = 0;
    int j = 0;
    int lf = 0;

    //讀入數列筆數
      cin >> t;

      for (i=0; i<t; i++) {
       for (j=0; j<4; j++) {
       cin >> lf;

    data[i*5+j] = lf;
    }
      }

      //printArray();
      
    for (i=0; i<100; i+=5) {
    d1 = data[i+3] - data[i+2];
    d2 = data[i+2] - data[i+1];
    if (d1 == d2) { //處理等差
    data[i+4] = data[i+3] + d1;
    } else { //處理等比
    r1 = data[i+3] / data[i+2];
    r2 = data[i+2] / data[i+1];
    data[i+4] = data[i+3] * r1;
    }
    }

    printArray(t);

    return 0;
    }

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

    2020年6月8日 星期一

    [程式設計工法] C,新北国中資科教甄108,11

    C,新北国中資科教甄108,11


    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/

    June 8, 2020
    88x31.png[1]

    問題解決(Problem Solving之逻輯思維 =
    心法: 程式設計哲思(Philosophical Thinking for Programming) +
    技法:程式設計工法(Skills for Programming)


      解析:
      • 直接run結果建立直觀
      • 觀察

      #include <iostream>
      using namespace std;

      int main(void) {
      int space=5;
      int X=1;

      for(int i=1; i<=6; i++){ //控制高度 
      for(int j=1; j<=space; j++) //控制每行印幾個空格 
      printf(" ");

      for(int k=1; k<=X; k++) //控制每行印幾個X 
      printf("X");

      printf("\n");
      space--;
      X+=2;
      }

      return 0;
      }

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

      2020年6月4日 星期四

      [程式設計工法] C,北市国中資科教甄109,54

      C,北市国中資科教甄109,54


      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/

      May. 24, 2020
      88x31.png[1]

      問題解決(Problem Solving之逻輯思維 =
      心法: 程式設計哲思(Philosophical Thinking for Programming) +
      技法:程式設計工法(Skills for Programming)

      11. 若 num 陣列元素值為 40、60、30、10,則以 abc(num,0,3)呼叫執行下列函式 abc 後 num 陣列元素值為何? 
      (A)40、10、30、60
      (B)10、40、30、60
      (C)40、30、10、60
      (D)40、60、30、10 

        解析:
        • 直接run結果建立直觀
        • 图解

        #include <iostream>
        using namespace std;

        int num[]={40, 60, 30, 10};

        void abc(int d[], int first, int last) {
        int i, j, k, l;
        i=k=first; //拿d[k]當基準
        j=last;

        while (i<j) {
        while (d[i]<=d[k]&&i<last) //往右找大的(>)
        i++;
        while (d[j]>d[k]) //往左找小的(?)
        j--;
        if (i<j) { //沒交錯前交換之
        l=d[i];
        d[i]=d[j];
        d[j]=l;
        }
        }
        }

        void show(void) {
        for (int i=0; i<4 i="" span="">
        cout << num[i] >> ", ";
        }

        cout << endl;
        }

        int main(void) {
        show();
        abc(num, 0, 3);

        show();
        return 0;
        }

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