2015年2月27日 星期五

Python-Python for Window

目前版本有 : 2.7 、 3.3
目前互不支援,但2.7有較多第三方支援

------ 如何安裝------

1 . 請至官方網站下載 : python ( 像是 Java 的 SDK )

目前安裝 2.7版本
安裝目標 : D:\Python ( 可依個人需求更改,但要記得位置 )

2 . 新增環境變數 : Path -> ;D:\Python

------ 如何執行 ------
目前有 Window 有幾種方法執行 ( 二選一 ):

1 . 命令提示字元 ( cmd ) 內 :
( 寫入 D: -> python )( 對應安裝的位置 )

2 . 下載 : pythonWin
(Files -> pywin32 -> Build219 -> pywin32-219.win32-py2.7.exe)

以下是執行的畫面 :














備註 : 有大大問,哪一種比較實用。因為目前沒深入研究
對版大來說沒有明顯的差異。

------ 離開指令 ------

exit()     ( 離開 )



參考資料 : 初試 Python
參考資料 : [教學] 如何在 Windows 平台建立 Python 編程環境
參考資料 : Python免費學習資源、推薦書籍

2015年2月25日 星期三

Arduino-超聲感測器

這次測試的是超聲波感測器,

HC-SR04
Vcc : 5V
Trig : 2
Echo : 3
Gnd : Gnd

1 . 參考來源 : 不錯
2 . 參考來源 : 多工

2015年2月23日 星期一

Arduino-步進馬達 A3967驅動板


利用兩輸入腳位控制步進馬達( 兩相四線 )


//定義腳位
#define DIR_PIN 2
#define STEP_PIN 3

//腳位模式
void setup() { 
  pinMode(DIR_PIN, OUTPUT); 
  pinMode(STEP_PIN, OUTPUT); 
} 

void loop(){ 

  //rotate a specific number of degrees 
  rotateDeg(360, 1); 
  delay(1000);

  rotateDeg(-360, .1);  //reverse
  delay(1000); 


  //rotate a specific number of microsteps (8 microsteps per step)
  //a 200 step stepper would take 1600 micro steps for one full revolution
  rotate(1600, .5); 
  delay(1000); 

  rotate(-1600, .25); //reverse
  delay(1000); 
}


//迴轉
void rotate(int steps, float speed){ 
  
  //先確認要正/逆時鐘,所以先確認腳位的高低電壓
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);
      
  digitalWrite(DIR_PIN,dir); 

  float usDelay = (1/speed) * 70;

  
  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
  } 
} 

//旋轉角度
void rotateDeg(float deg, float speed){ 
  //rotate a specific number of degrees (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (deg > 0)? HIGH:LOW;
  digitalWrite(DIR_PIN,dir); 

  int steps = abs(deg)*(1/0.225);
  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
  } 
}

A3967 DateSheet : 連結在此
參考網址 : 連結在此

歡迎轉載,請註明出處

2015年2月16日 星期一

Java-線程( 二 )

Volatile boolean

Thread.yield( );
讓出處理器時間,接下來該誰執行是未知數

Thread.join(  );
會等待此執行續完成後,才接下來執行別的執行續

2015年2月15日 星期日

JAVA-線程( 一 )

進程 : 一個班級
線程 : 班級內的學生
一個線程可有多的線程

線程的溝通可以是 :
1 . 同步 : 一起合作完成海報
2 . 互斥 : 筆記同時只能借給一個人,其餘就只能等待

Thread and Runnable

public class actor extends Thread{

