デジタル時計 スケッチ(3/3)

// int mmMmode; // タイマーチェック時 mainmode記憶

// int mmSmode; // submode記憶

// int tmOnFg=false; // タイマーOnのフラグ

// int tmEnd=false // タイマー鳴らした

void TmChkOther() {

if (rptTmFg == true) {

RptTmChk();

if ((rptBb3 == 0) && (rptBb4 == 0)) {

noTone(SUND);

} else if (rptBb3 > 0) {

beebee3();

} else if (rptBb4 > 0) {

beebee4();

}

// 考える

} else {

TmCheck();

if (tmEnd == true) {

tmEnd = false;

tmOnFg = false;

// submode[2]=2;

}

}

}

void TmChkCore() {

if (RTC.read(tm)) {

;

}

krH = 0;

krM = 0;

rmS = tgS - tm.Second;

if (rmS < 0) {

rmS = rmS + 60;

krM = -1;

}

rmM = tgM - tm.Minute + krM;

if (rmM < 0) {

rmM = rmM + 60;

krH = -1;

}

rmH = tgH - tm.Hour + krH;

}

void TmCheck() {

//mmMmode=mainmode;

//mmSmode=submode[mainmode];

if (tmOnFg == true) {

TmChkCore();

if ((rmH == 0 && rmM == 0 && rmS == 0) || (rmH < 0)) {

tmEnd = true;

dispH = rmM;

dispM = rmS;

dispHour();

dispMin();

dispDp();

beebee2();

submode[2] = 2;

}

}

}

void RptTmChk() {

if ((tmOnFg != true) || (rptTmFg != true)) {

goto OutRptTmChk;

}

if (rptBb4 > 0 ) {

rptBb4 = rptBb4 + 1 ; //beebee4 で 鳴らし終わったら rptBb4=0 をする

// TmChkCore();

} else if (rptBb3 > 0 ) {

rptBb3 = 1 + ((rptBb3 + 1) % 120 ); //120 の値は 実験しながら決める ほぼ1秒になるように

TmChkCore();

if (((rmH == 0) && (rmM == 0 ))) { // if (((rmH == 0) && (rmM == 0 )) || (rmH < 0 )) {

if (rmS == 0 ) { // if ((rmS <= 0 ) || (rmH < 0 )) {

rptBb4 = 1;

rptBb3 = 0; // rptBb3 = 0 は rptBb4=1 にしたとき

rptTmReStrt();

}

}

} else {

TmChkCore();

if (((rmH == 0) && (rmM == 0 )) || (rmH < 0 )) {

if ((rmS <= 0 ) || (rmH < 0 )) {

rptBb4 = 1;

rptBb3 = 0;

rptTmReStrt();

} else if (rmS <= 3 ) {

rptBb3 = 1;

rptBb4 = 0;

} else {

rptBb3 = 0;

rptBb4 = 0;

}

}

}

OutRptTmChk: ;

}

//mmMmode=mainmode;

//mmSmode=submode[mainmode];

void beebee() {

int i = 1;

while (i < 100 )

{

for (int ii = 0; ii < 2; ii++) {

if (i < 100) {

tone(SUND, 600,140);

delay(10);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101;

btchkReset();

goto JMP ;

}

delay(20);

disptemptemp();

}

}

for (int ii = 0; ii < 2; ii++) {

if (i < 100) {

tone(SUND, 400, 140);

delay(10);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101;

btchkReset();

goto JMP ;

}

delay(20);

disptemptemp();

}

}

for (int ii = 0; ii < 2; ii++) {

if (i < 100) {

tone(SUND, 800, 140);

delay(10);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101;

btchkReset();

goto JMP ;

}

delay(250);

disptemptemp();

}

}

JMP:

i++ ;

}

alStopTm = m;

}

void beebee2() {

int i = 0;

while (i < 100 )

{

for (int ii = 0; ii < 6; ii++) {

if (i < 100) {

tone(SUND, 600 + ii * 30, 50);

//delay(50);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101; //while を抜ける

btchkReset();

goto JMP ;

}

delay(150);

disptemptemp();

}

}

for (int ii = 0; ii < 6; ii++) {

if (i < 100) {

tone(SUND, 400 + ii * 15, 75);

//delay(50);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101;

btchkReset();

goto JMP ;

}

delay(150);

disptemptemp();

}

}

