2021年6月18日

繪製 Arduino 電路圖

 如果要自己畫自己的 Arduino + 開放硬體 的電路圖,可以使用 Fritzing 這套軟體,不過

Version  0.9.6 之後就必須付費下載了。還好,官方網站仍然可以下載到 Version 0.9.3b 的免費版本



2021年6月15日

7段顯示器

先講心得:
單純的 7 段顯示器,其實就是把 8 顆 LED 燈做在一塊板子上,透過排列的方式表示數字。這種板子,訓練大腦思惟,入門的玩一次就好了,真的要用這塊板子顯示數字、溫度、各種文字訊息,太可怕了、太不方便了;所以才會有 MAX7219 這種 IC 來控制 8x8 矩陣顯示器、 8 位數顯示器( 如下圖,中間那塊 IC 就是 MAX7219 )。而如果要把這種 8 顆 LED、8x8 矩陣顯示器、MAX7219 給國小學生使用,難度較高。


 



 

參考網頁: https://blog.jmaker.com.tw/4digit7seg/

參考語法:https://create.arduino.cc/editor/jasonshow/a9703023-e24f-4e3f-b0a2-5e666ff9bed4/preview
( 上面網頁的輸出與圖不同,必須修改程式的輸出腳位為 6~12 。另外,圖片的店阻色環也標示錯誤,請參考我的影片才是 220 。 )


 

/*
//本範例會在七段顯示LED上從9倒數到0
//傑森創工製作
//https://www.facebook.com/jasonshow

//本例預設是用共陰的顯示器
//若用的是共陽,除了要把接地改成接到5V
//另外在每個數字的表現方法,也要把0和1反過來
//1表示LED on,0則是LED off

// 七段用到的Arduino pin: 6,7,8,9,10,11,12
// 右下角的點用pin 5

//Arduino完整學習套件賣場:https://bre.is/E221Yubs7


傑森創工賣場:https://goo.gl/EWoPQ4

傑森創工粉絲團:
https://www.facebook.com/jasonshow
 */


//以下的陣列包含了0-9各數字的表現方法
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                               { 0,1,1,0,0,0,0 },  // = 1
                               { 1,1,0,1,1,0,1 },  // = 2
                               { 1,1,1,1,0,0,1 },  // = 3
                               { 0,1,1,0,0,1,1 },  // = 4
                               { 1,0,1,1,0,1,1 },  // = 5
                               { 1,0,1,1,1,1,1 },  // = 6
                               { 1,1,1,0,0,0,0 },  // = 7
                               { 1,1,1,1,1,1,1 },  // = 8
                               { 1,1,1,0,0,1,1 }   // = 9
                               };

void setup() {                
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  pinMode(10, OUTPUT);   
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  writeDot(0);  // 一開始右下角的點就是不顯示的
}

void writeDot(byte dot) {  //顯示右下角小數點
  digitalWrite(5, dot);
}
    
void sevenSegWrite(byte digit) {  //顯示特定數字的副程式
  byte pin = 6;  //我們的七段顯示是從pin6開始的
  for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}

void loop() {
  //數字從9開始倒數,每個數字間隔1秒
  for (byte count = 10; count > 0; --count) {
   delay(1000);
   sevenSegWrite(count - 1);
  }
  delay(4000);
}


2021年6月12日

羅技 G102滑鼠拆下來的 RGB 燈

 這顆RGB燈,是從壞掉的滑鼠G102拆下來的,目前找到用Arduino讓它亮起來的方式,腳位定義:長(G)、短(+)、長(R)、短(B),這個是共陽;這顆 RGB 的效果比去電料行買一顆 $30 的還要好,色彩變化很鮮明、亮度很夠。( 256 x 256 x 256 = 16777216 ,所以官方公布1680 萬色 ) 



2021年6月2日

開放硬體規格說明

 http://qqtrading.com.my/

這個網站的說明正確度相當高,比起殘體中文來的好閱讀,繪製的圖解說明也很清楚、容易了解。

L298n 直流馬達驅動板

 網路上很多規格都是天下一大抄,說明也不完整,目前找到下方這個圖片才是最完整的。



接線的模擬圖


在樹莓派上面用L298n驅動直流馬達

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
chan_list = [29,31,33,35]
GPIO.setup(chan_list,GPIO.OUT)
GPIO.output(29, GPIO.HIGH)
GPIO.output(33, GPIO.HIGH)
GPIO.output(31, GPIO.HIGH)
GPIO.output(35, GPIO.HIGH)


import RPi.GPIO as GPIO
# 匯入樹莓派上的 GPIO 模組,才能使用樹莓派上的腳位

GPIO.setmode(GPIO.BOARD)
# 設定樹莓派上面的腳位編號規則,這邊使用 BOARD編號方式。
# BOARD編號方式:1~40 號實體位置編號。
# 還有另一種 BCM 的腳位編號規則,就是樹莓派板子上面 GPIO後面的數字

chan_list = [29,31,33,35]
# 設定要使用的腳位編號。( 陣列 )
# 如果只要使用 1 隻腳位,可以用 channel = 29

GPIO.setup(chan_list,GPIO.OUT)
# 將 chan_list 腳位定義為 輸出( OUT ) 模式

GPIO.output(29, GPIO.HIGH)
# 設定 29 號腳位為 高電位

GPIO.output(33, GPIO.LOW)
# 設定 31 號腳位為 低電位

GPIO.output(31, GPIO.HIGH)
# 設定 33 號腳位為 高電位

GPIO.output(35, GPIO.LOW)
# 設定 35 號腳位為 低電位
# 29、31 為控制 A 馬達驅動,高低、低高、低低、高高,各會讓馬達有不同動作。
# 33、35 為控制 B 馬達驅動,高低、低高、低低、高高,各會讓馬達有不同動作。


參考資料:
腳位 https://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/
樹莓派使用說明 https://dsalearning.github.io/aiot/raspberry-rpi-gpio/