    public void run() {

        System.out.println(getName() + " 開始演出 ~!");

        for(int i=1; i<11; i++){
            System.out.println(getName()+" 表演中 "+i +"次 !");
            if(i %5 == 0){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

        System.out.println(getName() + " 演出結束 !");
    }

    public static void main(String []arg0){

        Thread actor_1 = new actor();
        actor_1.setName("Mr.Thread");
        actor_1.start();

        Thread actor_2 = new Thread(new actors(), "Ms.Runnable");
        actor_2.start();

    }

}

class actors implements Runnable{

    public void run() {
        System.out.println(Thread.currentThread().getName() + " 開始演出 ~!");

        for(int i=1; i<11; i++){
            System.out.println(Thread.currentThread().getName()+" 表演中 "+i +"次 !");
            if(i %5 == 0){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

        System.out.println(Thread.currentThread().getName() + " 演出結束 !");

    }
}



Output :
Mr.Thread 開始演出 ~!
Mr.Thread 表演中 1次 !
Mr.Thread 表演中 2次 !
Mr.Thread 表演中 3次 !
Mr.Thread 表演中 4次 !
Mr.Thread 表演中 5次 !
Ms.Runnable 開始演出 ~!
Ms.Runnable 表演中 1次 !
Ms.Runnable 表演中 2次 !
Ms.Runnable 表演中 3次 !
Ms.Runnable 表演中 4次 !
Ms.Runnable 表演中 5次 !
Mr.Thread 表演中 6次 !
Mr.Thread 表演中 7次 !
Mr.Thread 表演中 8次 !
Mr.Thread 表演中 9次 !
Mr.Thread 表演中 10次 !
Ms.Runnable 表演中 6次 !
Ms.Runnable 表演中 7次 !
Ms.Runnable 表演中 8次 !
Ms.Runnable 表演中 9次 !
Ms.Runnable 表演中 10次 !
Mr.Thread 演出結束 !
Ms.Runnable 演出結束 !

來源為 : 慕課網教學筆記

2015年2月8日 星期日

Arduino-步進馬達+A4988步進馬達驅動晶片

Sample :
http://www.geeetech.com/wiki/index.php/StepStick_A4988_Stepper_Driver_Module
http://nxtmarket.info/item/18857461634

Vedio :
https://www.youtube.com/watch?v=PrV-SLxIIFE
https://www.youtube.com/watch?v=lvaBb-rPepY
https://www.youtube.com/watch?v=xEcgYMPkykA


利用PWM腳位控制、9110模組控制

int dirPin = 8;
int stepperPin = 7;
void setup()
{
    pinMode(dirPin, OUTPUT);
    pinMode(stepperPin, OUTPUT);
}


void step(boolean dir,int steps) 
{
    digitalWrite(dirPin,dir);
    delay(50);
    for(int i=0;i<steps;i++){
        digitalWrite(stepperPin, HIGH);
        delayMicroseconds(800);
        digitalWrite(stepperPin, LOW);
        delayMicroseconds(800); 
        }
}

void loop()
{
    step(true,1600);
    delay(500);
    step(false,1600*5);
    delay(500);
}


void setup(){

    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
}

void loop(){

    int i = 50;
  
    //順
    digitalWrite(4,HIGH);
    delay(i);
    digitalWrite(4,LOW);

    digitalWrite(5,HIGH);
    delay(i);
    digitalWrite(5,LOW);

/*
    //逆
    digitalWrite(6,HIGH);
    delay(i);
    digitalWrite(6,LOW);

    digitalWrite(7,HIGH);
    delay(i);
    digitalWrite(7,LOW);
  */
}



2015年2月7日 星期六

Arduino-紅外線 發送 Example

繼上次Lib重複事件後,結果紅外線發送又有衝突
這次直接刪除叫RobotMote Lib


Arduino-紅外線 發送/接收 證明實驗

這幾天測試紅外線一直遇到讓人無奈的事

挑選紅外線LED記得要慎選( 記得一定要問元件規格!!! )
水藍色紅外線LED有可能是發射也有可能是接收!
但深色( 不透光 )的紅外線接收器很大的機率就是接收器了

要慎選!!!
要慎選!!!
要慎選!!!

因為紅外線的波長人類的肉眼是無法分析的,所以一定要有一個測試方法
但光一個儀器動輒就是幾張小朋友
今天我們就以簡單的電路來實測紅外線 發射( 發送 ) / 接收 電路

電路圖如下 :
注意 :
1 . 串接LED前一定要接電阻,避免直接讓元件燒毀。
2 . 發送 / 接收 的紅外線LED腳位不一樣的。



















未收到紅外線訊號( 燈亮 ) :
















收到紅外線訊號 ( 熄滅 ) :















實驗結果 :

紅外線接收器屬於被動元件
若接收到紅外線,則元件產生變化,讓電路導通;反之,則無法導通。

歡迎轉載,請註明出處。