for (int ii = 0; ii < 6; ii++) {

if (i < 100) {

tone(SUND, 800 - ii * 30, 130);

//delay(50);

BtnChk();

if (btchk[UPBT - OFST] || btchk[DOWNBT - OFST] || btchk[ONOFFBT - OFST]) {

i = 101;

btchkReset();

goto JMP ;

}

delay(150);

disptemptemp();

}

}

JMP:

i++ ;

}

alStopTm = m;

}

void beebee3() {

if (rptBb3 < 25) {

tone(SUND, 500);

} else {

noTone(SUND);

}

}

void beebee4() {

if (rptBb4 < 65) {

tone(SUND, 1000);

} else {

noTone(SUND);

rptBb4 = 0;

}

}

void snz() {

int snzFxTm = 2; //2-3分間隔で鳴る ///////////////////////////////////////

//snzFg=true;

//dispD = mainmode;

alPassTm = m;

dispD = 0;

// while (snzFg && (alPassTm - alStopTm <snzFxTm)){

if (RTC.read(tm)) {

;

}

h = tm.Hour;

m = tm.Minute;

sd = tm.Second;

alPassTm = m;

if (alPassTm < alStopTm ) {

alPassTm = alPassTm + 60;

}

if (snzFg == false) {

btchkReset();

mainmode = 0;

submode[mainmode] = 0;

alFg = false;

AlL = AlLed[alFg];

//digitalWrite(ALLED, alFg);

} else if ((alPassTm - alStopTm ) > snzFxTm) {

bbflg = 1 - bbflg;

if (bbflg == 0) {

beebee();

} else {

beebee2();

}

/* if (random(0,2) == 0){

beebee();

} else{

beebee2();

} */

snzFg = true;

kReset();

} else {

dispH = h;

if (dispH / 10 == 0) {

tmpfg = LOW;

}

else {

tmpfg = HIGH;

}

dispM = m;

snzI++;

if (snzI > snzIMax) {

snzI = 0;

snzDspFg = ! snzDspFg;

}

DispSnz();

/*

if (snzDspFg) {

dispHour();

dispMin();

dispDp(); // ok

} else {

delay(25); ////////////////////////////////25

}

*/

BtnChk();

if (k[0] == false) {

if (btchk[ONOFFBT - OFST]) {

k[0] = true;

snzDspIdx = 3;

}

} else if (k[1] == false) {

if (btchk[DOWNBT - OFST]) {

k[1] = true;

snzDspIdx = 4;

}

} else if (k[2] == false) {

if (btchk[UPBT - OFST]) {

k[2] = true;

snzDspIdx = 2;

}

} else if (k[3] == false) {

if (btchk[ONOFFBT - OFST]) {

k[3] = true;

snzDspIdx = 3;

}

} else if (k[4] == false) {

if (btchk[DOWNBT - OFST]) {

k[4] = true;

snzDspIdx = 4;

}

} else if ( k[5] == false) {

if (btchk[UPBT - OFST]) {

k[5] = true;

snzDspIdx = 2;

}

} else if (k[6] == false) {

if (btchk[ONOFFBT - OFST]) {

k[6] = true;

snzDspIdx = 3;

}

} else if (k[7] == false) {

if (btchk[DOWNBT - OFST]) {

k[7] = true;

snzDspIdx = 4;

}

} else if (k[8] == false) {

if (btchk[UPBT - OFST]) {

k[8] = true;

snzDspIdx = 2;

}

} else if (k[8] == true) {

alFg = false;

AlL = AlLed[alFg];

//digitalWrite(ALLED, alFg);

snzFg = false;

}

btchkReset();

} //while

} //if (snzFg )

void btchkReset() {

btchk[ONOFFBT - OFST] = false;

btchk[UPBT - OFST] = false;

btchk[DOWNBT - OFST] = false;

}

void kReset() {

for (int i = 0 ; i < 9; i++) {

k[i] = false;

}

snzDspIdx = 2;

}

void dispMin(){

PORTB = Seg[dispM / 10] OPRT DpA;

digitalWrite(LED3, HIGH);

delay(3);

digitalWrite(LED3, LOW);

PORTB = Seg[dispM % 10] OPRT DpA;

digitalWrite(LED4, HIGH);

delay(3);

digitalWrite(LED4, LOW);

}

