2016年3月21日 星期一

Linux vim 編輯器 常用指令操作

在Linux  shell環境下常常要使用vim編輯器,因為指令太多很難記住,習慣使用window 圖形界面Editor的人應該會很不習慣,下面列出自己常用的指令,要套出指令時記得要按ESC,才可以再下別的指令。

在linux shell下編輯檔案命令如下:
$ vim 檔案名稱

最下面行列是vim顯示目前指令模式,要跳出必須按ESC鍵










下面
紅字標示我個人認為經常會使用的指令


移動游標

  • e - 向右跳至字尾
  • E - 向右跳至字尾 (字中可含標點)
  • b - 向左跳至字尾
  • B - 向左跳至字尾 (字中可含標點)
  • 0 - 跳至行首 (等同在windows 編輯器的home功能)
  • $ - 跳至行尾 (等同在windows 編輯器的home鍵功能)
  • gg - 跳至檔案第一行 (等同在windows 編輯器的ctrl+home功能)
  • G - 跳至檔案最後一行 (等同在windows 編輯器的ctrl+end功能)
  • 插入模式 - 插入/附加文字

    • i - 在游標前開始插入字元 
    • I - 在行首開始插入字元
    • a - 在游標後開始插入字元
    • A - 在行尾開始插入字元
    • 編輯

      • r - 變更 (取代) 游標後一個字元
      • cc - 變更 (取代) 整行
      • cw - 從游標位置開始變更 (取代) 單字
      • s - 刪除游標後字元並進入插入模式
      • u - 復原  (等同在windows 編輯器的ctrl+z功能)
      • 剪下、複製、貼上

        • yy - 複製該行
        • 2yy - 複製 2 行
        • y$ - 複製游標位置到行尾的區塊
        • p - 在游標後貼上 (等同在windows 編輯器的ctrl+v功能)
        • dd - 剪下 (刪除) 該行
        • 2dd - 剪下 (刪除) 2 行
        • dw - 剪下 (刪除) 該單字
        • D - 剪下 (刪除) 游標位置到行尾的區塊
        • x - 剪下 (刪除) 該字元 (等同在windows 編輯器的del功能)

        • 標示模式命令

          • > - 向右縮排
          • < - 向左縮排
          • y - 複製 (等同在windows 編輯器的ctrl+c功能)
          • d - 剪下 (等同在windows 編輯器的ctrl+x功能)

        選取文字(標示模式)
            • v - 進入標示模式 (字元選取)
            • V - 進入標示模式 (行選取)

            • 尋找、取代
            • /pattern - 尋找 pattern
            • n - 尋找下一個
            • N - 尋找上一個
            • :%s/old/new/g - 全部取代
            • :%s/old/new/gc - 逐項取代

            • 退出
                • :w - 儲存
                • :wq or :x or ZZ - 儲存並退出
                • :q - 退出 (修改未儲存時警告)
                • :q! or ZQ - 強制退出 (不儲存)

                • PS:其他相對少用的功能如分頁、多檔案編輯指令就不列出,可以自己Google查詢一下

2016年3月20日 星期日

Arduino Nano 控制LED blinking閃爍

前言:

最近剛入手一片Arduino Nano v3, 在購物網上查詢到一片約NT$85 (還蠻便宜的),但套件排針只附上主模組與排針 x3,所以必須自行將排針都焊上後才可以進行測試,當然是市面上也有已經將排針焊上了的版本,如果你想用比較低的價格購入,也想練習順便練習一下soldering技巧,那就可以買這樣的套件來使用。


事前工作:

我把使用的工具與料件列出如下:
1. 烙鐵 x1
(我使用的功率較低USB烙鐵 8W,因為可以portable所以方便隨時可以拿出來使用,不過因為功率較低溫度沒有一般40W~60W烙鐵高,不過焊些簡易東西沒什麼問題)

2.  焊台 x1
(建議找一個便宜的焊台,我只花了N$180買了一個,因為之前的經驗是,還有沒有焊台輔助真的很難進行焊接工作,原因是焊接誤會滑動,真的很難進行)

3. 焊錫 & solder paste
4. Arduino Nano v3 主板 x1 pcs + 排針x 3 pcs (買來的套件)

焊接工作:
透過焊台輔助,將3個排針依序焊上,最後完工如下圖所示,長排針方向如果是想插入麵包板,一般在和結時是將排針長的一端面向下,我的例子是排針長的一端是向上,這個看個人喜好了。

利用焊台夾住被焊接主板
焊接完成的成品



使用元件:
紅色LED x1 3mm (1.8~2.2VDC)
電阻 220 Ohm  1/4W x1
單心線或杜邦線  數條
Arduino Nano開發板


接線:

LED的工作電壓與電流:
  • 1.8-2.2VDC 順向壓降
  • 最大電流: 20mA
  • 建議工作電流: 16-18mA
首先,用歐姆定律估算一下LED限流電阻大小,我們使用D13 pin腳做LED on/off,on 時為輸出5V , off輸出為0V,根據ohm law估算 => (5V-1.8V)/16mA = 200 Ohm , 可以選用接近的阻值 220Ohm電阻,如果選用大一點的阻值LED就會變得比較暗。

線路接法,D13 腳位接到R1,在連接到LED的(+)正極,LED的(-)負極接到GND。如圖所示

接線圖


接下來打開Arduino IDE, 就是將範例sketch程式檔 (附檔名 *.ino)  download到nano開發板上。

Step1: 將USB cable 一端接到電腦端的USB接口,另一端接到Nano的USB接口
第一次將Nano接上電腦時,Windows作業系統會自動安裝對應的USB-Serial driver (我的系統偵測到CH340  USB-serial driver (COM11),COM port不一定是11,請查一下裝置管理員記下COM 的數字。
COM port位置



Step2: 打開Arduino IDE (最新版v1.6.8 download), Tools -> board 選擇Arduino Nano; Port選擇COM11 (請按自己電腦設定)

Arduino IDE設定
Step3. 將下面範例程式做編譯,在IDE的上面選單 Sketch -> Upload,然後上傳到Nano開發板,如果編譯沒有error,程式可以正常執行。


程式碼:
#define Led_pin 13
String str("");
long num;

void setup()
{
Serial.begin(9600);
Serial.println("nano ready...");
pinMode(Led_pin , OUTPUT );
}

void loop()
{
if(Serial.available())
{
str = Serial.readString();
num = str.toInt();
Serial.print("blink time (msec) = "); Serial.println(num);
delay(100);
}
if(num >0 ) Blink(num);
}
void Blink(unsigned int tt)
{
digitalWrite(Led_pin, HIGH );
delay(tt);
digitalWrite(Led_pin, LOW );
delay(tt);
}

測試結果:

Step4. 程式執行後,打開Tools -> Serial Monitor (右下角記得Baud rate要設定在9600) ,因為我們程式中設定以9600bps速度做序列傳送資料,否則看不到輸出資料。

可以在serial monitor上輸入MircoSec,控制LED 閃動的間隔。你可以自己測試不同的時間間隔,觀察LED blink的情況。