愛體驗認證

2019年8月7日 星期三

Arduino程式語法參考_TCweng


Arduino 程式參考語法


結構:


  1. if
  2. if...else
  3. for


持續增加中,上一次更新時間 2019.8.8 , 11:33




for - arduino程式語法參考_TCweng

for


for 迴圈通常用來執行一連串的重複動作,且配合一個計數器來判斷何時停止這個迴圈的動作,因齊因其擁有重複執行動作的特性,也常被用來處理陣列的資料

for ( 定義計數器,結束條件,計數器計算 ){
}

for ( int a = 1 , a<500 , a++){
  Serial.println(a);
}


以上程式會在序列埠中依序顯示出1~500的數字,也就是說a小於500時,for迴圈裡的程式就會一直被執行,而且執行一次a就會加一

if...else - arduino程式語法參考_TCweng

if...else


if...else 程式在執行時更細微的區分相對應數值的執行動作,例如當x值大於50時要讓燈泡保持明亮,而低於50時則關閉燈泡,程式可以這樣寫

if (x > 50){
  digitalWrite(13,HIGH);
}
else{
  digitalWrite(13,LOW);
}



甚至近一步區分x值是在25~50的區間要使燈泡閃爍,可以添加else if 程式,來進一步判斷x值的大小

if (x > 50){
  digitalWrite(13,HIGH);  //高於50時,保持燈泡明亮
}
else if (x>25){
  digitalWrite(13,HIGH);  //25~50區間時,讓燈泡閃爍
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}
else{
  digitalWrite(13,LOW);  //低於25,讓燈泡保持關閉
}


回總攬
https://tcweng.blogspot.com/2019/08/arduinotcweng.html

if - arduino程式語法參考_TCweng

if (條件)



if 配合條件,可以用來判斷某一段程式執行的時機,例如要在x值大於100的時候讓13腳位保持高電位,讓燈泡亮起,那程式可以這樣寫

if(x>100){
    digitalWrite(13,HIGH);
  }



而 if 條件式存在新手非常容易犯的錯誤!!!!在 if (條件) 裡,不能出現 if (x=60) 這樣的語法,因為這樣會導致x直接變成60,而不是判斷x是否為60,所以要這樣寫才對

loop() - arduino程式語法參考_TCweng

loop()


在Arduino通電並執行完setup()迴圈裡的程式後,便會換成執行loop()迴圈裡的程式,而且這個迴圈裡的程式便會一直重複執行


範例:

int Pin = 3;

void setup(){
  Serial.begin(9600);
  pinMode(Pin, INPUT);

}

void loop(){
  digitalWrite(Pin,HIGH);
  delay(1000);
  digitalWrite(Pin,LOW);
  delay(1000);

}


以上執行時,3號腳位會間隔一秒執行高電壓和低電壓的交替輸出,如果在3號腳位插上一顆燈泡,也就會是間隔一秒的亮跟暗


回總攬



setup() - arduino程式語法參考_TCweng

setup()


在"setup"迴圈裡,程式只會在Arduino通電時執行一次,因此腳位的定義(輸入,輸出),感應器的初始化設定通常在這裡執行

360度連續旋轉伺服馬達_TCweng


360度連續旋轉伺服馬達(MG 996R)教學


















之前在這篇  伺服馬達(Tower Pro SG90) 教學 https://tcweng.blogspot.com/2019/08/tower-pro-sg90-tcweng.html  中,就有提到如何四步驟記清楚控制伺服馬達控制的技巧,不論是哪一種伺服馬達基本上都是一樣,這次可360度旋轉的伺服馬達也不例外

那為何還要寫這篇文章呢??

因為要進一步地跟大家說明"連續旋轉的伺服機"和"一般限制180度的伺服機"控制上有和些微的不同,如果有自己先用上一篇文章的程式實驗過的讀者就知道,連續旋轉的伺服機會一直旋轉停不下來的問題,甚至某些時候還會反過來轉,那為何會這樣呢?

在同一個程式裡,面對兩種的伺服機,myservo.write(i);  這句話代表著兩種不同的含意,在180度限制的伺服機裡,這句話直接告訴伺服機要轉到哪裡,也就是說你叫他轉到90度,他就轉到90度,而連續旋轉的伺服機就不一樣了,myservo.write(i);  這句話是命令他的速度,所以你在程式裡面要讓他轉到某一個位置時,就不能直接命令他要到哪個角度,而是要給他一個速度和時間,讓他轉到你要的位置