void dispHour(){

if (upDisp) {

PORTB = Seg[dispH / 10] OPRT DpA;

digitalWrite(LED1, tmpfg);

delay(3);

digitalWrite(LED1, LOW);

PORTB = Seg[dispH % 10] OPRT DpA;

digitalWrite(LED2, HIGH);

delay(3);

digitalWrite(LED2, LOW);

} else {

delay(6);

}

}

void dispDp(){

DpD = DpDisp[dispD];

DpDAO = DpD OPRT AlL OPRT OpL;

PORTB = DpDAO;

digitalWrite(LEDDP, HIGH); /////////////////////////////

delay(3);

digitalWrite(LEDDP, LOW);

}

void dispMinOff(){

digitalWrite(LED3, LOW);

delay(3);

digitalWrite(LED4, LOW);

delay(3);

}

void dispHourOff(){

digitalWrite(LED1, LOW);

delay(3);

digitalWrite(LED2, LOW);

delay(3);

}

void dispDpOff()

{

digitalWrite(LEDDP, LOW);

delay(3);

}

void disp1(){

PORTB = Seg[dp1] OPRT DpA;

digitalWrite(LED1, HIGH);

delay(3);

digitalWrite(LED1, LOW);

}

void disp2(){

PORTB = Seg[dp2] OPRT DpA;

digitalWrite(LED2, HIGH);

delay(3);

digitalWrite(LED2, LOW);

}

void disp3(){

PORTB = Seg[dp3] OPRT DpA;

digitalWrite(LED3, HIGH);

delay(3);

digitalWrite(LED3, LOW);

}

void disp4(){

PORTB = Seg[dp4] OPRT DpA;

digitalWrite(LED4, HIGH);

delay(3);

digitalWrite(LED4, LOW);

}

void disptemptemp() {

if (snzFg == true) {

if (RTC.read(tm)) {

yr = tm.Year + 1970 - 2000 ; //1970年が基準でRTCの内部で処理されている

mh = tm.Month;

dy = tm.Day;

h = tm.Hour;

m = tm.Minute;

sd = tm.Second;

//普通のとき

dispH = h;

if (dispH / 10 == 0) {

tmpfg = LOW;

}

else {

tmpfg = HIGH;

}

dispM = m;

}

}

for (int i = 0; i < 2; i++) {

dispHour();

dispMin();

dispDp();

// BtnChk();

}

}

void DispSnz(){

if (snzDspFg) {

dispHour();

dispMin();

dispDp(); // ok

} else{

dispDp();

//delay(8);

switch(snzDspIdx){

case 2:

//for (int i = 0; i < 2; i++) {

if ((snzI>9) && (snzI<12)) {

PORTB = Seg[dispH % 10] OPRT DpA;

digitalWrite(LED2, HIGH);

delay(5);

digitalWrite(LED2, LOW);

} else{

//digitalWrite(LED2, LOW);

delay(15);

}

//}

break;

case 3:

//for (int i = 0; i < 2; i++) {

if ((snzI>9) && (snzI<12)) {

PORTB = Seg[dispM / 10] OPRT DpA;

digitalWrite(LED3, HIGH);

delay(5);

digitalWrite(LED3, LOW);

} else{

//digitalWrite(LED3, LOW);

delay(15);

}

//}

break;

case 4:

//for (int i = 0; i < 2; i++) {

if ((snzI>9) && (snzI<12)) {

PORTB = Seg[dispM % 10] OPRT DpA;

digitalWrite(LED4, HIGH);

delay(5);

digitalWrite(LED4, LOW);

} else{

//digitalWrite(LED4, LOW);

delay(15);

}

//}

break;

}

}

}

void dispHourTest(){

for (int jjj = 0; jjj < 20; jjj++) {

for (int i = 0; i < 100; i++) {

PORTB = Seg[jjj] OPRT DpA; // + plsDp;

digitalWrite(LED1, true);

delay(3);

digitalWrite(LED1, LOW);

PORTB = Seg[0] OPRT DpA;

digitalWrite(LED2, HIGH);

delay(3);

digitalWrite(LED2, LOW);

}

}

}

bool getTime(const char *str){

int Hour, Min, Sec;

if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;

tm.Hour = Hour;

tm.Minute = Min;

tm.Second = Sec + 15;

return true;

}

