2016年9月27日 星期二

SciCore運動學修改

之前在阿簡那邊看到的程式,自己測試了一下,有點小問題,但是看了半天抓不出bug,阿簡自己弄狀況也很好,因為搞不定所以就用大概相同的概念把原本超音波測距的程式改成運動學的。


繼續貪心的加功能-SciCore 多功能sensor

之前就想做還沒做的,就是RGB三色LED燈泡調控顏色的功能。要做這個其實蠻奢侈的,因為要控制三個燈泡,就要用到三個analog腳位讀取可變電阻的訊號,還要三個PWM(pulse width modulation)的 digital腳位來輸出訊號。arduino UNO上的PWM腳位在3, 5, 6, 9, 10, 11。其中11號之前被pH meter用掉了。所以就選擇6, 9 , 10 擔任 RGB腳位。



然後一開始就遇到一個大麻煩,因為原本的Arduino UNO上就已經佔用了A0, A1, A2三個腳位擔任不同功能。接下來RGB就要用到A3, A4, A5。但是A4, A5會影響LCD顯示,試了幾次都失敗。後來齋戒沐浴後,問了阿簡大神,知道A4, A5雖然可以並聯一些sensor,但是不能用在可變電阻這種上面,所以就調整一下。把A1, A2 負責壓力和pH計的腳位移動到A4, A5,A0負責檔位調控, A1~A3就都給RGB燈泡了。

這個解決了就簡單了,就是讀取A1~A3的數值,用map縮成0-255,再讓D6, 9, 10輸出就行。然後再讓LCD.print出RGB的數值,就變成可以調控顏色的燈泡囉。



#include <Wire.h>  // Arduino IDE 內建
// LCD I2C Library,從這裡可以下載:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // 設定 LCD I2C 位址
//以上是驅動LCD的部分


#define LEDR 6                    //定義輸出的腳位
#define LEDG 9
#define LEDB 1
int potPinR = 1;                       //設定輸入訊號的腳位
int potPinG = 2;
int potPinB = 3;
void setup() {                
  Serial.begin(9600);
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
}

int r = 0;
int g = 0;
int b = 0;

void loop() {
  r = analogRead(potPinR);                      
  r = map(r, 0, 1023, 0, 255);
  analogWrite(LEDR, r);

  g = analogRead(potPinG);
  g = map(g, 0, 1000, 0, 255);
  analogWrite(LEDG, g);
  
  b = analogRead(potPinB);
  b = map(b, 0, 1023, 0, 255);
  analogWrite(LEDB, b);
  Serial.print("R= ");
  Serial.print(r);
  Serial.print("  G= ");
  Serial.print(g);
  Serial.print("  B= "); 
  Serial.println(b);  
  lcd.setCursor(0,0);
  lcd.print("R= ");
  lcd.print(r);
  lcd.print(" G= ");
  lcd.print(g);
  lcd.setCursor(0,1);
  lcd.print("B= "); 
  lcd.print(b);  
}

可變電阻調控SciCore多功能sensors檔位

之前把SciCore做成多功能sensor了。主要就是希望可以一次組裝完,韌體灌完後,就可以一直使用。只要接電源,不用接電腦。

2016年9月24日 星期六

樂扣真空抽氣罐

因為前一陣子,有朋友提到真空罐越來越難買了。有時候要做一些氣壓的實驗比較難做,於是我就想那乾做自己做一個就好啦。

真空罐就兩個部分,一個是容器本身,一個是抽氣裝置。容器必須要能夠氣密,也要能夠堅固來抵抗內外大氣壓力差。抽氣裝置倒是簡單,最簡單就用一個三通管和一個針筒,來回切換三通管就能抽氣。不過這樣當然太麻煩了。最好是能夠讓針筒連續來會運作就能持續抽氣,這就要用到多一點的元件的。我共用了兩個三向閥和兩個單向閥做這件事情。

容器的部份,我挑了樂扣來做。原因是樂扣的氣密一向做的不錯,蓋子也夠厚夠硬。只要在上面鑽個洞,加個氣嘴就完成了加工。

連續抽氣裝置倒是試了一陣子,因為一開始想錯了,能抽氣但是不能方便的把氣體放回容器。後來調了一陣子,發現三向閥和單向閥的「邏輯氣路」也是很有趣的運算思維訓練勒。