POV Clock with RGB LED

8 months ago 201
  • Description
  • Documents
  • BOM
  • Attachments
  • Members
  • Comments

Description

This is the code I use for the clock. Feel free to change it in each manner your want. ATTENTION: Dont use the POV Clock_old. I use it for backup purpose only. It wont work! The file POV Clock_new and POV_Clock_new_SSD1306 are working well and are fully tested. But i dont take any responability if something dont work like you want. For example: the optocoupler is tricky. Maybe you need to adjust the source code.

File POV Clock_new: OLED Display SSD1306: GND, VCC, SCL, SDA POV_Clock_new_SSD1306: OLED Display SSD1306: VCC, GND, SCL, SDA


#include TimeLib.h // dont forget to add < and > eg: < TimeLib.h > without space. if I add it the system doesnt show what to include
#include Arduino.h
#include U8x8lib.h
#include Wire.h

const int LEDpins[] = {9,8,7,6,5,4,3,2};
  int rows= 8;        
   const int charHeight = 8;
   const int charWidth = 5;
   const unsigned char font[95][5] = {
         {0x00,0x00,0x00,0x00,0x00},   //   0x20 32
         {0x00,0x00,0x6f,0x00,0x00},   // ! 0x21 33
         {0x00,0x07,0x00,0x07,0x00},   // " 0x22 34
         {0x14,0x7f,0x14,0x7f,0x14},   // # 0x23 35
         {0x00,0x07,0x04,0x1e,0x00},   // $ 0x24 36
         {0x23,0x13,0x08,0x64,0x62},   // % 0x25 37
         {0x36,0x49,0x56,0x20,0x50},   // & 0x26 38
         {0x00,0x00,0x07,0x00,0x00},   // ' 0x27 39
         {0x00,0x1c,0x22,0x41,0x00},   // ( 0x28 40
         {0x00,0x41,0x22,0x1c,0x00},   // ) 0x29 41
         {0x14,0x08,0x3e,0x08,0x14},   // * 0x2a 42
         {0x08,0x08,0x3e,0x08,0x08},   // + 0x2b 43
         {0x00,0x50,0x30,0x00,0x00},   // , 0x2c 44
         {0x08,0x08,0x08,0x08,0x08},   // - 0x2d 45
         {0x00,0x60,0x60,0x00,0x00},   // . 0x2e 46
         {0x20,0x10,0x08,0x04,0x02},   // / 0x2f 47
         {0x3e,0x51,0x49,0x45,0x3e},   // 0 0x30 48
         {0x00,0x42,0x7f,0x40,0x00},   // 1 0x31 49
         {0x42,0x61,0x51,0x49,0x46},   // 2 0x32 50
         {0x21,0x41,0x45,0x4b,0x31},   // 3 0x33 51
         {0x18,0x14,0x12,0x7f,0x10},   // 4 0x34 52
         {0x27,0x45,0x45,0x45,0x39},   // 5 0x35 53
         {0x3c,0x4a,0x49,0x49,0x30},   // 6 0x36 54
         {0x01,0x71,0x09,0x05,0x03},   // 7 0x37 55
         {0x36,0x49,0x49,0x49,0x36},   // 8 0x38 56
         {0x06,0x49,0x49,0x29,0x1e},   // 9 0x39 57
         {0x00,0x36,0x36,0x00,0x00},   // : 0x3a 58
         {0x00,0x56,0x36,0x00,0x00},   // ; 0x3b 59
         {0x08,0x14,0x22,0x41,0x00},   // < 0x3c 60
         {0x14,0x14,0x14,0x14,0x14},   // = 0x3d 61
         {0x00,0x41,0x22,0x14,0x08},   // > 0x3e 62
         {0x02,0x01,0x51,0x09,0x06},   // ? 0x3f 63
         {0x3e,0x41,0x5d,0x49,0x4e},   // @ 0x40 64
         {0x7e,0x09,0x09,0x09,0x7e},   // A 0x41 65
         {0x7f,0x49,0x49,0x49,0x36},   // B 0x42 66
         {0x3e,0x41,0x41,0x41,0x22},   // C 0x43 67
         {0x7f,0x41,0x41,0x41,0x3e},   // D 0x44 68
         {0x7f,0x49,0x49,0x49,0x41},   // E 0x45 69
         {0x7f,0x09,0x09,0x09,0x01},   // F 0x46 70
         {0x3e,0x41,0x49,0x49,0x7a},   // G 0x47 71
         {0x7f,0x08,0x08,0x08,0x7f},   // H 0x48 72
         {0x00,0x41,0x7f,0x41,0x00},   // I 0x49 73
         {0x20,0x40,0x41,0x3f,0x01},   // J 0x4a 74
         {0x7f,0x08,0x14,0x22,0x41},   // K 0x4b 75
         {0x7f,0x40,0x40,0x40,0x40},   // L 0x4c 76
         {0x7f,0x02,0x0c,0x02,0x7f},   // M 0x4d 77
         {0x7f,0x04,0x08,0x10,0x7f},   // N 0x4e 78
         {0x3e,0x41,0x41,0x41,0x3e},   // O 0x4f 79
         {0x7f,0x09,0x09,0x09,0x06},   // P 0x50 80
         {0x3e,0x41,0x51,0x21,0x5e},   // Q 0x51 81
         {0x7f,0x09,0x19,0x29,0x46},   // R 0x52 82
         {0x46,0x49,0x49,0x49,0x31},   // S 0x53 83
         {0x01,0x01,0x7f,0x01,0x01},   // T 0x54 84
         {0x3f,0x40,0x40,0x40,0x3f},   // U 0x55 85
         {0x0f,0x30,0x40,0x30,0x0f},   // V 0x56 86
         {0x3f,0x40,0x30,0x40,0x3f},   // W 0x57 87
         {0x63,0x14,0x08,0x14,0x63},   // X 0x58 88
         {0x07,0x08,0x70,0x08,0x07},   // Y 0x59 89
         {0x61,0x51,0x49,0x45,0x43},   // Z 0x5a 90
         {0x3c,0x4a,0x49,0x29,0x1e},   // [ 0x5b 91
         {0x02,0x04,0x08,0x10,0x20},   // \ 0x5c 92
         {0x00,0x41,0x7f,0x00,0x00},   // ] 0x5d 93
         {0x04,0x02,0x01,0x02,0x04},   // ^ 0x5e 94
         {0x40,0x40,0x40,0x40,0x40},   // _ 0x5f 95
         {0x00,0x00,0x03,0x04,0x00},   // ` 0x60 96
         {0x20,0x54,0x54,0x54,0x78},   // a 0x61 97
         {0x7f,0x48,0x44,0x44,0x38},   // b 0x62 98
         {0x38,0x44,0x44,0x44,0x20},   // c 0x63 99
         {0x38,0x44,0x44,0x48,0x7f},   // d 0x64 100
         {0x38,0x54,0x54,0x54,0x18},   // e 0x65 101
         {0x08,0x7e,0x09,0x01,0x02},   // f 0x66 102
         {0x0c,0x52,0x52,0x52,0x3e},   // g 0x67 103
         {0x7f,0x08,0x04,0x04,0x78},   // h 0x68 104
         {0x00,0x44,0x7d,0x40,0x00},   // i 0x69 105
         {0x20,0x40,0x44,0x3d,0x00},   // j 0x6a 106
         {0x00,0x7f,0x10,0x28,0x44},   // k 0x6b 107
         {0x00,0x41,0x7f,0x40,0x00},   // l 0x6c 108
         {0x7c,0x04,0x18,0x04,0x78},   // m 0x6d 109
         {0x7c,0x08,0x04,0x04,0x78},   // n 0x6e 110
         {0x38,0x44,0x44,0x44,0x38},   // o 0x6f 111
         {0x7c,0x14,0x14,0x14,0x08},   // p 0x70 112
         {0x08,0x14,0x14,0x18,0x7c},   // q 0x71 113
         {0x7c,0x08,0x04,0x04,0x08},   // r 0x72 114
         {0x48,0x54,0x54,0x54,0x20},   // s 0x73 115
         {0x04,0x3f,0x44,0x40,0x20},   // t 0x74 116
         {0x3c,0x40,0x40,0x20,0x7c},   // u 0x75 117
         {0x1c,0x20,0x40,0x20,0x1c},   // v 0x76 118
         {0x3c,0x40,0x30,0x40,0x3c},   // w 0x77 119
         {0x44,0x28,0x10,0x28,0x44},   // x 0x78 120
         {0x0c,0x50,0x50,0x50,0x3c},   // y 0x79 121
         {0x44,0x64,0x54,0x4c,0x44},   // z 0x7a 122
         {0x00,0x08,0x36,0x41,0x41},   // { 0x7b 123
         {0x00,0x00,0x7f,0x00,0x00},   // | 0x7c 124
         {0x41,0x41,0x36,0x08,0x00},   // } 0x7d 125
         {0x04,0x02,0x04,0x08,0x04},   // ~ 0x7e 126
     };