舉個例子:

#include <Servo.h>

Servo myservo; // 建立Servo物件

void setup() 

  myservo.attach(9); // 伺服馬達的訊號線


void loop() {
    myservo.write(60); 
    delay(600);
myservo.write(90); 

}


前面的語法跟普通伺服馬達一模一樣,不一樣的是在loop迴圈裡面,命令他以"60"的速度旋轉0.6秒後停下來的意思


在速度的部分

正轉是0~89之間
反轉是91~180之間
而要讓馬達停下來就是90
當然每個馬達都可以能有誤差
可能要寫到92,93他才會處於暫停的狀態


接線一樣是棕色(黑)接到arduino的GND,紅色接到5V,橘色接到arduino的9號

























下圖兩種馬達長的一模一樣,但有一顆是360度旋轉的,有一顆是180度限制旋轉的,所以在購買的時候要看清楚,才不會買到自己不需要的形式




伺服馬達(Tower Pro SG90) 教學_TCweng


伺服馬達 (Tower Pro SG90) 教學


伺服馬達也可以叫做伺服機,常常用來製作舵機....等等



而關於轉速,扭矩,角度範圍,就得依據不同廠商的商品而定,並不是每一家廠商的伺服機都一模一樣,但大部分的伺服機都似在0~180度的範圍,甚至還有360度旋轉的伺服機


至於怎麼控制伺服機這件事情,就比選擇伺服機還要來的簡單,因為不管是一般180度限制範圍旋轉的伺服機或是可以360度不同旋轉的伺服機,用的語法幾乎一模一樣只有用的時間點的不同


360度旋轉的伺服機可以到這個網址參考:
https://tcweng.blogspot.com/2019/08/360tcweng.html



底下直接給一個程式當作例子:


#include <Servo.h>

Servo myservo; // 建立Servo物件

void setup()
{
myservo.attach(9); // 伺服馬達的訊號線接腳
}

void loop()
{
for(int i = 0; i <= 180; i+=1){
myservo.write(i); // 使用write,告訴伺服機角度,從0度轉到180度
delay(20);
}
for(int i = 180; i >= 0; i-=1){
myservo.write(i);// 使用write,告訴伺服機角度,從180度轉到0度
delay(20);
}
}




上面這個程式是較伺服機從0轉到180度,再從180度反轉回來,如此反覆,而從這個程式裡面我們可以分解出四大部分,每次只要記住這四個步驟,操控伺服機就沒什麼問題了


第一步就是呼叫我們的 函示庫
#include <Servo.h>


第二步是建立一個伺服機物件
Servo myservo;



以上這兩句都必須要在void setup() 之前


第三步定義伺服機接腳,表示伺服機訊號線接到9號的意思
myservo.attach(9);


最後一步就是告訴伺服機要轉到哪裡啦~~
所以這句話放在哪裡都可以,只要在myservo.attach(9);這句話之後就沒問題了


接線的部分



















棕色(黑色)接到arduino的GND
紅色就是arduino的5V(大部分)
而橘色或是其他顏色的線就是我們的訊號線
範例裡面我們接到9號的位置



最後再舉個例子複習一下:

#include <Servo.h>

Servo myservo; // 建立Servo物件

void setup()
{
myservo.attach(9); // 伺服馬達的訊號線接腳
myservo.write(180);// 使用write,告訴伺服機轉到180度
}

void loop() {
delay(2000);//延遲兩秒
myservo.write(0); // 使用write,告訴伺服機轉到0度
}




補充伺服機控制的小知識:

一般伺服機透過訊號線傳送PWM脈波來控制旋轉角度,而這個訊號必須每秒重複50次(50Hz),而訊號持續的長短便代表了伺服機該轉動到什麼位置,假設範圍從1.0ms到2.0ms(millisecond,毫秒,千分之一秒),則中間值是1.5ms;那1.0ms就是角度0度,1.5ms就是90度,2.0ms則是轉到底180度。

使用前也必須先了解伺服機電壓,以及最大旋轉角度...等等,如果超出了範圍,可能導致伺服機的損壞

2019年6月26日 星期三

考機車駕照懶人包-體檢篇


前幾天去體檢的時候,去丟臉了一波…………跟我說體檢跟考照的照片要一樣,我體檢拿了兩張不一樣大小的照片去體檢,就被打槍回來了,而且櫃檯的人還不會處理,害我尷尬了很久阿阿阿……

所以就幫大家整理一下體檢、考照需要準備什麼,還有什麼需要注意的~

