Помогите собрать часы на ардуино
- Войдите на сайт для отправки комментариев
Втр, 12/03/2013 - 23:21
есть uno r3, DS 1302 и дисплей QC 1602, по сути нужен скетч и помощь по подключению 1302
есть uno r3, DS 1302 и дисплей QC 1602, по сути нужен скетч и помощь по подключению 1302
Участник с таким ником.... Кстати, хозяин числа за плагиат не...?
Имхо, должен сам всех "строить"!
Помочь можно нику chaynik000 ;))))
Ник этот за другие заслуги, а вот в ардуине пока чайник, но это пока... По существу кто то может подсказать "чайнеку"!!!
Hello world запускали?
Да это запускал, проблем не возникло, тока опять же скетч скопировал, поправил порты и всё. Хотелось бы чтоб на этом примере кто толковый объяснил что по чем. Заранее спасибо!
про 1302 не расскажу, не интересны, т.к. купил десяток 1307...
да не нужно про 1302 рассказывать, если можно то про сам процесс написания скетча на примере этих часов
да не нужно про 1302 рассказывать, если можно то про сам процесс написания скетча на примере этих часов
Это Вам надо почитать про основы программирования на C++, после чего поставить себе IDE для ардуино и делать в нем все точно так же...
что за IDE?
Andrey_Y_Osta
Наличие ответа про Hello world от автора какбе намекает что он уже установил среду и пишет в ней скетчи.
kylibin666
библа для 1302, пример внутри:
https://github.com/msparks/arduino-ds1302
std спасибо за ссылку, нашел еще библиотек на http://henningkarlsen.com/electronics/library.php?id=5 там как раз на ds 1302 рабочая библа, повторю еще раз, я не програмист, я механик, но хотелось бы разобраться на примерах как писать скетчи, несложные для начала, вот-
Hello world!
foo bar baz
один из них, до этого моргал 13 светодиодом, сей час хотелось бы скетч написанный на часы, с учетом моих деталий, как тока найду такой так сразу сяду разбираться с С++, мне так проще
Вобщем кому не трудно, помогите :)
Если хотите научиться писать программы - надо сначала почитать соответствующую базовую литературу, чтобы хотя бы говорить на одном языке с теми, кто уже умеет. Без базовых знаний - не научитесь. Не стоит расссчитывать на то, что как только найдете подходящую библиотеку - все сразу станет ясно и понятно: наоборот, библиотеки пишут с минимумом комментариев, и разобраться в ней начинающему - практически нереально.
ну если так, то сажусь читать, только тогда подскажите с чего начать?
http://padabum.com/d.php?id=2037
"C++ для "чайников" Стефан Р. Дэвис"
Хотя бы пробежать текст глазами и научиться отличать в коде функцию от дефайна. :) Дальше уже можно пытаться писать свои "Hello World".
Спасибо Andrey_Y_Ostan!
http://henningkarlsen.com/electronics/download.php?f=DS1302.rar Я оттуда утянул. И библиотека нормальная и примеры тоже. Единственное - пины под свой проект переписал и все...
есть uno r3, DS 1302 и дисплей QC 1602, по сути нужен скетч и помощь по подключению 1302
Когда-то расковырял китайские сдохшие часы (там дисплей живой остался), к нему и пристыковался. Был один из первых "проектов" на дуине.
Код такой вот
#include <OneWire.h> #include <DS1302.h> #include <TimerOne.h> #define _9_B 0x1F // 9 bit #define _10_B 0x3F // 10 bit #define _11_B 0x5F // 11 bit #define _12_B 0x7F // 12 bit int SPC_1_0=(B01111111<<8)+B11111111; int SPC_1_1=(B01000111<<8)+B11111111; int SPC_1_2=(B01111000<<8)+B01111111; int SPC_1_3=(B01111111<<8)+B10001111; int SPC_1_4=(B01111111<<8)+B11110000; int SPC_2_0=(B10111111<<8)+B11111111; int SPC_2_1=(B10000011<<8)+B11111111; int SPC_2_2=(B10111100<<8)+B01111111; int SPC_2_3=(B10111111<<8)+B10000111; int SPC_2_4=(B10111111<<8)+B11111000; int SPC_1=(B11111111<<8)+B11111111; int SPC_2=(B11111111<<8)+B11111111; int Tbl_1_1[]={ (B01000000<<8)+B00000000, //0 (B01000000<<8)+B00000000, //1 (B01011000<<8)+B00000000, //2 (B01011000<<8)+B00000000, //3 (B01000000<<8)+B00000000, //4 (B01111000<<8)+B00000000, //5 (B01111000<<8)+B00000000, //6 (B01010000<<8)+B00000000, //7 (B01111000<<8)+B00000000, //8 (B01111000<<8)+B00000000, //9 (B01000000<<8)+B00000000, //SPACE 100 (B01000000<<8)+B00000000, //SPACE 101 (B01011000<<8)+B00000000, //== 102 (B01000000<<8)+B00000000, //SPACE 103 (B01000000<<8)+B00000000, //SPACE 104 (B01000000<<8)+B00000000, //SPACE 105 (B01000000<<8)+B00000000, //SPACE 106 (B01000000<<8)+B00000000, //SPACE 107 (B01000000<<8)+B00000000, //SPACE 108 (B01110000<<8)+B00000000, //SPACE 109 (B01110000<<8)+B00000000 //SPACE 110 }; int Tbl_1_2[]={ (B01000101<<8)+B10000000, //0 (B01000000<<8)+B00000000, //1 (B01000111<<8)+B00000000, //2 (B01000011<<8)+B00000000, //3 (B01000010<<8)+B10000000, //4 (B01000011<<8)+B10000000, //5 (B01000111<<8)+B10000000, //6 (B01000000<<8)+B00000000, //7 (B01000111<<8)+B10000000, //8 (B01000011<<8)+B10000000, //9 (B01000000<<8)+B00000000, //SPACE 100 (B01000010<<8)+B00000000, //SPACE 101 (B01000001<<8)+B00000000, //== 102 (B01000000<<8)+B00000000, //SPACE 103 (B01000000<<8)+B00000000, //SPACE 104 (B01000000<<8)+B00000000, //SPACE 105 (B01000000<<8)+B00000000, //SPACE 106 (B01000000<<8)+B00000000, //SPACE 107 (B01000000<<8)+B00000000, //SPACE 108 (B01000010<<8)+B10000000, //SPACE 109 (B01000010<<8)+B10000000 //SPACE 110 }; int Tbl_1_3[]={ (B01000000<<8)+B01110000, //0 (B01000000<<8)+B00110000, //1 (B01000000<<8)+B01100000, //2 (B01000000<<8)+B01110000, //3 (B01000000<<8)+B00110000, //4 (B01000000<<8)+B01010000, //5 (B01000000<<8)+B01010000, //6 (B01000000<<8)+B01110000, //7 (B01000000<<8)+B01110000, //8 (B01000000<<8)+B01110000, //9 (B01000000<<8)+B00000000, //SPACE 100 (B01000000<<8)+B00000000, //SPACE 101 (B01000000<<8)+B01000000, //== 102 (B01000000<<8)+B00000000, //SPACE 103 (B01000000<<8)+B00000000, //SPACE 104 (B01000000<<8)+B00000000, //SPACE 105 (B01000000<<8)+B00000000, //SPACE 106 (B01000000<<8)+B00000000, //SPACE 107 (B01000000<<8)+B00000000, //SPACE 108 (B01000000<<8)+B01110000, //SPACE 109 (B01000000<<8)+B01100000 //SPACE 110 }; int Tbl_1_4[]={ (B01000000<<8)+B00001011, //0 (B01000000<<8)+B00000000, //1 (B01000000<<8)+B00001110, //2 (B01000000<<8)+B00000110, //3 (B01000000<<8)+B00000101, //4 (B01000000<<8)+B00000111, //5 (B01000000<<8)+B00001111, //6 (B01000000<<8)+B00000000, //7 (B01000000<<8)+B00001111, //8 (B01000000<<8)+B00000111, //9 (B01000000<<8)+B00000000, //SPACE 100 (B01000000<<8)+B00000100, //SPACE 101 (B01000000<<8)+B00000010< //== 102 (B01000000<<8)+B00000000, //SPACE 103 (B01000000<<8)+B00000000, //SPACE 104 (B01000000<<8)+B00000000, //SPACE 105 (B01000000<<8)+B00000000, //SPACE 106 (B01000000<<8)+B00000000, //SPACE 107 (B01000000<<8)+B00000000, //SPACE 108 (B01000000<<8)+B00001101, //SPACE 109 (B01000000<<8)+B00000101 //SPACE 110 }; int Tbl_2_1[]={ (B10000000<<8)+B00000000, //0 (B10100100<<8)+B00000000, //1 (B10111000<<8)+B00000000, //2 (B10110100<<8)+B00000000, //3 (B10110100<<8)+B00000000, //4 (B10010100<<8)+B00000000, //5 (B10011100<<8)+B00000000, //6 (B10100100<<8)+B00000000, //7 (B10111100<<8)+B00000000, //8 (B10110100<<8)+B00000000, //9 (B10000000<<8)+B00000000, //SPACE 100 (B10010000<<8)+B00000000, //SPACE 101 (B10000000<<8)+B00000000, //== 102 (B10000000<<8)+B00000000, //SPACE 103 (B10000000<<8)+B00000000, //SPACE 104 (B10000000<<8)+B00000000, //SPACE 105 (B10000000<<8)+B00000000, //SPACE 106 (B10000000<<8)+B00000000, //SPACE 107 (B10000000<<8)+B00000000, //SPACE 108 (B10111100<<8)+B00000000, //SPACE 109 (B10110000<<8)+B00000000 //SPACE 110 }; int Tbl_2_2[]={ (B10000011<<8)+B10000000, //0 (B10000011<<8)+B00000000, //1 (B10000010<<8)+B10000000, //2 (B10000011<<8)+B10000000, //3 (B10000011<<8)+B00000000, //4 (B10000001<<8)+B10000000, //5 (B10000001<<8)+B10000000, //6 (B10000011<<8)+B10000000, //7 (B10000011<<8)+B10000000, //8 (B10000011<<8)+B10000000, //9 (B10000000<<8)+B00000000, //SPACE 100 (B10000000<<8)+B00000000, //SPACE 101 (B10000000<<8)+B10000000, //== 102 (B10000000<<8)+B00000000, //SPACE 103 (B10000000<<8)+B00000000, //SPACE 104 (B10000000<<8)+B00000000, //SPACE 105 (B10000000<<8)+B00000000, //SPACE 106 (B10000000<<8)+B00000000, //SPACE 107 (B10000000<<8)+B00000000, //SPACE 108 (B10000011<<8)+B10000000, //SPACE 109 (B10000010<<8)+B10000000 //SPACE 110 }; int Tbl_2_3[]={ (B10000000<<8)+B01011000, //0 (B10000000<<8)+B00000000, //1 (B10000000<<8)+B00111000, //2 (B10000000<<8)+B00110000, //3 (B10000000<<8)+B01100000, //4 (B10000000<<8)+B01110000, //5 (B10000000<<8)+B01111000, //6 (B10000000<<8)+B00000000, //7 (B10000000<<8)+B01111000, //8 (B10000000<<8)+B01110000, //9 (B10000000<<8)+B00000000, //SPACE 100 (B10000000<<8)+B00100000, //SPACE 101 (B10000000<<8)+B00010000, //== 102 (B10000000<<8)+B00000000, //SPACE 103 (B10000000<<8)+B00000000, //SPACE 104 (B10000000<<8)+B00000000, //SPACE 105 (B10000000<<8)+B00000000, //SPACE 106 (B10000000<<8)+B00000000, //SPACE 107 (B10000000<<8)+B00000000, //SPACE 108 (B10000000<<8)+B01101000, //SPACE 109 (B10000000<<8)+B01100000 //SPACE 110 }; int Tbl_2_4[]={ (B10000000<<8)+B00000111, //0 (B10000000<<8)+B00000110, //1 (B10000000<<8)+B00000101, //2 (B10000000<<8)+B00000111, //3 (B10000000<<8)+B00000110, //4 (B10000000<<8)+B00000011, //5 (B10000000<<8)+B00000011, //6 (B10000000<<8)+B00000111, //7 (B10000000<<8)+B00000111, //8 (B10000000<<8)+B00000111, //9 (B10000000<<8)+B00000000, //SPACE 100 (B10000000<<8)+B00000000, //SPACE 101 (B10000000<<8)+B00000001, //== 102 (B10000000<<8)+B00000000, //SPACE 103 (B10000000<<8)+B00000000, //SPACE 104 (B10000000<<8)+B00000000, //SPACE 105 (B10000000<<8)+B00000000, //SPACE 106 (B10000000<<8)+B00000000, //SPACE 107 (B10000000<<8)+B00000000, //SPACE 108 (B10000000<<8)+B00000111, //SPACE 109 (B10000000<<8)+B00000101 //SPACE 110 }; char Chrt[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,'©',' ','C','a','s','p','e','r',' ','2','0','1','2'}; byte Hl[4]={255,255,255,254}; int itm=0; int j=0,i=0; int hourl=0; byte Mode=8; DS1302 RTC(4, 3, 2); Time T; byte PC,oPC,PC1cnt=0; int Point; byte SETUP8=0,TermoM=0; byte present = 0; byte data[12]; byte addr[8]; OneWire W(10); boolean IsSens=false; float TermoF; void MelodyStart(){ tone(13,1000,100);delay(100); tone(13,1100,100);delay(100); tone(13,1250,100);delay(100); tone(13,1530,100);delay(100); tone(13,1950,100);delay(100); } void MON(int H=0, int M=0){ byte C[4]; if (H==100){ C[0]=10; C[1]=10; }else if (H == 1000){ C[0]=20; C[1]=10; }else if (H == 1001){ C[0]=20; C[1]=20; }else if (H > 100){ H = H - 100; C[0] = H + 10; C[1] = H + 10; }else if (H < 0) { C[0]=11; H=-H; C[1]=H%10; }else{ C[0] = H/10; C[1] = H%10; } if (M==100){ C[2]=10; C[3]=10; }else if (M > 100){ M = M - 100; C[2] = M + 10; C[3] = M + 10; }else{ C[2] = M/10; C[3] = M%10; } int D1=(Tbl_1_1[C[0]] | Tbl_1_2[C[1]] | Tbl_1_3[C[2]] | Tbl_1_4[C[3]]) & SPC_1; int D2=(Tbl_2_1[C[0]] | Tbl_2_2[C[1]] | Tbl_2_3[C[2]] | Tbl_2_4[C[3]]) & SPC_2; PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D1); shiftOut(7,5,LSBFIRST,(D1>>8)); PORTD = PORTD | B01000000; //latch low PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D2); shiftOut(7,5,LSBFIRST,(D2>>8)); PORTD = PORTD | B01000000; //latch low } void MON4(int m1=10, int m2=10, int m3=10, int m4=10){ int D1=(Tbl_1_1[m1] | Tbl_1_2[m2] | Tbl_1_3[m3] | Tbl_1_4[m4]) & SPC_1; int D2=(Tbl_2_1[m1] | Tbl_2_2[m2] | Tbl_2_3[m3] | Tbl_2_4[m4]) & SPC_2; PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D1); shiftOut(7,5,LSBFIRST,(D1>>8)); PORTD = PORTD | B01000000; //latch low PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D2); shiftOut(7,5,LSBFIRST,(D2>>8)); PORTD = PORTD | B01000000; //latch low } void MONx(byte m1=0, byte m2=0, byte m3=0, byte m4=0){ int D1=(B01111111<<8)+B11111111; int D2=(B10111111<<8)+B11111111; //IND1 bitWrite(D1,12,bitRead(m1,7)); //A bitWrite(D2,13,bitRead(m1,6)); //B bitWrite(D2,10,bitRead(m1,5)); //C bitWrite(D1,11,bitRead(m1,4)); //D bitWrite(D2,11,bitRead(m1,3)); //E bitWrite(D1,13,bitRead(m1,2)); //F bitWrite(D2,12,bitRead(m1,1)); //G //IND2 bitWrite(D2, 7,bitRead(m2,7)); //A bitWrite(D2, 9,bitRead(m2,6)); //B bitWrite(D2, 8,bitRead(m2,5)); //C bitWrite(D1, 8,bitRead(m2,4)); //D bitWrite(D1,10,bitRead(m2,3)); //E bitWrite(D1, 7,bitRead(m2,2)); //F bitWrite(D1, 9,bitRead(m2,1)); //G //IND3 bitWrite(D1, 6,bitRead(m3,7)); //A bitWrite(D1, 5,bitRead(m3,6)); //B bitWrite(D1, 4,bitRead(m3,5)); //C bitWrite(D2, 4,bitRead(m3,4)); //D bitWrite(D2, 3,bitRead(m3,3)); //E bitWrite(D2, 6,bitRead(m3,2)); //F bitWrite(D2, 5,bitRead(m3,1)); //G //IND4 bitWrite(D2, 0,bitRead(m4,7)); //A bitWrite(D2, 2,bitRead(m4,6)); //B bitWrite(D2, 1,bitRead(m4,5)); //C bitWrite(D1, 1,bitRead(m4,4)); //D bitWrite(D1, 3,bitRead(m4,3)); //E bitWrite(D1, 0,bitRead(m4,2)); //F bitWrite(D1, 2,bitRead(m4,1)); //G D1 = D1 & SPC_1; D2 = D2 & SPC_2; PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D1); shiftOut(7,5,LSBFIRST,(D1>>8)); PORTD = PORTD | B01000000; //latch low PORTD = PORTD & B10111111; //latch low shiftOut(7,5,LSBFIRST,D2); shiftOut(7,5,LSBFIRST,(D2>>8)); PORTD = PORTD | B01000000; //latch low } boolean sensorinit(){ boolean flg=false; if (!W.search(addr)){ flg=false; }else flg=true; W.reset(); W.select(addr); W.write(0x4E); //Scratch W.write(0x2); W.write(0x3); W.write(_12_B); W.write(0x48,0); // Copy return (flg); } void sensorstart(){ W.reset(); W.select(addr); W.write(0x44,1); //delay(500); } float sensorterm(){ present=W.reset(); W.select(addr); W.write(0xBE); for (int i=0; i<9; i++) data[i]=W.read(); int HB, LB; float TC, FR; LB=data[0]; HB=data[1]; int16_t TR = (((int16_t)HB) << 8) | LB; if (TR&0x8000) TR = (TR ^ 0xffff) + 1; TC = TR ;//* 6.25; FR = (float)TR * 0.0625;// TC / 100; if (TR & 0x8000) FR = -FR; return(FR); } void PIP(){ tone(13,5000,50); } void TMR(){ //tone(13,20000,1); T=RTC.getTime(); if (T.hour!=hourl){ hourl=T.hour; tone(13,5000,450); } Point++; if (bitRead(PC,1)==0){ PC1cnt++; if (PC1cnt>=5) {Mode=0; PIP();PC1cnt=0;} }else PC1cnt=0; if (IsSens){ if (TermoM==0) sensorstart(); if (TermoM==2) TermoF=sensorterm(); TermoM++;if (TermoM>2) TermoM=0; } } void DYSPLAY(){ int Y1=0, Y2=0; switch (Mode){ case 0: //Standart Time if (T.hour==27 && T.min==85) MON(102,102); else MON(T.hour,T.min); if (itm==0) if (Point%2==0) PORTB = PORTB & B11111101; else PORTB = PORTB | B00000010; else PORTB = PORTB | B00000010; if (itm==1){ if (Point%2!=0) { SPC_1=SPC_1_1 & SPC_1_2; SPC_2=SPC_2_1 & SPC_2_2; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else if (itm==2){ if (Point%2!=0) { SPC_1=SPC_1_3 & SPC_1_4; SPC_2=SPC_2_3 & SPC_2_4; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } //bitWrite(Hl[2],0,1); //bitWrite(Hl[3],0,1); break; case 1: // Date View if (T.mon==85 && T.date==85) MON(102,102); else MON(T.date,T.mon); PORTB = PORTB & B11111101; PORTD = PORTD | B00000010; if (itm==1){ if (Point%2!=0) { SPC_1=SPC_1_1 & SPC_1_2; SPC_2=SPC_2_1 & SPC_2_2; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else if (itm==2){ if (Point%2!=0) { SPC_1=SPC_1_3 & SPC_1_4; SPC_2=SPC_2_3 & SPC_2_4; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } break; case 2: //date year Y1=T.year/100; Y2=T.year-Y1*100; if (T.mon==85 && T.date==85) MON(102,102); else MON(Y1,Y2); PORTB = PORTB & B11111101; PORTD = PORTD | B00000010; if (itm==1){ if (Point%2!=0) { SPC_1=SPC_1_1 & SPC_1_2 & SPC_1_3 & SPC_1_4; SPC_2=SPC_2_1 & SPC_2_2 & SPC_2_3 & SPC_2_4; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } break; case 3: //Seconds Only if (T.sec==85) MON(100,102); else MON(100,T.sec); PORTB = PORTB | B00000010; PORTD = PORTD & B11111100; //bitWrite(Hl[0],0,1); //bitWrite(Hl[1],0,0); //bitWrite(Hl[2],0,1); //bitWrite(Hl[3],0,1); break; case 4: //Termometr if (IsSens) { //термометр есть MON(88,88); }else{ //Термометра нет. MONx(B11000110,B00011110,B10011110,B00001010); //t E } //PORTB = PORTB & B11111101; PORTB = PORTB | B00010000; digitalWrite(12,HIGH); PORTD = PORTD | B00000001; break; case 5: //Alarm 1 PORTB = PORTB | B00010000; //digitalWrite(12,HIGH); PORTD = PORTD & B11111100; MON4(19,1); break; case 6: //Alarm 2 MON4(19,2); PORTD = PORTD & B11111100; break; case 7: //Setup MONx(B00010000,B00010000,B00010000,B00010000); PORTD = PORTD | B00000011; break; case 8: //PORT if (bitRead(SETUP8,0)==0) MON(1000,100);else MON(1001,100); PORTD = PORTD & B11111100; if (itm==1){ if (Point%2!=0) { SPC_1=SPC_1_1 & SPC_1_2; SPC_2=SPC_2_1 & SPC_2_2; }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } }else{ SPC_1=SPC_1_0; SPC_2=SPC_2_0; } break; default: Mode=0; } } void InPort(){ if (bitRead(SETUP8,0)!=0){ Serial.begin(115200); }else{ Serial.end(); } } void StoreSetup(){ RTC.poke(0,SETUP8); RTC.poke(1,Mode); for (int i=18; i<=30;i++){ RTC.poke(i,Chrt[i]); } } void LoadSetup(){ SETUP8=RTC.peek(0); Mode=RTC.peek(1); } void setup() { DDRD = B11111111; DDRB = B00010010; PORTD = PORTD & B10111100; //latch low shiftOut(7,5,0,B00000000); // Out 2 registr shiftOut(7,5,0,B00000000); // Out 1 registr 6 and 7 low for cathode PORTD = PORTD | B01000000; //latch high tone(13,5000,50); delay(1000); RTC.writeProtect(false); T=RTC.getTime(); hourl = T.hour; LoadSetup(); InPort(); MelodyStart(); IsSens=sensorinit(); //Serial.begin(115200); Timer1.initialize(500000); // 500ms period Timer1.attachInterrupt( TMR ); } void loop() { PC=PINC; if (Serial.available() > 0) { byte TTH[10]; byte iB = Serial.read(); switch(iB){ case 122: bitWrite(PC,1,0); Serial.print("Mode Switch CUR="); Serial.println(Mode); break; case 120: bitWrite(PC,2,0); Serial.println("Item Prev Switch"); break; case 99: bitWrite(PC,3,0); Serial.println("Data Upper Switch"); break; case 118: bitWrite(PC,4,0); Serial.println("Data Lower Switch"); break; case 98: bitWrite(PC,5,0); Serial.println("Item Next Switch"); break; case 70: //F Serial.print(T.hour); Serial.print(":"); Serial.print(T.min); Serial.print(":"); Serial.print(T.sec); Serial.print(" - "); Serial.print(T.date); Serial.print("/"); Serial.print(T.mon); Serial.print("/"); Serial.print(T.year); Serial.println(" "); break; case 77: int Bbb; for (int i=0; i<=30;i++){ Bbb=RTC.peek(i); Serial.print(char(Bbb)); } Serial.println(" "); break; case 78: for (int i=18; i<=30;i++){ RTC.poke(i,Chrt[i]); } Serial.println("CP Writed"); break; case 84: //T - set time as format HH:MM:SS MON(100,100); for (int i=0; i<=7; i++){ TTH[i]=Serial.read(); } if (TTH[2]==':' && TTH[5]==':') { for (int i=0; i<=7; i++) TTH[i]=TTH[i]-48; T.hour=TTH[0]*10+TTH[1]; T.min= TTH[3]*10+TTH[4]; T.sec= TTH[6]*10+TTH[7]; Serial.print(T.hour); Serial.print("-"); Serial.print(T.min); Serial.print("-"); Serial.print(T.sec); Serial.println(" "); RTC.setTime(T.hour,T.min,T.sec); MelodyStart(); } break; case 68: //D - set the date as format DD/MM/YYYY MON(100,100); for (int i=0; i<=9; i++){ TTH[i]=(byte)Serial.read(); } if (TTH[2]=='/' && TTH[5]=='/') { for (int i=0; i<=9; i++) Serial.print(char(TTH[i])); for (int i=0; i<=9; i++) TTH[i]=TTH[i]-48; Serial.println(); T.date=TTH[0]*10+TTH[1]; T.mon= TTH[3]*10+TTH[4]; T.year= TTH[6]*1000+TTH[7]*100+TTH[8]*10+TTH[9]; Serial.print(T.date); Serial.print("-"); Serial.print(T.mon); Serial.print("-"); Serial.print(T.year); Serial.println(" "); RTC.setDate(T.date,T.mon,T.year); MelodyStart(); } break; default: Serial.println(iB,DEC); } } if (bitRead(PC,1) == 0 && oPC!=PC) { Mode++; itm=0; StoreSetup(); tone(13,5000,50); } if (bitRead(PC,5) == 0 && oPC!=PC) { //ITM next //SPC_1=SPC_1_4; //SPC_2=SPC_2_4; switch(Mode){ case 0: //time itm++; if (itm>2) itm=0; break; case 1: //date dm itm++; if (itm>2) itm=0; break; case 2: //date y itm++; if (itm>1) itm=0; break; case 8: //portsetup itm++; if (itm>1) itm=0; break; } tone(13,5000,50); } if (bitRead(PC,2) == 0 && oPC!=PC) { //ITM previouse //SPC_1=SPC_1_0; //SPC_2=SPC_2_0; switch(Mode){ case 0: //time itm--; if (itm<0) itm=2; break; case 1: //date itm--; if (itm<0) itm=2; break; case 2: //date y itm--; if (itm<0) itm=1; break; case 8: //portsetup itm--; if (itm<0) itm=1; break; } tone(13,5000,50); } if (bitRead(PC,3)==0 && oPC!=PC) { //DATE LOWER switch(Mode){ case 0: //time if (itm==1) { //hour - T=RTC.getTime(); T.hour--; if (T.hour<0) T.hour=23; RTC.setTime(T.hour,T.min,T.sec); } if (itm==2) { //min -- T=RTC.getTime(); T.min--; if (T.min<0) T.min=59; RTC.setTime(T.hour,T.min,T.sec); } break; case 1: //date break; case 2: //dateyear if (itm==1) { T=RTC.getTime(); T.year--; RTC.setDate(T.date,T.mon,T.year); } break; case 8: //portsetup if (bitRead(SETUP8,0)==0){ bitWrite(SETUP8,0,1); }else{ bitWrite(SETUP8,0,0); } InPort(); StoreSetup(); break; } tone(13,5000,50); } if (bitRead(PC,4)==0 && oPC!=PC) { //DATE UPPER switch(Mode){ case 0: //time Serial.println(itm); if (itm==1) { //hour + T=RTC.getTime(); T.hour++; if (T.hour>23) T.hour=0; RTC.setTime(T.hour,T.min,T.sec); } if (itm==2) { //min + T=RTC.getTime(); T.min++; if (T.min>59) T.min=0; RTC.setTime(T.hour,T.min,T.sec); } break; case 1: //date break; case 2: //dateyear if (itm==1) { T=RTC.getTime(); T.year++; RTC.setDate(T.date,T.mon,T.year); } break; case 8: //portsetup if (bitRead(SETUP8,0)==0){ bitWrite(SETUP8,0,1); }else{ bitWrite(SETUP8,0,0); } InPort(); StoreSetup(); break; } tone(13,5000,50); } if (bitRead(PC,0)==0) PORTB = PORTB | B00010000; else PORTB = PORTB & B11101111; oPC=PC; DYSPLAY(); }