//U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
//U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
const int sensorPIN = 10;
  const int sensorPIN2 = A0;
  int state = 0; 
  int sensVal;
  int i;  
  char textString[] = " Friends";
  String tmp_str;
  int redPin = A1;
  int greenPin = A2;
  int bluePin = A3;
  int redPin2 = 11;
  int greenPin2 =12;
  int bluePin2 = 13;
  int x=10;
  int y=10;
  int z=10;
  int RGBLedState=0;
  uint8_t c, r, d;
  void setup()
  {
    Serial.begin(115200);
    u8x8.begin();
    u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);    
    u8x8.clear();

    u8x8.inverse();
    u8x8.print("FSD");
    u8x8.setFont(u8x8_font_chroma48medium8_r);  
    u8x8.noInverse();
    u8x8.setCursor(0,1);

    draw_bar(0, 1);
    setTime(10,55,30,02,03,2019);
    pinMode(sensorPIN, INPUT);
    pinMode(sensorPIN2 , INPUT);
    pinMode(redPin2, OUTPUT);
    pinMode(greenPin2, OUTPUT);
    pinMode(bluePin2, OUTPUT);
    pinMode(bluePin, OUTPUT);
    pinMode(greenPin, OUTPUT);
    pinMode(redPin, OUTPUT);
    for (i = 0; i < rows; i++)
      pinMode(LEDpins[i], OUTPUT);    

  }

  void loop()
  {

/*  for( c = 1; c < u8x8.getCols(); c++ )
  {
    draw_bar(c, 1);
    draw_bar(c-1, 0);
    delay(50);
  }
  draw_bar(u8x8.getCols()-1, 0);*/
  state = digitalRead(sensorPIN);
    tmp_str=klok();
    tmp_str=tmp_str+" ";
    while(digitalRead(sensorPIN) >= 14)
    {
     digitalWrite(13, LOW); 
     Serial.println(sensorPIN);
    }
    digitalWrite(13, HIGH);
    Serial.println(sensorPIN);
    for (int k=0; k-1; k--){
      printLetterboven(textString[k]);
    }
  /*    for(int x=0;x=0;y--) {
          for(int z=0;z=255) { x=5; }
    if(y>=255) { y=10; }
    if(z>=255) { z=15; }
    x+=5;
    y+=5;
    z+=5;
    }

  String klok(){
    String result;
    String str1;
    String str2;
    String str3;
    if (hour() < 10)
      str1 = "0"+String(hour());
    else
      str1 = String(hour());
    if (minute() < 10)
      str2 = "0"+String(minute());
    else
      str2 = String(minute());
    if (second() < 10)
      str3 = "0"+String(second());
    else
      str3 = String(second());
    result = str1+":"+str2+":"+str3;
    return result;
  }

void printLetterboven(char ch)
  {

    if (ch < 32 || ch > 126){
      ch = 32;
      }
    ch -= 32;
    for (int i=charWidth-1; i>-1; i--) {
      byte b = font[ch][i];
      for (int j=0; j 126){
      ch = 32;
      }
    ch -= 32;
    for (int i=0; i

Documents

Sheet_1

POV Clock_old

Pov Clock_New

Pov Clock New SSD1306

NEW_PCB

BOM

ID Name Designator Footprint Quantity Manufacturer Part Manufacturer Supplier Supplier Part Price LCSC Assembly Mounted BOM_Manufacturer Part BOM_Supplier BOM_Supplier Part BOM_Manufacturer
1 0.96 OLED U1 0.96 OLED 1 0.96 OLED LCSC
2 220Ω R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14 AXIAL-0.4 14 MFR0W4F2200A50 LCSC C57439 UniOhm
3 204-10ASUBW/S400-A5 LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,LED12 LED-3MM/2.54 9 204-10ASUBW/S400-A5 LCSC C97696 EVERLIGHT
4 ARDUINO_NANO U2 ARDUINO_NANO 1
5 10k R15,R16 AXIAL-0.4 2 MFR0W4F2200A50 LCSC C57439 UniOhm
6 1k R17 AXIAL-0.4 1 MFR0W4F2200A50 LCSC C57439 UniOhm
7 100 R18,R21 AXIAL-0.4 2 MFR0W4F2200A50 LCSC C57439 UniOhm
8 640456-2 CN1 KF2510-2A 1 640456-2 LCSC C86502 TE Connectivity
9 K3-1235D-K1 SW2 SW-DIP-9X3.5-3.5-3P 1 K3-1235D-K1 LCSC C145860 Rectangular Connectors - Contacts
10 TJ-L5FYTXHTCSLCRGB-A5 LED9,LED10 LED-DIP-4P(5.8MM) 2 TJ-L5FYTXHTCSLCRGB-A5 LCSC C331058 TOGIALED
11 ZGY1150(ITR) U3 ZGY1150(ITR) 1 ZGY1150(ITR) LCSC C277764 Chau Light
12 BC337 Q1 TO-92(TO-92-3) 1 BC337 LCSC C154963 CJ

Attachments

None
Success
The owner does not allow comments in this project now

Comments (0)

goToTop
你现在访问的是EasyEDA海外版,使用建立访问速度更快的国内版 https://lceda.cn(需要重新注册)
如果需要转移工程请在个人中心 - 工程 - 工程高级设置 - 下载工程,下载后在https://lceda.cn/editor 打开保存即可。
有问题联系QQ 3001956291 不再提醒
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow
We use cookies to offer you a better experience. Detailed information on the use of cookies on this website is provided in our Privacy Policy. By using this site, you consent to the use of our cookies.