1. 首先,每個區域的都有特定的體檢醫院,不是每一家醫院都可以,所以一定要先查好附近的那一家醫院可以再過去,不然會跟我一樣丟臉😅😭

這裡附上一個網站
可以查詢自己地區的體檢醫院
https://tcweng.blogspot.com/2019/06/tcweng.html

還有醫院體檢的時間也要查一下,每個醫院都不太一樣

2. 身份證,健保卡
身份證一定要帶,健保卡因為我沒去過那家醫院,所以那時候他也有跟我要,所以以防萬一,還是都帶著比較好


3. 一吋照片兩張
這邊的兩張照片一定要一樣的,跟考照要交的照片也必須一樣,大小不同其實也行,不過他會問你考照要用那一張什麼的,會有點麻煩,所以還是都帶一樣的會好一點


4. 掛號
我去的醫院有服務櫃臺,跟他說一下要考駕照體檢,他就會拿兩張表給你填,填好之後就可以抽號碼牌掛號了,那天繳了150元,不知道其他醫院是不是都一樣


5. 體檢內容
主要就是檢驗你的視力,單眼左.右兩眼裸視目力達0.5以上.矯正後視力各達0.6以上者.兩眼裸視力達0.6以上.矯正視力達0.8以上
還有兩耳的辨聲能力跟四肢活動靈活等等




2019年6月20日 星期四

PUBG 手機版吃雞儲值教學 台服 _TCweng


之前吃雞想要買個自己要的裝備,就非得用中華電信帳單或是信用卡才能儲值,真是苦了我們這些嫌麻煩,又怕線上刷信用卡不安全的人……

不過現在GASH終於開通儲值PUBG的管道了,只要到便利商店買個GASH的儲值卡就能到這個網站去登錄,不到幾秒遊戲裡面就有錢啦~~~真的超方便

儲值連結網址:
http://bit.ly/2vRcf8k


首先先到遊戲裡面找你的遊戲uid
(就是在遊戲點擊右上角頭像後,最上面那排的數字)



然後選擇GASH點數卡的選項,並按下一步



裡面也有對照的金額



輸入密碼跟電話後點擊進行儲值
就完成儲值囉~~


2019年5月22日 星期三

TCweng_利用紅外線感應器亮燈判斷人體移動教學

這次用的這顆主動式紅外線感測器SKU5242,可以判斷人體的移動還有黑線的有無,如果不是購買這個型號的紅外線也沒關係,因為基本上所有的紅外線感應器功能跟接腳都是大同小異,不會差距太大










材料:

1. LED燈兩顆
2. 紅外線感應器兩顆
3. UNO板一塊

!!!!!如果只有一個紅外線也沒關係,底下有另一種程式







接線:















VCC   >>>    5V
GND   >>>   GND
D0       >>>   9or10


!!!!如果紅外線感應器有A0的接腳,暫時可先不用理會沒關係,那是類比的接腳,比較少用到,之後如果有需要會再另外解釋






程式:(兩塊紅外線感應器版本)

void setup() {
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(9,INPUT);
  pinMode(10,INPUT);
  
}

void loop() {
  
    if(digitalRead(9)==0){
      digitalWrite(6,HIGH);
      digitalWrite(6,LOW);
    }

    if(digitalRead(10)==0){
      digitalWrite(7,HIGH);
      digitalWrite(7,LOW);
    }
    

}





程式:(一塊紅外線感應器版本)

void setup() {
  pinMode(6,OUTPUT);
  pinMode(9,INPUT);
  
}

void loop() {
  
    if(digitalRead(9)==0){
      digitalWrite(6,HIGH);
      digitalWrite(6,LOW);
    }

    
}

2019年5月18日 星期六

簡易機械手臂 mearm機械手臂 組裝_TCweng

mearm機械手臂是四顆伺服馬達控制的機械手臂,只有殼的話售價大概五~六百塊錢左右,如果包含伺服機的話大概就會落在1000多塊錢,當然伺服機也有分高低扭力..等等的,這價錢就會有差

這篇文章就先說明組裝的步驟,之後會再出一篇怎麼控制她的文章,會再補貼網址到這邊~



所需零件
   - 伺服機四顆
   - mearm機械手臂一組(包含螺絲等工具)



打開後裡面會有四片壓克力切成的零件版




全拆開後會長這樣
有一片底板是要留下來的喔,那是手臂的底座
建議把模全部都撕掉
除了美觀之外
還有貼紙可能會影響到他的動作等等



