Arduino的RGB矩阵

时间:2019-03-27 10:06:26

标签: matrix arduino rgb adafruit real-time-clock

我想用RGB LED矩阵创建一个字时钟。我买了 Adafruit的32x32 LED RGB矩阵(产品ID:1484),外观 太棒了 我3D打印了一个前面板,上面的字母被切掉了。 我的下一个想法是将其与DCF77模块结合在一起。但是那不是 足够可靠,可以在最终版本中使用。 所以我选择了RTC。 (芯片DS3231)与Arduino通讯 通过I2C。 它似乎不起作用。我认为这两个图书馆不起作用 因为它们以2种不同的方式定义同一件事。 这是整个代码(很抱歉,有些单词是瑞士德语, 这些只是描述时间的变量,可以选择 自由地):

我正在将Arduino Uno与Adafruit RGB Matrix Shield(https://www.adafruit.com/product/2601)和Adafruit的32x32 RGB Shield(https://www.adafruit.com/product/1484)配合使用。

我使用的RTC带有SDA和SCL连接以及DS3231芯片。

我的观察: 1.如果我取消注释所有必须做的RTC模块,特别是Wire库。 RGB矩阵显示我在代码下部定义的矩形。 (在切换案例中,我使用固定值)我现在无法拍照,因为一位朋友借用了我的Arduino开发板,但如果有帮助,我可以稍后再发布图片。 2.如果我将Wire.h库包含到如第1点所述修改的代码中,则所有RGB矩阵都会出错,并点亮一些随机行。 (再次,我可以稍后发布图片,如果有帮助的话。) 3.如果我采用第1点中所述的相同方法,但是取消注释与RGB矩阵有关的所有行,并仅每200ms在串行显示器上发布RTC模块的时间,它将打印正确的时间,直到取消注释< / p>

matrix.fillScreen(0);

//-------Librarys Realtime Clock---------
//#include <Wire.h>
//#include "DS3231.h"

//-------Librarys LED Matrix-------------
#include <gamma.h>
#include <RGBmatrixPanel.h>

#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>


//------Defines for LED Matrix----------
#define CLK  8
#define OE   9
#define LAT 10
#define A   A0
#define B   A1
#define C   A2
#define D   A3

//--------Colour Variables-------------
int red, green, blue;

//--------All Pins for LED Matrix------
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false);

//---------Realtime Clock--------------
RTClib RTC;

void setup()
{
  matrix.begin();
  Wire.begin();

  red = 0;
  green = 7;
  blue = 0;
}

void loop()
{
  delay(100);

  DateTime now = RTC.now();

  //clear Matrix
  matrix.fillScreen(0);

  //write the time to the Matrix
  es();
  isch();

  switch(int stund = now.hour())
  {
    case 1:
    {
      eis();
      break;
    }
    case 2:
    {
      zwei();
      break;
    }
    case 3:
    {
      drue();
      break;
    }
    case 4:
    {
      vieri();
      break;
    }
    case 5:
    {
      fuefi();
      break;
    }
    case 6:
    {
      saechsi();
      break;
    }
    case 7:
    {
      sibni();
      break;
    }
    case 8:
    {
      achti();
      break;
    }
    case 9:
    {
      nueni();
      break;
    }
    case 10:
    {
      zaeni();
      break;
    }
    case 11:
    {
      elfi();
      break;
    }
    case 12:
    {
      zwoelfi();
      break;
    }
  }

  switch(int minuute = now.minute())
  {
    case 1:
    {
      //progressBalk
      break;
    }
    case 2:
    {
      //progressBalk
      break;
    }
    case 3:
    {
      //progressBalk
      break;
    }
    case 4:
    {
      //progressBalk
      break;
    }
    case 5:
    {
      fuef();
      ab();
      //progressBalk
      break;
    }
    case 6:
    {
      fuef();
      ab();
      //progressBalk
      break;
    }
    case 7:
    {
      fuef();
      ab();
      //progressBalk
      break;
    }

//i think you get the point here... ;)

    case 55:
    {
      fuef();
      vor();
      //progressBalk
      break;
    }
    case 56:
    {
      fuef();
      vor();
      //progressBalk
      break;
    }
    case 57:
    {
      fuef();
      vor();
      //progressBalk
      break;
    }
    case 58:
    {
      fuef();
      vor();
      //progressBalk
      break;
    }
    case 59:
    {
      fuef();
      vor();
      //progressBalk
      break;
    }
    case 0:
    {
      //progressBalk
      break;
    }
  }
}

void es(void)
{
  matrix.fillRect(5, 1, 4, 3, matrix.Color333(red, green, blue));
}

void isch(void)
{
  matrix.fillRect(11, 1, 8, 3, matrix.Color333(red, green, blue));
}

void fuef(void)
{
  matrix.fillRect(21, 1, 6, 3, matrix.Color333(red, green, blue));
}

void viertl(void)
{
  matrix.fillRect(5, 4, 12, 3, matrix.Color333(red, green, blue));
}

void zaeae(void)
{
  matrix.fillRect(21, 4, 6, 3, matrix.Color333(red, green, blue));
}

void zwaenzg(void)
{
  matrix.fillRect(5, 7, 12, 3, matrix.Color333(red, green, blue));
}

void vor(void)
{
  matrix.fillRect(21, 7, 6, 3, matrix.Color333(red, green, blue));
}

void ab(void)
{
  matrix.fillRect(5, 10, 4, 3, matrix.Color333(red, green, blue));
}

void halbi(void)
{
  matrix.fillRect(11, 10, 10, 3, matrix.Color333(red, green, blue));
}

void eis(void)
{
  matrix.fillRect(5, 13, 6, 3, matrix.Color333(red, green, blue));
}

void zwei(void)
{
  matrix.fillRect(11, 13, 8, 3, matrix.Color333(red, green, blue));
}

void drue(void)
{
  matrix.fillRect(21, 13, 6, 3, matrix.Color333(red, green, blue));
}

void vieri(void)
{
  matrix.fillRect(5, 16, 10, 3, matrix.Color333(red, green, blue));
}

void fuefi(void)
{
  matrix.fillRect(15, 16, 8, 3, matrix.Color333(red, green, blue));
}

void saechsi(void)
{
  matrix.fillRect(5, 19, 12, 3, matrix.Color333(red, green, blue));
}

void sibni(void)
{
  matrix.fillRect(18, 19, 10, 3, matrix.Color333(red, green, blue));
}

void achti(void)
{
  matrix.fillRect(5, 22, 10, 3, matrix.Color333(red, green, blue));
}

void nueni(void)
{
  matrix.fillRect(15, 22, 8, 3, matrix.Color333(red, green, blue));
}

void zaeni(void)
{
  matrix.fillRect(5, 25, 8, 3, matrix.Color333(red, green, blue));
}

void elfi(void)
{
  matrix.fillRect(18, 25, 8, 3, matrix.Color333(red, green, blue));
}

void zwoelfi(void)
{
  matrix.fillRect(5, 28, 12, 3, matrix.Color333(red, green, blue));
}

我还将这个问题发布到Arduino论坛: https://forum.arduino.cc/index.php?topic=604825.0

0 个答案:

没有答案