Category Archives: 123D Circuis

[123D Circuit] 丟骰子遊戲 – 海大機械作業

上週阿吉老師在海洋大學 Arduino 微處理機課程的作業,用丟骰子遊戲來教隨機數與 if / else 判斷式。按下Arduino 的按鈕之後,會根據莊家與玩家各自的三顆骰子點數合來亮起兩顆 LED 其中之一。本範例感謝海洋大學機械系劉哲甫同學分享。

[iframe width=”725″ height=”448″ src=”http://123d.circuits.io/circuits/652275-hw_0317_throwthedice/embed#breadboard” frameborder=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no”]

程式碼:

int player1 = 4;
int player2 = 5;
int bsensor = 0;
int bswitch = 7;
int randomMax = 6;
int randommin = 1;
int Point = 0;
int a=0;
int b=0;

void setup() {
  Serial.begin(9600);
  Serial.println("Ready......");
  pinMode(player1, OUTPUT);
  pinMode(player2, OUTPUT);
  pinMode(bswitch, INPUT);
  delay(500);
}

void loop() {
  digitalWrite(player1,HIGH);
  delay(100);
  digitalWrite(player2,HIGH);
  delay(100);
  Serial.println("Player1 throw the dice");
  bsensor=digitalRead(bswitch);
  while(!bsensor){bsensor=digitalRead(bswitch);}
  for(int i=1;i<=3;i++){
    Point=random(randommin,randomMax);
    Serial.print("Dice");
    Serial.print(i);
    Serial.print("=");
    Serial.println(Point);
    a=a+Point;
    delay(100);
  }
  delay(500);
  Serial.println("Player2 throw the dice");
  bsensor=digitalRead(bswitch);
  while(!bsensor){bsensor=digitalRead(bswitch);}
  for(int i=1;i<=3;i++){
    Point=random(randommin,randomMax);
    Serial.print("Dice");
    Serial.print(i);
    Serial.print("=");
    Serial.println(Point);
    b=b+Point;
    delay(100);
  }
  Serial.println("Counting......");
  delay(1000);
  Serial.print("Player1 point=");
  Serial.println(a);
  Serial.print("Player2 point=");
  Serial.println(b);
  Serial.println("Push button to restart......");
  if(a<b){
    digitalWrite(player2,LOW);
    delay(100);
  }
  else{
    digitalWrite(player1,LOW);
    delay(100);
  }
  bsensor=digitalRead(bswitch);
  while(!bsensor){bsensor=digitalRead(bswitch);}
  a=0;
  b=0;
  digitalWrite(player1,HIGH);
  delay(100);
  digitalWrite(player2,HIGH);
  delay(500);           
}

[123D Circuit] 一元二次方程式公式解

這是本周海洋大學與元智大學的課堂作業,示範各種算術運算子以及副程式傳值練習。ax^2 + bx +c = 0 的一元二次方程式公式解是 (QQ, 為什麼還要算這種東西…):

用程式語法來表示就是這樣:

(-b + sqrt(pow(b,2)-4*a*c))/(2*a)  (-b  sqrt(pow(b,2)-4*a*c))/(2*a)

未命名

code 如下,直接上傳到 Arduino 就可以在 Serial Monitor 看到結果,或是用 123D Circuit 來線上模擬也可以喔。 x^2 -2x + 1 的兩個根都是 1 ,您算對了嗎?

void setup() {
  Serial.begin(9600);  
}

void loop() {
  formula(1,-6,8);
  delay(2000);
}

void formula(int a, int b, int c){
   float result1 = (-b + sqrt(pow(b,2)-4*a*c))/(2*a);
   Serial.print(result1);
   Serial.print(", ");
   float result2 = (-b - sqrt(pow(b,2)-4*a*c))/(2*a);
   Serial.println(result2);    
}

 

123D Circuit 更新 – 可模擬RGB LED 與直流馬達

由 AutoDesk 公司推出的 123D 系列軟體,其中 123D Circuit 可以線上模擬電路以及 Arduino 執行狀況,很適合用來教學。

之前的版本中,RGB LED 與 直流馬達都是無法模擬的,改版之後就可以了,您可以在畫面上看到 RGB LED 的顏色變化以及直流馬達的速度變化。

阿吉老師上學期在海洋大學教了一學期的 Arduino ,就有用 123D Circuit 來教學。相關文章請點我

螢幕快照 2014-10-16 上午1.42.36

 

請由此來看以上程式的模擬效果,可以看到 RGB LED 的顏色與馬達轉動的變化。

[iframe width=”725″ height=”448″ src=”http://123d.circuits.io/circuits/378962-the-unnamed-circuit/embed#breadboard” frameborder=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no”]

在此有一點奇怪,Arduino 是無法直接控制直流馬達的才對,但是這樣接居然會動?123D Circuit 沒有說明這個馬達的規格,但是點選馬達之後,可看到速度(speed constant),速度單位以及負載(load)都可以調整。負載愈大,馬達就轉愈慢甚至無法轉動。

螢幕快照 2014-10-16 上午1.46.13   螢幕快照 2014-10-16 上午1.52.12

新增元件的畫面也不一樣了,可以看到官方的用心啊~

螢幕快照 2014-10-16 上午1.18.34

Circuit Scribe – 電路用畫的就會通

Circuit Scribe 是一套直接用墨水筆來畫電路的電子教學套件,主打當然是可導電的墨水筆啦。這類商品最近愈來愈多,不過 Circuit Scribe 標榜方便以及強健性(就是畫出來的電路)您可在 123D Circuits 官方網站上直接訂購。

ggg

來看看影片吧,電路用畫的就會通,感覺真的很方便呢

[youtube=”https://www.youtube.com/watch?feature=player_embedded&v=Sw5lfbhmyt0″]

還有販售現成的套件包、模組與周邊商品,生意頭腦很不錯啊。並且特別強調耐用性,方便的同時也要耐用才行囉

Draw circuits on paper with Circuit Scribe

套件包由簡單到完整版都有,下圖是 Developer Kit 豪華版,包含了所有的東西。

模組包含了電源類、連接器類、輸入類與輸出類,種類相當齊全。

周邊商品的話則可以單買墨水筆以及筆記本

 

123D Circuit 新元件 – Oscillator 振盪器

Screen Shot 2014-04-25 at 10.03.31 PM

123D Circuit 推出新元件了:振盪器 Oscillator。週期與電壓都可以自由調整,這樣就能在 123D Circuit 模擬更多電路實驗了。不太清楚振蕩器功用的朋友,可以參考維基百科的說明

來看看一個簡單的範例吧,按下執行箭頭就可以執行,它會產生兩種波形。

[iframe width=”725″ height=”448″ src=”http://123d.circuits.io/circuits/195514-simple-74hc14-oscillator/embed” frameborder=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no”]

Screen Shot 2014-04-25 at 10.21.34 PM

[123D Circuit] 使用Serial Monitor 輸入 aswd 控制LED矩陣移動 – 海大機械作業

九個LED排成陣列,在Serial Monitor 按下 a s w d 四個鍵,會讓 LED 燈亮滅,產生移動的效果。(因為123D Circuits a沒有 LED Matrix 所以用這種方式土炮)

這是阿吉老師在海洋大學機械系出的回家作業,班上一位大一同學的作品,寫得還不錯,分享給大家

[iframe width=”725″ height=”448″ src=”http://123d.circuits.io/circuits/148242-hw_3/embed” frameborder=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no”]

 請注意,123D circuit 在網頁嵌入時無法顯示 Serial Monitor,歡迎您自行建立一個 123D Circuit 專案來玩玩看。

未命名

相關123D Circuits教學文章請按我

Code is here:

int x=7,t;

void setup(){
   for(t=1;t<=9;t++)
   { pinMode(t, OUTPUT); }
   digitalWrite(7, HIGH);
   Serial.begin(9600);
}

void loop(){
   if(Serial.available()>0){
      digitalWrite(x, LOW);
      switch (Serial.read()){
         case 'w':
            x = x%3==0? x-2:x+1 ;
            break;
         case 's':
            x = x%3==1? x+2:x-1 ;
            break;
         case 'a':
            x = x+3>9? x-6:x+3;
            break;
         case 'd':
            x = x-3<1? x+6:x-3;
            break;
         default:
            Serial.println("Wrong!!");
            break;
      }
     digitalWrite(x, HIGH);
   }
}