工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino警報システム:SERENA

コンポーネントと消耗品

>
Arduino Mega 2560
× 1
3.2 "TFTLCDタッチスクリーン
× 1

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

私は以前に多くの警報システムを見て、それらをチェックして、それらがどのように機能するかを確認するようになり、自分で作りたいと思いました。つまり、なぜですか?何かを取り、それをさらに良くしてみませんか?つまり、私はコンピューターエンジニア(学部生ですが、すぐに変わります)です。

そして、それがこのプロジェクトの実現方法です。

私は多くのシステムとそれらが実際に提供できるものをチェックし、これらすべての機能(および私自身の機能の一部)をアラームのコントロールパネルとして機能する単一のArduinoボードに配置するのは良い考えだと思いました。

ここでトリッキーなことは何もありません。3.2インチのタッチスクリーンと一緒にボード自体を購入しました。もちろん、画面を機能させるには、いくつかのライブラリが必要でした。すべてのライブラリについて、HenningCarlsenに感謝します。クレジットで彼のWebサイトにリンクします。セクション。

プログラム

さて、これは私が完了するのに少し時間がかかりました。コードで混乱させないでください。必要に応じて常にコメントします。

アラームの主な機能

3つの異なるパスワードを含めることにしました。 4桁、5桁、6桁です。これらはたくさんあることは知っていますが、将来のアップデートでは、4桁のコードを無効にするオプションをユーザーに提供する予定です。

  • 4桁のパスは、アラームを作動させるために使用されます。
  • 5桁のパスは、アラームを部分的に解除するために使用されます。
  • 6桁のパスは、アラームを完全に解除するために使用されます。

アラームはそれ自体を自動作動させることもできます。 5桁のコードを入力すると、プログラムはカウントダウンを開始します(デフォルトは40秒)。このカウントダウンが終了すると、アラームは自動的に作動します。これは、通常、システムの準備を忘れる場合に非常に便利です。

オプションメニュー

オプションメニューでは、3つのパスワードすべてと、自動アーム時間を変更できます。

将来のアップデート

今後のアップデートには、日付/時刻の設定、SDカードのサポート(停電が発生し、データを失いたくない場合)、自動アーミングを無効にするオプション、4桁のパスを無効にするオプションなどが含まれます。 。

ショーケースビデオ

コード

  • SERENA v.1.01
