
POV Clock with RGB LED
STDPOV Clock with RGB LED
1.4k
0
0
0
Mode:Full
License
:GPL 3.0
Creation time:2019-01-22 08:00:11Update time:2022-06-22 12:24:51
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
Design Drawing
schematic diagram
PCB
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 640456-2 | CN1 | KF2510-2A | 1 |
2 | 204-10ASUBW/S400-A5 | LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,LED12 | LED-3MM/2.54 | 9 |
3 | TJ-L5FYTXHTCSLCRGB-A5 | LED9,LED10 | LED-DIP-4P(5.8MM) | 2 |
4 | BC337 | Q1 | TO-92(TO-92-3) | 1 |
5 | 220Ω | R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14 | AXIAL-0.4 | 14 |

Add to Album
0
0
Share
Report
Project Members
Followers0|Likes0
Related projects

Comment