bool getDate(const char *str){

char Month[12];

int Day, Year;

uint8_t monthIndex;

if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;

// for (monthIndex = 0; monthIndex < 12; monthIndex++) {

// if (strcmp(Month, monthName[monthIndex]) == 0) break;

// }

if (monthIndex >= 12) return false;

tm.Day = Day;

tm.Month = monthIndex + 1;

tm.Year = CalendarYrToTm(Year);

return true;

}

void intpros0(){

//Mode ボタンを押したとき  割り込み

nowTimeM = millis();

//conChk = digitalRead(0);

checkMainM();

}

void intpros1(){

//Set ボタンを押したとき  割り込み

nowTimeS = millis();

//conChk = digitalRead(1);

checkMainS();

}

void checkMainM() {

if (nowTimeM - prevTimeM > timeChat) {

if (conM == LOW ) {

chMode();

}

conM = !conM;

}

prevTimeM = nowTimeM;

}

void checkMainS() {

if (nowTimeS - prevTimeS > timeChat) {

if (conS == LOW ) {

chSet();

}

conS = !conS;

}

prevTimeS = nowTimeS;

}

void chMode() {

if (dspF > 10) {

modebtFg = true;

// dspF=2;

} else if (snzFg == false) {

modebtFg = true;

if ((mainmode == 0) || (mainmode == 1)) {

submode[mainmode] = 0;

}

mainmode = (mainmode + 1) % 4;

for (int i = 0; i < timesModeSet; i++) {

PORTB = Seg[mainmode] OPRT DpA;

digitalWrite(LED1, HIGH);

delay(5);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

PORTB = Seg[submode[mainmode]] OPRT DpA;

digitalWrite(LED3, HIGH);

delay(5);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

//PORTD = Seg[10];

PORTB = Seg[10] OPRT DpA;

digitalWrite(LEDDP, LOW);

}

} else {

;

}

rptBb3=0;

rptBb4=0;

noTone(SUND);

}

void chSet() {

if (dspF > 10) {

dspF = dspF + 1;

setbtFg = true;

} else if (snzFg == false) {

setbtFg = true;

switch (mainmode) {

case 0:

submode[mainmode] = (submode[mainmode] + 1) % 7;

break;

case 1:

submode[mainmode] = (submode[mainmode] + 1) % 2;

break;

case 2:

submode[mainmode] = (submode[mainmode] + 1) % 4;

break;

case 3:

submode[mainmode] = 0;

//submode[mainmode]=(submode[mainmode] + 1) % 3;

break;

}

// if (mainmode !=1){

for (int i = 0; i < timesModeSet; i++) {

PORTB = Seg[mainmode] OPRT DpA;

digitalWrite(LED1, HIGH);

delay(5);

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

PORTB = Seg[submode[mainmode]] OPRT DpA;

digitalWrite(LED3, HIGH);

delay(5);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

// PORTB = Seg[10];

// digitalWrite(LEDDP, HIGH);

// delay(5);

// digitalWrite(LEDDP, LOW);

}

// }

} else {

}

}

void setTime() {

byte hour = (setHour / 10) * 0x10 + (setHour % 10);

byte minute = (setMin / 10) * 0x10 + (setMin % 10);

byte sec = 0;

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(0x00);

Wire.endTransmission();

Wire.requestFrom(DS1307_ADDRESS, 3);

byte r_sec = Wire.read();

byte r_minute = Wire.read();

byte r_hour = Wire.read();

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(0x00);

Wire.write((r_sec & 0x80) | sec);

Wire.write(minute);

Wire.write((r_hour & 0x40) | hour);

Wire.endTransmission();

}

void setTimeSP() {

byte hour = (setHour / 10) * 0x10 + (setHour % 10);

byte minute = (setMin / 10) * 0x10 + (setMin % 10);

byte sec = (setScnd / 10) * 0x10 + (setScnd % 10);

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(0x00);

Wire.endTransmission();

Wire.requestFrom(DS1307_ADDRESS, 3);

byte r_sec = Wire.read();

byte r_minute = Wire.read();

byte r_hour = Wire.read();

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(0x00);

Wire.write((r_sec & 0x80) | sec);

Wire.write(minute);

Wire.write((r_hour & 0x40) | hour);

Wire.endTransmission();

}

