目前分類:未分類文章 (6)

瀏覽方式: 標題列表 簡短摘要

電腦圖學英語:computer graphics縮寫CG)是研究電腦硬體軟體的幫助下建立電腦圖形科學學科,是電腦科學的一個分支領域,主要關注數位合成與操作視覺的圖形內容。雖然這個詞通常被認為是指三維圖形,事實上同時包括了二維圖形以及影像處理

簡單地說,電腦圖學的主要研究內容就是研究如何在電腦中表示圖形、以及利用電腦進行圖形的計算、處理和顯示的相關原理與演算法。圖形通常由、體等幾何元素和灰度色彩、線型、線寬等非幾何屬性組成。從處理技術上來看,圖形主要分為兩類,一類是基於線條資訊表示的,如工程圖等高線地圖曲面線框圖等,另一類是明暗圖,也就是通常所說的真實感圖形。

電腦圖學一個主要的目的就是要利用電腦產生令人賞心悅目的真實感圖形。為此,必須建立圖形所描述的場景的幾何表示,再用某種光照模型,計算在假想的光源、紋理、材質屬性下的光照明效果。所以電腦圖學與另一門學科電腦輔助幾何設計有著密切的關係。事實上,圖學也把可以表示幾何場景的曲線曲面造型技術和實體造型技術作為其主要的研究內容。同時,真實感圖形計算的結果是以數字圖象的方式提供的,電腦圖學也就和圖像處理有著密切的關係。

圖形與圖像兩個概念間的區別越來越模糊,但還是有區別的:圖像純指電腦內以點陣圖形式存在的灰度資訊,而圖形含有幾何屬性,或者說更強調場景的幾何表示,是由場景的幾何模型和景物的物理屬性共同組成的。

電腦圖學的研究內容非常廣泛,如圖形硬體圖形標準圖形互動技術光柵圖形生成演算法曲線曲面造型實體造型真實感圖形計算與顯示演算法、非真實感繪製,以及計算視覺化電腦動畫自然景物仿真虛擬實境等。

幾何學(英語:Geometry古希臘語γεωμετρία)簡稱幾何。幾何學是數學的一個基礎分支,主要研究形狀、大小、圖形的相對位置等空間區域關係以及空間形式的度量。

齊次座標(homogeneous coordinates) 
所謂齊次坐標就是將一個原本是n維的向量用一個n+1維向量來表示。 
例如,二維點(x,y)的齊次坐標表示為(hx,hy,h) 
齊次坐標的優點: 
1、許多圖形應用涉及到幾何變換,以矩陣表達式來計算這些變換時,平移是矩陣相加,而旋轉和縮放則矩陣相乘,綜合起來可以表示為p' = m1*p + m2,引入齊次坐標的目的主要是合併矩陣運算中的乘法和加法,表示為 p' = M*p 的形式。 
2、它可以表示無窮遠的點。n+1維的齊次坐標中如果 h=0,實際上就表示了n維空間的一個無窮遠點。 

 

重點:

(1) 圖形通常由、體等幾何元素灰度色彩、線型、線寬等非幾何屬性組成
     從處理技術上來看,圖形主要分為兩類,一類是基於線條資訊表示的,如工程圖等高線地圖曲面線框圖等,
     另一類是明暗圖,也就是通常所說的真實感圖形。

(2) 圖像純指電腦內以點陣圖形式存在的灰度資訊,而
     圖形含有幾何屬性,或者說更強調場景的幾何表示,是由場景的幾何模型和景物的物理屬性共同組成的。
 

資料來源:

維基百科,自由的百科全書

 

 

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

