2012年11月8日 星期四

Arduino序列埠serial port hello world


////在arduino寫入持續送hello world
void setup()                    
{Serial.begin(9600);    // set up Serial library at 9600 bps}
void loop()                       
{ delay(9000); 
 Serial.println("Hello world!");  // prints hello with ending line break 
}

然後使用screen在ubuntu接收
screen /dev/ttyACM0
//我的usb接上去代號是ttyACM0 
就可以看到螢幕上一直跳hello world
離開screen 可以按ctrl a c

3 則留言:

  1. 或者使用ttylog
    ttylog -f -d /dev/ttyACM0 -b 9600

    回覆刪除
  2. 卡了那麼多天promission denied後來朋友叫我在command line下sudo php xxx.php後可以執行 就去把ttyACM0 chmod變成777就OK了

    回覆刪除
  3. 這是在網路上找的一個使用php控制arduino led燈開關的簡單程式
    http://missionduke.com/wordpress/arduino-projects/
    http://code.google.com/p/php-serial/
    使用的程式就是上面這個rizwank@uwink.com寫的php_serial.class.php程式
    missionduke寫了一個簡單的serialledcontrol.php呼叫這個程式
    在arduino寫入SerialLEDComm.pde就會從序列埠接收0,1,2,3四種message控制
    紅綠兩個led開和關,收到0就綠燈亮1就綠燈關2就紅燈亮3就紅燈關


    一開始要先確認自己的arduino usb是哪個傳輸埠 可以從arduino選單下看到是COM1
    COM2,還是/dev/ttyxxx,但是arduino要用root執行才能選擇傳輸埠,不然會不能選
    arduino serialport gray out的問題是在下面的網址看到的,
    http://blog.markloiseau.com/2012/05/install-arduino-ubuntu/
    網址內有說可以用dmesg指令在linux查詢序列埠是哪個像我的ttyACM0埠查出來會是
    [20092.950139] usb 3-4: >Product: Arduino Mega 2560
    [20094.901518] cdc_acm 3-4:1.0: >ttyACM0: USB ACM device
    blah..blah..blah...之類的訊息

    我的php環境是使用xampp和linux版本lampp,所以裝好後只要把兩個PHP檔案丟進去
    php的根目錄/opt/lampp/htdocs就可以在localhost執行,因為序列埠不同,需要
    在serialledcontrol.php改成自己的埠/dev/ttyACM0然後在php_serial.class.php的
    function deviceSet ($device)那邊把/dev/ttyS改成/dev/tty就好

    一開始我不能用改來來去,有遇到一些變數undefine的問題,最後卡在一個權限問題
    promission denied,問人以後發現在php -a的command line下可以執行
    sudo php xxx.php也可以執行,才去改權限,把/dev/ttyACM0改成chmod 777
    然後就可以執行了,php_serial.class.php我自己亂顯示參數浪費一點時間,
    除了deviveset那邊要注意一下自己的序列埠,好像就沒有遇到其他問題

    回覆刪除