SERENA v.1.01 Arduino
コードをArduinoボードにアップロードするだけです。
一部のコメントはギリシャ語ですが、これはまもなく変更されます。
 //////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////// SERENAアラームシステム//作成者:Michael Marinis //著作権(C)2016 MichaelMarinis。 All Rights Reserved //ウェブサイト:http://www.youtube.com/SauROnmiKE ////これはSERENA警報システムであり、ユーザーに警報を自動作動させる機能を提供する2機能の警報システムです。または、ユーザーが必要に応じて手動でアラームを設定します。////このプログラムには、Henning KarlsenのUTFTおよびURTouchライブラリと、シールド付きの互換性のあるLCD //画面が必要です。//////////////バージョン////////////0.10a:最初のビルド、基本機能//0.20a:マイナーな改善// 0.30a:新しい手動アームパスワードの入力と確認を渡します(12/11 /2016)//0.40a:パス入力と新しい自動アラームパスワードの確認が行われます(12/11/2016)// 1.00a:完了したアームパスワード入力とチェック(12/11 / 2016、19:16) //1.10a:システムが準備されたときにメニューを完了しました(リレーなどに信号を送信することなく)。日時は後日追加します。武装解除ボタンが追加されただけです(2016年11月13日、13:04)// 1.20a:「武装解除」ボタンをプログラムしました。 5桁のパスワード入力を求められます。パスワードチェックも行われ、アラームが解除されます(リレーなどに信号を送信することなく)(13/11 / 2016、14:15)// 1.21a:ユーザーが数字を入力できない問題を修正しましたパスワード確認後。ユーザーが「いいえ」を押した場合、「クリア」ボタンが押されるまで、ユーザーは新しいパスワードを入力できませんでした。これは修正されました(14/11 / 2016、13:32)// 1.22a:自動アーミングのカウントダウンタイマーが完了しました(14/11 / 2016、15:46)// 1.30a:自動アームメニューが完成しました。自動アームメニューには、アームが再び自動アームされるまでの残り秒数が表示されます。ライブラリの制限により、完全な武装解除メニューにプッシュボタンでアクセスできます(14/11 / 2016、21:42)// 1.31a:「buf」変数を「-1」から「0」に変更しました。これにより、数字ボタンを最初に押しても何も起こらないというバグが解決されました(16/11 / 2016、00:45)// 1.40b:ユーザーが4を変更できる「SETARMPASSWORD」ボタンが追加されました-アラームの準備に使用される数字のパスワード(16/11 / 2016、14:33)// 1.41b:「SETAUTO-ARM PASS」の「戻る」ボタンが、オプションメニューの2ページ目にリダイレクトされるようになりました。最初のものの代わりに(16/11 / 2016、16:21)// 1.42b:3番目のオプションメニューを完了しました。 「SETTIME」ボタンと「SETDATE」ボタンが含まれています(16/11 / 2016、16:37)// 1.43b:パス入力の解除のクリアボタンが実際に「自動入力」をリセットしないバグを修正しましたarray(17/11 / 2016、00:05)// 1.44b:[SET AUTO-ARM PASS]ボタンは、パスワードが変更されたときに、最初のオプションメニューではなく2番目のオプションメニューを表示するようになりました(18 / 11 / 2016、10:02)//変更は最終バージョン1.00までログに記録されます。 1.00以降、変更はSERENA_changelog.txtファイルに記録されます。//1.00:完全な武装解除機能の設計。この機能には6桁のパスワードが必要であり、アラームプログラムのメインメニューが表示されます。ボタンをクリックするたびにブザーが鳴ります(2017年8月1日、20:53)//////////将来のバージョン//////////// *新しいバージョンのアイデアここに配置されます* ///////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////#include  #include  UTFT myGLCD(ITDB32WC、38、39、40、41); URTouch myTouch(6、5、4、3、 2); extern uint8_t SmallFont []; extern uint8_t BigFont []; extern uint8_t SevenSegNumFont []; int x; int y; int armpass [4] ={1、2、3、4}; int autopass [5] ={ 1、2、3、4、5}; int manualpass [6] ={1、1、1、1、1、1}; int timeinput [4]; int arminput [4]; int autoinput [5]; int manualinput [6]; int autolength =0; int manuallength =0; int buzzerpin =8; int systarm =9; int serenapin =10; int buttonpin =13; int autoarmtime =40; int autoarmtimemem =autoarmtime; int month =1; int day =1; int year =2016; //カスタム関数void alarmtitle(){myGLCD.setFont(SmallFont); myGLCD.setBackColor(0、0、0); myGLCD.clrScr(); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.drawLine(0、14、319、14); myGLCD.print( "SERENA ALARM SYSTEM v.1.01"、CENTER、1);} void title()//名前が必要ないことがあるため分離{alarmtitle(); myGLCD.print( "BY MICHAEL MARINIS"、CENTER、30);} void drawbutton1(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(20、60、300、100);} void drawbutton2(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(20、120、300、160);} void drawdisarm(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(20、180、300、220); myGLCD.setColor(0、0、0); myGLCD.setBackColor(192、192、192); myGLCD.setFont(BigFont); myGLCD.print( "DISARM"、CENTER、193);} voidの欠点(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(20、180、150、210); myGLCD.setBackColor(192、192、192); myGLCD.setColor(0、0、0); myGLCD.setFont(SmallFont); myGLCD.print( "BACK"、70、190);} void drawo(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(20、180、150、210); myGLCD.setBackColor(192、192、192); myGLCD.setColor(0、0、0); myGLCD.setFont(SmallFont); myGLCD.print( "NO"、80、190);} void drawyes(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(170、180、300、210); myGLCD.setBackColor(192、192、192); myGLCD.setColor(0、0、0); myGLCD.setFont(SmallFont); myGLCD.print( "YES"、225、190);} void drawext(){myGLCD.setColor(192、192、192); myGLCD.fillRoundRect(170、180、300、210); myGLCD.setBackColor(192、192、192); myGLCD.setColor(0、0、0); myGLCD.setFont(SmallFont); myGLCD.print( "NEXT"、220、190);} void drawbuttons(){myGLCD.clrScr(); int z; myGLCD.setFont(SmallFont); for(z =0; z <3; z ++){myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20 +(z * 60)、15、60 +(z * 60)、55); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.printNumI(z + 1、37 +(z * 60)、30); } for(z =0; z <3; z ++){myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20 +(z * 60)、70、60 +(z * 60)、110); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.printNumI(z + 4、37 +(z * 60)、85); } for(z =0; z <3; z ++){myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20 +(z * 60)、125、60 +(z * 60)、165); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.printNumI(z + 7、37 +(z * 60)、140); } for(z =0; z <3; z ++){myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(190、15 +(z * 55)、290、55 +(z * 55)); } myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20、175、80、205); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.printNumI(0、48、185); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0); myGLCD.print( "CLEAR"、221、30); myGLCD.print( "OK"、232、85); myGLCD.print( "BACK"、225、140);} void optionsmenuend(){myGLCD.clrScr(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.drawLine(0、14、319、14); myGLCD.setBackColor(255、0、0); alarmtitle(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.print( "オプションメニュー"、センター、20); drawbutton1(); drawbutton2();欠点(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0);} void optionsmenu(){myGLCD.clrScr(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.drawLine(0、14、319、14); myGLCD.setBackColor(255、0、0); alarmtitle(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.print( "オプションメニュー"、センター、20); drawbutton1(); drawbutton2();欠点(); drawext(); myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.setBackColor(255、0、0);} void drawoptions(){myGLCD.setFont(BigFont); myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20、70、300、120); myGLCD.setBackColor(255、0、0); myGLCD.setColor(255、255、255); myGLCD.print( "OPTIONS"、CENTER、90);} void drawarm(){myGLCD.setFont(BigFont); myGLCD.setColor(255、0、0); myGLCD.fillRoundRect(20、140、300、190); myGLCD.setBackColor(255、0、0); myGLCD.setColor(255、255、255); myGLCD.print( "ARM"、CENTER、160);} void printmonth(int i){myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.setFont(BigFont); if(i ==1){myGLCD.print( "JANUARY"、95、100); } if(i ==2){myGLCD.print( "FEBRUARY"、95、100); } if(i ==3){myGLCD.print( "MARCH"、95、100); } if(i ==4){myGLCD.print( "APRIL"、95、100); } if(i ==5){myGLCD.print( "MAY"、70、100); } if(i ==6){myGLCD.print( "JUNE"、95、100); } if(i ==7){myGLCD.print( "JULY"、95、100); } if(i ==8){myGLCD.print( "AUGUST"、95、100); } if(i ==9){myGLCD.print( "SEPTEMBER"、95、100); } if(i ==10){myGLCD.print( "OCTOBER"、95、100); } if(i ==11){myGLCD.print( "NOVEMBER"、95、100); } if(i ==12){myGLCD.print( "DECEMBER"、95、100); }} // int updatedate(int d、int m、int y)// {// if(y%4 ==0)// DISEKTO ETOS // {// if((m> =0)&&(m <=13))// {// if(m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12)// {// if((d> =0)&&(d <=32))// {// if(d ==0)// {// d =31; //} // // if(d ==32)// {// d =1; //} //} //} //} //} // DISEKTO ETOS END //} int armupdate(int i、int armlength) {if(armlength <4){if(armlength ==0){arminput [0] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(arminput [0]、100、185); // + 35 gia kathe noumero meta digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); arminput [0]を返します。 } if(armlength ==1){arminput [1] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(arminput [1]、135、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); arminput [1]を返します。 } if(armlength ==2){arminput [2] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(arminput [2]、170、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); arminput [2]を返します。 } if(armlength ==3){arminput [3] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(arminput [3]、205、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); arminput [3]を返します。 }}} int autoarmupdate(int i、int timelength){if(timelength <5){if(timelength ==1){timeinput [0] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(timeinput [0]、100、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); timeinput [0]を返します。 } if(timelength ==2){timeinput [1] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(timeinput [1]、135、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); timeinput [1]を返します。 } if(timelength ==3){timeinput [2] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(timeinput [2]、170、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); timeinput [2]を返します。 } if(timelength ==4){timeinput [3] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(timeinput [3]、205、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); timeinput [3]を返します。 }}} int autoupdate(int i、int autolength){if(autolength <5){if(autolength ==0){autoinput [0] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [0]、100、185); // + 35 gia kathe noumero meta digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); autoinput [0]を返します。 } if(autolength ==1){autoinput [1] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [1]、135、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);自動入力を返す[1]; } if(autolength ==2){autoinput [2] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [2]、170、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);自動入力を返す[2]; } if(autolength ==3){autoinput [3] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [3]、205、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);自動入力を返す[3]; } if(autolength ==4){autoinput [4] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [4]、240、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);自動入力を返す[4]; } if(autolength ==5){autoinput [5] =i; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(autoinput [5]、275、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);自動入力を返す[5]; }}} int manualupdate(int i、int manuallength){if(manuallength <6){if(manuallength ==0){manualinput [0] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [0]、100、185); // + 35 gia kathe noumero meta digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[0]; } if(manuallength ==1){manualinput [1] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [1]、135、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[1]; } if(manuallength ==2){manualinput [2] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [2]、170、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[2]; } if(manuallength ==3){manualinput [3] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [3]、205、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[3]; } if(manuallength ==4){manualinput [4] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [4]、240、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[4]; } if(manuallength ==5){manualinput [5] =i; // manuallength ++; myGLCD.setColor(255、0、0); myGLCD.setBackColor(0、0、0); myGLCD.printNumI(manualinput [5]、275、185); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW);手動入力を返す[5]; }}} void setup(){myGLCD.InitLCD(); myGLCD.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_EXTREME); pinMode(buzzerpin、OUTPUT); pinMode(systarm、OUTPUT); pinMode(serenapin、OUTPUT); digitalWrite(buzzerpin、HIGH); delay(1000); digitalWrite(buzzerpin、LOW);タイトル(); drawoptions(); drawarm();} void loop(){while(true){mainmenu:if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //オプションボタンif((x> =20)&&(x <=300)&&(y> =70)&&(y <=120)){オプション:optionsmenu(); myGLCD.setBackColor(192、192、192); myGLCD.setColor(0、0、255); myGLCD.print( "SET MANUAL-ARM PASSWORD"、CENTER、73); myGLCD.print( "SET ARM PASSWORD"、CENTER、133); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); while(true){if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //手動パスワードボタンを設定if((x> =20)&&(x <=300)&&(y> =60)&&(y <=100)){title(); myGLCD.setBackColor(0、0、0); myGLCD.setColor(255、0、0); myGLCD.print( "ENTER 6-DIGIT PASSWORD"、CENTER、119);欠点(); drawext(); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); while(true){if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); if((x> =20)&&(x <=150)&&(y> =180)&&(y <=210)){digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); gotoオプション; } if((x> =170)&&(x <=300)&&(y> =180)&&(y <=210))//ボタンメニュー{for(int o =0; o <6; o ++){ manualinput [o] =0; } passinput:int buf =0; myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.drawLine(0、14、319、14); myGLCD.setColor(255、255、255); drawbuttons(); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); myGLCD.setFont(SevenSegNumFont); myGLCD.setBackColor(0、0、0); // akolouthei to while(true)&drawbuttons(TICK!)while(true){if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //ボタン1〜3 if((y> =15)&&(y <=55)){if((x> =20)&&(x <=60))// 1 {manualupdate(1、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 2 {manualupdate(2、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 3 {manualupdate(3、buf); buf ++; delay(85); }} // BUTTONS 1-3 END if((y> =70)&&(y <=110))// BUTTONS 4-6 {if((x> =20)&&(x <=60))// 4 {manualupdate(4、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 5 {manualupdate(5、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 6 {manualupdate(6、buf); buf ++; delay(85); }} //ボタン4-6END if((y> =125)&&(y <=165))//ボタン7-9 {if((x> =20)&&(x <=60))// 7 {manualupdate(7、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 8 {manualupdate(8、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 9 {manualupdate(9、buf); buf ++; delay(85); }} //ボタン7-9END if((x> =20)&&(x <=80)&&(y> =175)&&(y <=205))// 0 {manualupdate(0、buf); buf ++; delay(85); } if((x> =190)&&(x <=290)&&(y> =70)&&(y <=110))// OKボタン{boolフラグ=true; for(int t =0; t <6; t ++){if(manualinput [t]!=manualpass [t]){フラグ=false; }} if(flag ==true)// swstos kwdikos {for(int i =0; i <6; i ++){manualinput [i] =0; } myGLCD.clrScr(); myGLCD.setFont(BigFont); myGLCD.print( "PASS OK!"、CENTER、100); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); delay(2000);タイトル(); myGLCD.setBackColor(0、0、0); myGLCD.setColor(255、0、0); myGLCD.print( "新しいパスワードを入力"、CENTER、119);欠点(); drawext(); while(true){if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); int buf =0; // EISAGWGH NEOU KWDIKOU if((x> =170)&&(x <=300)&&(y> =180)&&(y <=210)){newmanpassinput:myGLCD.setFont(SmallFont); myGLCD.setColor(255、255、255); myGLCD.drawLine(0、14、319、14); myGLCD.setColor(255、255、255); drawbuttons(); digitalWrite(buzzerpin、HIGH); delay(50); digitalWrite(buzzerpin、LOW); myGLCD.setFont(SevenSegNumFont); myGLCD.setBackColor(0、0、0); while(true){if(myTouch.dataAvailable()){myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //ボタン1〜3 if((y> =15)&&(y <=55)){if((x> =20)&&(x <=60))// 1 {manualupdate(1、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 2 {manualupdate(2、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 3 {manualupdate(3、buf); buf ++; delay(85); }} // BUTTONS 1-3 END if((y> =70)&&(y <=110))// BUTTONS 4-6 {if((x> =20)&&(x <=60))// 4 {manualupdate(4、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 5 {manualupdate(5、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 6 {manualupdate(6、buf); buf ++; delay(85); }} //ボタン4-6END if((y> =125)&&(y <=165))//ボタン7-9 {if((x> =20)&&(x <=60))// 7 {manualupdate(7、buf); buf ++; delay(85); } if((x> =80)&&(x <=120))// 8 {manualupdate(8、buf); buf ++; delay(85); } if((x> =140)&&(x <=180))// 9 {manualupdate(9、buf); buf ++; delay(85); }} //ボタン7-9END if((x> =20)&&(x <=80)&&(y> =175)&&(y <=205))// 0 {manualupdate(0、buf); buf ++; delay(85); } // EDW THA MPEI TOOK。 THA RWTAW AN O KWDIKOS EINAI ENTAKSEI(2 KOUMPIA、YES&NO)。 AN "YES"、TOTE THA EPISTREFEI STO ARXIKO MENOU、AN "NO" THA EPISTREFEI STHN EISAGWGH KWDIKOY if((x> =190)&&(x <=290)&&(y> =70)&&(y <=110) )// NEW PASS OK BUTTON {buf =0; myGLCD.clrScr(); title(); ...このファイルは切り捨てられています。ダウンロードして完全な内容を確認してください。

製造プロセス

  1. フェイルセーフ設計
  2. モーション検知警報システム
  3. Arduinoのみを使用するDTMFデコーダー
  4. Arduinoを使用した自動植物散水システム
  5. 警報システムのセキュリティが試される
  6. 地下室/クロールスペース換気システム
  7. Python3とArduinoコミュニケーション
  8. ArduinoとGoogleスプレッドシートに基づく出席システム
  9. Arduinoベースの衝突検出警告システム
  10. Arduinoベースのセキュリティシステム
  11. DS1302RTCを備えたシンプルな目覚まし時計