void setYMD() {

byte year;

byte month = (setMonth / 10) * 0x10 + (setMonth % 10);

byte date = (setDay / 10) * 0x10 + (setDay % 10);

byte day_of_week = 0; // ダミー

year = ((setYear % 100) / 10) * 0x10 + (setYear % 10);

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(0x03);

Wire.write(day_of_week);

Wire.write(date);

Wire.write(month);

Wire.write(year);

Wire.endTransmission();

}

void BtnChk() {

//ボタン押されていない HIGH 押されている LOW

//元の状態保持 btcon 押されていない HIGH 押されている LOW

//信号あり btchk あり true なし false

int once = 0 ;

int pstm = 0; //経過時間をカウント

pstm = 0;

//OpL = OpLed[LEDOFF];

//digitalWrite(OPLED, LEDOFF);

for (byte i = ONOFFBT; i <= UPBT; i++) {

byte val;

val = digitalRead(i); // 押されていなかった//押された

if (btcon[i - OFST] == HIGH && val == LOW ) {

btchk[i - OFST] = true;

// delay(timeChat);

}

btcon[i - OFST] = val; //LOW=0 HIGH=1 true=1 false=0 !false=1 ここまでただのチェック

if (btchk[i - OFST] == true) { //ここから長押しのチェック 20210709

while ((val == LOW) && (pstm < 3000)) {

val = digitalRead(i);

if (val == LOW) {

pstm++;

delay(1);

} else {

pstm = 0; /* スイッチを離したら時間リセット */

}

}

if (pstm >= 2999 ) {

pstm = 0 ;

btLong[i - OFST] = true;

} else {

pstm = 0 ;

btLong[i - OFST] = false;

}

}

}

}

void clcTime() {

int km = 0;

int kh = 0;

int kd = 0;

clcS = ( clcS1 + clcS2) % 60;

km = ( clcS1 + clcS2) / 60;

if (clcS < 0) {

km--;

clcS = clcS + 60;

}

clcM = (clcM1 + clcM2 + km) % 60;

kh = (clcM1 + clcM2 + km) / 60;

if (clcM < 0) {

kh--;

clcM = clcM + 60;

}

clcH = (clcH1 + clcH2 + kh) % 24;

kd = (clcH1 + clcH2 + kh) / 24;

if (clcH < 0) {

kd--;

clcH = clcH + 24;

}

clcD = kd;

}

void compTime() {

int km = 0;

int kh = 0;

int kd = 0;

clcS = clcS1 - clcS2;

if (clcS < 0) {

km++;

} else if (clcS > 59) {

km--;

}

clcM = clcM1 - clcM2 - km;

if (clcM < 0) {

kh++;

} else if (clcM > 59) {

kh--;

}

clcH = clcH1 - clcH2 - kh;

if (clcH < 0) {

kd++;

} else if (clcH > 23) {

kd--;

}

clcD = (-1) * kd;

}

void setAdjT() {

int tmpK;

if (adjVlue == 0) {

adjSetF = false;

} else {

adjRmS = adjTS;

adjRmM = adjTM;

adjRmH = adjTH;

adjRmD = adjTD;

adjTgS = sd + adjTS;

if (adjTgS > 59) {

tmpK = 1;

adjTgS = adjTgS - 60;

} else {

tmpK = 0;

}

/* if ((adjTgS + adjVlue)>60){ // 調整したとき、繰り上がり、繰り下がりを避けるため

adjTgS=adjTgS-adjVlue;

} else if ((adjTgS + adjVlue)<0){

adjTgS=adjTgS-adjVlue;

} */

adjTgM = m + adjTM + tmpK;

if (adjTgM > 59) {

tmpK = 1;

adjTgM = adjTgM - 60;

} else {

tmpK = 0;

}

adjTgH = h + adjTH + tmpK;

if (adjTgH > 23) {

adjTgH = adjTgH - 24;

adjCntD = adjTD + 1;

} else {

tmpK = 0;

}

adjSetF = true;

}

}