ESP8266-01 IOT SMART TIMER FOR HOME AUTOMATION

 

 

  • Power up the unit
  • The LED will start to flash rapidly
  • Press the MODE/SETUP button
  • When the LED turns off, release the button
  • Wait a few seconds, then open your smartphone or device WiFi connections
  • A new WiFi netword called IoT Timer will be visible
  • Select this access point
  • Log onto the IoT Timer (no password is required)
  • Wait until your device is connected to the IoT Timer network
  • Open up any internet browser
  • In the address bar, type in the following IP address - 192.168.4.1
  • WiFiManager console will open
  • Select Configure WiFi
  • A list with available WiFi networks points will be displayed
  • Select the required WiFi network, and type in the password
  • Next, enter the IP address you want to use to connect to the IoT Timer
  • Enter the Default Gateway IP address, followed by the mask
  • Once all the settings are done, click on the Save button
  • A new window will open to confirm the new credentials were saved
  • Close your browser

IoT Timer 

undefined

參考資料:

http://www.instructables.com/id/ESP8266-01-IoT-Smart-Timer-for-Home-Automation/

 

stanley 發表在 痞客邦 留言(0) 人氣()

undefined

https://www.xsimulator.net/community/threads/diy-linear-actuator-design.8221/

undefined

undefined

undefined

undefined

stanley 發表在 痞客邦 留言(0) 人氣()

當使用任何電子設備時,很多文章都會提到要防止電池的過充及過放,電池的過充或過放會減少電池的使用壽命,所以本篇收集一些簡單的電路,用來防止電池的過放



undefined

資料來源:

http://www.instructables.com/topics/12v-battery-low-voltage-disconnect-with-relay/
https://forums.overclockers.com.au/threads/low-voltage-cut-out-circuit-ideas.861013/
https://www.eleccircuit.com/simple-led-display-warn-battery-low/

 

stanley 發表在 痞客邦 留言(0) 人氣()

一旦你的ESP專案開發測試完成,總會面臨一個電源的問題,我們會很直覺的意識到不可能你的ESP一直在運算或工作,其實大部份的時間CPU都是閒置的,等到一段時間我們才需要晶片工作,當晶片閒置或空閒時我們希望能簡一些電力的損毀不然你的外部電源能供應多久的時間。知道歸知道。問題是我們的硬體、軟體要做些什麼改變才能符合我們的需求。

我想設計的理想工作模式或流程應該是如此的

  1. Waken up
  2. 檢查及連線網路(假如没有連網)
  3. 作些工作 (從感測器讀資料,傳送資料)
  4. Sleep n microseconds或 ? 分鐘
  5. 重複上面步驟

 

Sleep 模式

事實上,你不可能一直永遠sleep,根據ESP8266 SDK文件,我們僅可以sleep 的時間為4,294,967,295 µs,大約 ~71 分鐘。

(1)NO-SLEEP

没有Sleep 設定,所有一切設備都是全力工作的,當然這是最没有效率且消耗最多電力的。 

(2)MODEM-SLEEP

對ESP8266而言,當連線至AP點成功後,這是預定的設定模式,經過一段時間ESP8266將會diaable WiFi連線,連線時間長短是由你的route決定。

(3)LIGHT-SLEEP

Light-sleep 執行和Modem-sleep相同的功能,但是它會關掉system clock 和暫停CPU。

(4)DEEP-SLEEP 

這是最理想的工作模式,從下面我們可以得知ESP8266不同模式和電流消耗情形。

esp8266_sleep_options.png

ESP32有五種不同sleep模式,從每一個皆ON的active 模式至每一種皆OFF的 hibernation模式,現在我們只關注在Active 和deep-sleep模式就好。 

Picture of Wake-Up Sources

 

進入Deep-Sleep 模式

對ESP8266而言,要使用Deep Sleep 要軟體,硬體相互配合 :第一個硬體方面是要GPIO16 脚連接至reset 接脚。第二個是軟體方面是使用timer去Wake up 晶片,ESP8266大約可長達一小時的sleep。個人偏好使用Micropython 所以下面為一個以Timer 喚醒晶片的方式來實作。

import machine

# configure RTC.ALARM0 to be able to wake the device
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

# set RTC.ALARM0 to fire after 10 seconds (waking the device)
rtc.alarm(rtc.ALARM0, 10000)   # 以 μs 為單位

# put the device to sleep
machine.deepsleep()

