テキストをスクロールさせる看板を作る

コロナウイルスの影響で知り合いのカレー屋さんの来店が激減。テイクアウトを強化したいとのことなので急きょこんな電子看板を作りました。

必要なもの

Arduino UNOWS2812b 8×32ジャンパーワイヤー
115
あとはUSBケーブル、USBアダプタ

接続の仕方

こんなかんじで接続してください

参考サイト

Cyan Infinite | Scrolling text with flexible 32x8 RGB LED Matrix
Needed a way to display scrolling text or messages? This Flexible 32x8 RGB LED Matrix display may suit your needs! With 256 LEDs on it, you can display

Amazonで買ったもの

Amazon | Longruner デジタル フレキシブル LEDパネル 8x32cm 5050 SMD WS2812B IC 個別にアドレス可能 256ピクセルLEDライト Arduino用RGB LED パネル LEDスクリーン LED壁広告ボードなど作成 LWS03 | LED | 産業・研究開発用品 通販
Longruner デジタル フレキシブル LEDパネル 8x32cm 5050 SMD WS2812B IC 個別にアドレス可能 256ピクセルLEDライト Arduino用RGB LED パネル LEDスクリーン LED壁広告ボードなど作成 LWS03がLEDストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お...

はそのままでは動かなかったので。コードを変えます。もとのコードは26行目から

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_BOTTOM    + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);

となっています。しかし上記の商品では左上が一番最初のLEDなおかつ横配列なので下記に変更。

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
  NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);

またもともとのテキストがtestのみなのにこちらは「take out 20% off !」と表示したいので

void loop() {
  matrix.fillScreen(0);    //Turn off all the LEDs
  matrix.setCursor(x, 0);
  matrix.print(F("Test"));

  if( --x < -30 ) {
    x = matrix.width();

    if(++pass >= 8) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(30);
}

こちらから

void loop() {
  matrix.fillScreen(0);    //Turn off all the LEDs
  matrix.setCursor(x, 0);
  matrix.print(F("Take out 20% off!"));

  if( --x < -150 ) {
    x = matrix.width();

    if(++pass >= 5) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(40);
}

こちらに変更。matrix.widthを150としたのはテキストが途中で切れるのを防ぎます。最後のdelay(40)で若干スピードを遅くして読みやすくしました。

完成コード

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

#define PIN 6

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
//   NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
//     Position of the FIRST LED in the matrix; pick two, e.g.
//     NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
//   NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
//     rows or in vertical columns, respectively; pick one or the other.
//   NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
//     in the same order, or alternate lines reverse direction; pick one.
//   See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
  NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(255, 69, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(10);
  matrix.setTextColor(colors[0]);
}

int x    = matrix.width();
int pass = 0;

void loop() {
  matrix.fillScreen(0);    //Turn off all the LEDs
  matrix.setCursor(x, 0);
  matrix.print(F("Take out 20% off!"));

  if( --x < -150 ) {
    x = matrix.width();

    if(++pass >= 5) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(40);
}

次はスマホから文字をかえられるように

次はスマホなどから文字を変えられるようにするために、ESP8266でも使ってみようと思います。コロナがおさまったら時間によって「Beer 300yen」とか曜日によって「ladies day」とか表示するのもいいかもですね。

この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
電子工作
webclimbers

コメント

タイトルとURLをコピーしました