void adjChk() {

if (adjSetF == false) {

;

} else { //adjSetF==true

if (adjF == true) { //既に設定済み adjDo はまだ

;

} else { //adjSetF==true && adjF==false

if (adjCntD > 0) {

adjF = false;

if (dy != prvD) {

adjCntD--;

prvD = dy;

// adjF=false;

}

} else { //adjCntD==0 のとき

clcS1 = adjTgS;

clcS2 = sd;

clcM1 = adjTgM;

clcM2 = m;

clcH1 = adjTgH;

clcH2 = h;

compTime();

if ((clcD < 0) || ((adjTgH == h) && (adjTgM == m) && (adjTgS == sd))) {

adjF = true;

adjSetF = false;

} else {

adjF = false;

}

}

}

}

}

void adjDo() {

setScnd = sd + adjVlue; // 繰り上がり、繰り下がりを避ける処理済み

setMin = m ;

setHour = h;

setTimeSP();

adjF = false;

adjSetF = false;

setAdjT();

}

void rptTmPre() {

if (rptTmFg == true) {

rptDpIx = ( rptDpIx + 1 ) % 40;

if (rptDpIx > 20) {

dispD = 1;

} else {

dispD = 2;

}

}

}

void rptTmReStrt() {

rmS = 0;

rmM = 0;

rmH = 0;

//rptBb3 = 0;

//rptBb4 = 0;

// if (btchk[ONOFFBT - OFST]) {

// submode[mainmode] = 4;

if (RTC.read(tm)) {

;

}

nowH = tm.Hour;

nowM = tm.Minute;

nowS = tm.Second;

tgS = nowS + tmrS;

if (tgS > 59) {

krM = tgS / 60;

tgS = tgS % 60;

} else {

krM = 0;

}

tgM = nowM + tmrM + krM;

if (tgM > 59) {

krH = tgM / 60;

tgM = tgM % 60;

} else {

krH = 0;

}

tgH = nowH + tmrH + krH;

TmChkCore();

}

void resetOEproc(int x){

mMmainmode = mainmode;

mMsubmode = submode[mainmode];

RTC.read(tm);

oeSH = tm.Hour; //長時間表示そのまま、何かのエラー その時表示を時計に戻す用 始まり時刻

oeSM = tm.Minute;

oeSS = tm.Second;

oeOfS = oeSS; //時計表示に戻す時刻 set

oeOfM = oeSM + x;

if ( oeOfM > 59 ){

oeOfM = oeOfM - 60;

oeOfH = oeSH + 1;

if (oeOfH == 24){

oeOfH = 0;

}

} else {

oeOfH = oeSH;

}

}

void TempChk(){

for (int i=0;i<3; i++){

sensors.requestTemperatures();

TempValue=(sensors.getTempCByIndex(0)) * 10;

}

for (int i = 0;i<200; i++){

TempDisp();

}

}

void TempDisp(){

int t1;

int t2;

int t3;

float tt;

tt = TempValue; // (sensors.getTempCByIndex(0)) * 10;

t1 = ((abs(tt)) / 100);

t2 = ((abs(tt) - (t1 * 100)) /10);

t3 = ((abs(tt) - (t1 * 100)-(t2 * 10)) );

DpA = DpAdd[0];

if (tt < 0){

dp1=dispChMinus;

disp1();

}

if (t1>0){

dp2=t1;

disp2();

}

dp3=t2;

DpA = DpAdd[1];

disp3();

DpA = DpAdd[0];

dp4=t3;

disp4();

}

void chkDoOEproc(int x){

//Serial.print("mainmode : ");

//Serial.print(mainmode);

//Serial.print(" -> ");

//Serial.print(mMmainmode);

//Serial.print(" submode : ");

//Serial.print(submode[mainmode]);

//Serial.print(" -> ");

//Serial.println(mMsubmode);

if ( ( mMmainmode == mainmode ) and ( mMsubmode == submode[mainmode] ) ){

RTC.read(tm);

if ( ( oeOfM <= tm.Minute ) and ( oeOfH <= tm.Hour ) and ( oeOfS <= tm.Second ) ){

mainmode = 0;

submode[mainmode] = 0;

}

} else {

resetOEproc(x);

}

}

自作ギターなど手作り大好きキホーテの部屋

自作ギター、手作りウクレレ、電子回路、ミキサー、Arduinoを使った時計、木工などいろいろ、作ったり、直したり。道具の使い方も。ギター作りなど、手作り大好きキホーテの発想と失敗と反省と教訓と喜びなどの記録。