當昌片從deep sllep 被唤喚醒後,晶片會完全的被Reset,所以下面的程式碼可用來判斷晶片是被唤喚醒後的Reset 或是一般性的Reset。

if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    print('woke from a deep sleep')
else:
    print('power on or hard reset')

 

從Deep-Sleep 至Wake up 模式

要使ESP32晶片從Deep-sleep至Wake up 有下列幾種方式?  

Wakeup 來源

(1)Timer

(2)External wakeup (ext0)- RTC_IO

(3)External wakeup (ext1)- RTC_CNTL.

(4)The touch pads

(5)ULP coprocessor wakeup

 

 

 

 

資料來源:

http://www.instructables.com/id/ESP32-Deep-Sleep/
https://www.losant.com/blog/making-the-esp8266-low-powered-with-deep-sleep
https://esp-idf.readthedocs.io/en/v2.0/api/system/deep_sleep.html
http://www.iotsharing.com/2017/06/bring-esp32-to-low-power-sleep-save-battery.html

 

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

20170929 星期五

(0) 基本概念

SAS程式是由DATA Step和PROC Step兩部份所組成。

SAS資料集之建立 例1 

00001 DATA A;
00002 INPUT NAME $ 1-7 MATH 9-11;
00003 CARDS;
00004 GERGO 83
00005 ALERN 95
00006 CARMEL 63
00007 PROC PRINT;
00008 RUN;

例1中,第一行到 第三行稱為資料段,以DATA開頭,以CARDS 結束。
第一行告訴SAS:我們要建立一個資料集A,這個資料集可以是任何你想要取的名稱。
第二行是一個 INPUT敘述,告訴SAS第一個變數是NAME ,位於資料卡的第一欄到 第七欄,其中的$表示NAME是文字變數,第二個變數MATH位於資 料卡的9-11欄,是數字變數。
第三行之CARDS敘述表示資料步驟的敘述句到此結束,下面是資料的開始;
因此第4-6行即為資料,
第7 行是一個SAS程序步驟(PROC step),指示SAS去列印上述資料.印出最近一次使用到的data set,如要指定用 DATA=資料集名稱 指定要印出哪個資料集

範例2:

