FrontPage

2017年

6/28(水)マイコンぺ2

マトリクスLEDを使うにあたって、libraryを作成した
まず、マトリクスLEDのpin番号とArduinoの番号を対応させる(なるべくわかりやすく)
pixelは配列で考えた方がわかりやすいのでpixcel[8][8]というのを作って、pixelの色は0-7で表す
RGBを二進数で表現することで考えやすくなる

 color 0 1 2 3 4 5 6 7
    R    0 1 0 1 0 1 0 1
    G    0 0 1 1 0 0 1 1
    B    0 0 0 0 1 1 1 1

マトリクスLEDを制御するのにDisplayMatorixという関数を定義する
0(LOW)のとき光って、1(HIGH)のとき消える
例えばpixel[0][0]が光っていたとする。
pixel[1][1]を光らせたいとなった時に、まず2行目を全て1にする(PinRow[1]をHIGH)
次に1列目から8列目まで順番に見ていく。
pixel[1][1]と001の論理積が1ならPinColR[1]をLOW、0ならPinColR[1]をHIGH
pixel[1][1]と010の論理積が1ならPinColG[1]をLOW、0ならPinColG[1]をHIGH
pixel[1][1]と100の論理積が1ならPinColB[1]をLOW、0ならPinColB[1]をHIGH
そしてPinRow[1]をLOWにする
最後にrowに1足して同じことを繰り返す。
このDisplayMatorix関数はMsTimer2を使って5msごとに呼び出す

#include "MsTimer2.h"
ArduinoMega Pin Assignments
        1  2  3  4  5  6  7  8
Row     20 21 22 23 24 25 26 27
Col(R)  28 29 30 31 32 33 34 35
Col(G)  36 37 38 39 40 41 42 43
Col(B)  44 45 46 47 48 49 50 51
int PinRow[] = {20, 21, 22, 23, 24, 25, 26, 27};
int PinColR[] = {28, 29, 30, 31, 32, 33, 34, 35};
int PinColG[] = {36, 37, 38, 39, 40, 41, 42, 43};
int PinColB[] = {44, 45, 46, 47, 48, 49, 50, 51};
char pixel[8][8]; // each pixel's color (0-7)
color 0 1 2 3 4 5 6 7
  R   0 1 0 1 0 1 0 1
  G   0 0 1 1 0 0 1 1
  B   0 0 0 0 1 1 1 1
int row;
void setup() {                
 int i;
 for (i = 20; i <= 51; i++) pinMode(i, OUTPUT); 
 row = 0;
 pixel[0][0] = 7;
 pixel[3][3] = 4;
 MsTimer2::set(5, DisplayMatrix);
 MsTimer2::start();
}
void loop()
{
//  DisplayMatrix();
//  delay(5);
}
// function for controling matrix LED, called every 5ms
void DisplayMatrix()
{
  int x, y;
  for (y = 0; y < 8; y++) digitalWrite(PinRow[y], HIGH);
  // digitalWrite(PinRow[row], LOW); // will make illusion
 for (x = 0; x < 8; x++){
   if (pixel[x][row] & 0x01) digitalWrite(PinColR[x], LOW); else digitalWrite(PinColR[x], HIGH);
   if (pixel[x][row] & 0x02) digitalWrite(PinColG[x], LOW); else digitalWrite(PinColG[x], HIGH);
   if (pixel[x][row] & 0x04) digitalWrite(PinColB[x], LOW); else digitalWrite(PinColB[x], HIGH);
 }
 digitalWrite(PinRow[row], LOW);
 //  row = row + 1; if (row == 8) row = 0;
 row = (row + 1) % 8;
}

6/27(火) マイコンぺ

フルカラーマトリクスLEDを使用
(COL)1-8R,9-16G,21-28B (ROW)17-20,29-32
ROW側はたくさん電流(1列にRGB 8×3 )を流さなければいけないのでトランジスタアレイ(ダーリントン)を入れる。
入れないと壊れる可能性あり。
COL側は24個の抵抗を入れる。
ピン番号は左下から反時計回りに数える
トランジスタアレイは内部抵抗をもつので、トランジスタアレイを入れたところすなわちROW側には抵抗を入れなくて良い

4/12(水)研究室顔合わせ

研究室初めての顔合わせでした
研究室内の配線をごちゃごちゃ動かしました
まさか床下があんなことになっているとは
先輩方も先生もとてもいい人たちなので、これからの研究室生活楽しみです