組裝的第一步需要這些零件
25mm螺絲四顆
螺帽四個
底板




把他鎖像下圖這樣
先不用鎖太緊沒關係,之後還有其他步驟



伺服機一顆
8mm螺絲兩顆
以下兩種壓克力板




鎖成像下圖這樣
要注意螺絲方向跟壓克力板的方向




接著把兩塊鎖起來
這時候底下四顆螺帽就能鎖緊囉
不要懷疑伺服機方向這樣鎖
螺絲才會是正的喔



接著是其中一邊手臂的組裝
四種壓克力板
三顆伺服機包裝裡的螺絲(兩尖一平)
伺服機的旋臂
8mm螺絲兩顆


這張照片比較不清楚
白色那塊壓克力板的洞洞是在左邊喔


這個步驟要拿兩顆伺服機的尖頭螺絲鎖起來
都是鎖在從外面數來的第二個洞
然後懸臂中間凸出來的地方是要剛好塞在壓克力板裡面喔

這是另一個角度
白色那個懸臂現在是在上面


把兩個零件鎖起來
注意!!這個狀態應該要是逆時針轉到最底的程度喔


伺服機一顆
伺服機裡面的三顆螺絲
伺服機旋臂一個
四個壓克力板


上面拍的零件TC拿錯了
其中有一個要換成這個中間有圓洞的
抱歉


組裝後會變這樣

他的反面



手臂的部分也是照之前的方法鎖起來



這邊TC組裝起來才發現是錯誤
要再右轉90度後
逆時針是轉不動的狀態才對
也就是說
先逆時針轉到底
然後把旋臂拔掉
安裝在現在又轉90度的位置


接著再把左邊的那根桿子鎖上去



接著是底板的部分


這裡又出糗一次.....
那個伺服機的白色旋臂應該是鎖在另外一面才對



三種壓克力板
10mm螺絲一顆


三個鎖在一起後會這樣



接著開始要有成行出現囉
需要12mm螺絲一顆
螺帽一個
壓克力板一個
以及上面組完的三個零件



先把這兩片壓克版鎖在一起
需要一顆螺絲及一個螺帽



底板也一起卡進去


三個旋臂的那個也卡在底板那邊

換個角度看


壓克力板一個
12mm螺絲一顆
螺帽一個


這裡要注意卡進去的方向
比較容易因為硬卡而斷掉



接著一樣用螺絲螺帽鎖起來


接著拿一條橫桿還有10mm螺絲鎖成下圖這樣




12mm螺絲4顆(有兩個螺絲是下一個步驟用的)
螺帽四個


鎖成下圖這樣

建議先把螺帽放進去
在插螺絲會比較順手

鎖完會變這樣



接著需要這片壓克力板


鎖在前面這兩條橫桿的中間


然後把他跟底板連在一起
會跟下面三張圖一樣



裡面記得的要把螺絲鎖好



6mm螺絲兩個
壓克力板一塊


把他鎖在左邊兩條橫桿上



6mm螺絲一個
10mm螺絲兩個
五個壓克力板






接下來這個步驟需要一點點的暴力
需要一點力氣跟技巧卡進去
如果真的不行的話先不裝也沒關西



終於到最後夾爪的部分了
需要10種壓克力板
12mm螺絲一個
6mm螺絲兩個
8mm螺絲六個
伺服機一個


這個步驟需要三塊壓克力板
旁邊的洞有大有小個要放一個零件


然後拿8mm的螺絲鎖進去
這邊少拍一張圖片
上面的那片是上兩張圖最上面又邊數來的第二塊
這兩片兩側都有大小洞之分要注意一下



拿出這片壓克力板
還有這種伺服機的旋臂
還有一個伺服機的尖頭螺絲






這樣應該是要順時針轉到底的程度
中間的螺絲也記得要鎖上去


再拿另一片壓克力板
還有6mm螺絲鎖在一起



這裡開始會抽象一點
需要慢慢來

這裡要用8mm螺絲鎖上兩片壓克力(藍,白)


另一邊也是要鎖兩片上去
有兩張圖可以看



這裡要拿8mm螺絲鎖起來(最下面的螺絲)


這裡需要8mm螺絲三個
很難鎖,所以如果用10mm螺絲會好一點



把夾爪跟機台主體鎖起來
這裡的螺絲只要鎖到不會晃的程度就好
不能鎖到夾爪不能轉動






完成囉~~~~~