data test;
infile cards dlm=',@';
input accno acname $ balancce;
cards;
200000,Sara,20000
456000@Lisa@39000
;
proc print data=test;          /* 螢幕輸出
       data EGHOME.test1;   /* 儲存在永久檔
       set test;
run;

範例3:

libname lib名稱 '資料夾路徑';

data lib名稱.新sas7bdat檔名;
     set lib名稱.原sas7bdat檔名
     新變項一 = 原變項一 + 原變項二;
     新變項二 = 原變項一 - 數字;
     新變項三 = 原變項一 * 原變項二;
     新變項四 = 原變項一 / 數字;
proc print data=lib名稱.新sas7bdat檔名;
     var id 新變項一 新變項二 新變項三 新變項四;
run;

(1) SAS 永久檔(SAS Data Library):

SAS 永久資料檔為「兩階段命名」,所謂兩階段是指所有SAS永久資料檔都是由「Library 名稱」和「SAS 檔案名稱」組成,正式永久資料檔 的寫法應為「Library 名稱 . SAS 檔案名稱」,而所謂「Library 名稱」是資料夾的暱稱(nickname)或標籤(label),當沒設定 「Library」時,SAS 會自動將資料儲存於「WORK」的 Library,反之,若有設定 Library,SAS 會以永久檔的形式存在設定的「LIBNAME」所宣告的 Library(即資 料夾)中。
「LIBNAME」為宣告我們 要設定一個新的 Library,接下來的「mylib」為 Library 的名稱,然後再宣告這個 Library 在本機電腦的路徑,記得要使用引號將路徑包裹起來。

LIBNAME mylib "E:\SASNote\epaper\"; 
DATA mylib.esrd_data_082222;
SET esrd_02;
RUN;

註: 在「DATA set」中有兩個指令可以完成部份工作, 分別為「WHERE」和「IF」指令。

執行步驟:
 (1.1).首先在 SAS 目錄下建立您自己的 Library 子目錄。 C:\SAS>WuLib 
 (1.2).進入 SAS 系統。
 (1.3).以 LIBNAME 指令建立 Library reference。
       LIBNAME WULIB 'C:\SAS\WuLib';
       DATA WULIB.BODY;
       INFILE 'C:\DATA\BODY.DAT';
          INPUT W1 W2;
       CARDS;  

(1.4).執行以上程式後,可在 C:\SAS\WuLib 目錄下看到 BODY. sas7bdat 的 SAS data set。

範例:暫存檔

LIBNAME st 'C:\SAS\WuLib';
DATA aaa;
SET st.TYPE;
RUN;

永久檔

LIBNAME st 'C:\SAS\WuLib';
DATA st.aaa;
SET aa;
RUN; 

(2)SET 敘述句

1.將資料集A的部份資料,複製到新的資料集B 

data newname;
set oldname;

  1.1.複製現存資料集中,部份變數
    data newname;
     set oldname;
     keep (drop) 變數名;

   1.2.複製現存資料集中,部份觀察值

      data newname;
      set oldname;
      if … then delete;
 

2.以資料集A的資料產生新變數到新的資料集B

data newname;
set oldname;
new_var_name=經過運算元處理的舊變數;

3.將數個資料集縱向連結至一個新的資料集

data newname;
set oldname1 oldname2 oldname3 oldname4; 

(3)資料輸入格式

(2.1)資料的輸入是以 INPUT 關鍵字開始,讀入哪些變數,各個變數的觀 測值在資料檔的位置等等

       (2.1.1) 欄位輸入法(Column input)
           此法輸入最省空間,有 missing values 也最容易看出,但所有資料必 需案所指定的格式排列整齊。

        (2.2.1)行輸入(column input) 例1 即為行輸入,其方式是在變數名稱後指定其 所在欄位,如果是文字變數,則在變數名稱與欄位間加"$"來區別。
        (2.2.2)列舉輸入(list input) 例2 為列舉輸入,此種方式僅要列出所有變數名稱,而文字變 數則只在變數名稱後加"$" 區別即可,但此種輸入方式必須注意 的是在資料卡上,每個變數值之間一定要以一 個或以上的空欄隔開,而且每個觀察值一定要依變數名稱排列之次序排列之。
                 DATA CLASS1;
                 INPUT NAME $ MATH;

        (2.2.3)格式輸入(formatted input) 例3 為格式輸入,此種方式要以特定格式來指示 各變數值所在 的位置,可用的格式如下:
                  w. 表數字變數的長度為w
                  w.d 表數字變數的長度為w而其中小數佔d位
                  $w. 表文字變數的長度為w
                  @n 移動到第n個欄位 +n 移動n位

                  DATA CLASS2;
                  INPUT NAME $7. MATH 4.;
                 第二行表示第一個變數之名稱為NAME,為文字變數佔7 個欄位,第二個變數名稱為MATH,是數字變數佔4個欄位。 

(2.2)INFILE 若欲輸入之資料不是列在資料步驟之下,而是存放在 SAS 系統以外的軟 碟或硬碟中,需用此句來指定。 

(4)資料集輸出並列印在OUTPUT

PRINT的選擇項:【DATA=】宣告要印出的資料集

               ROUND】宣告取整數值

               NOOBS】宣告觀察體號碼不印出

               UNIFORM】宣告所有頁面均以同一格式印出

 

PRINT的關鍵字:【VAR】宣告要印出的變項

               BY】宣告以特定變數分開列印

 

DATA CASE;

 INFILE 'C:\D001.txt' missover;

 INPUT ID $ 1-4 Gend 5 age 6-7 Mar 8 Height 9-14 .1;

 MISSING 999;

 

PROC PRINT DATA=CASE ROUND NOOBS UNIFORM;

TITLE '標題' ;

VAR ID age;

BY ID;

RUN;

    

       

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