光センサモジュールにおける点滅の検知
うちの工場のシグナルタワーは、
稼働準備中=点滅
稼働中=点灯
となっているので、それを分けて記録できるようにコードを作成してみた。
光センサモジュールを1分毎に0.25秒×4回読み取って、光っていない時があれば点滅(出力0)としてみた。
#include <SD.h> //---SDCard D4 pin const int sd_chip_select = 4; //---テスト用 int test_count = 0; String test_str = ""; int val=0; int val2=0; int val3=0; int val4=0; int valsum=0; void setup() { //---Serialポートを開く Serial.begin(9800); pinMode(SS, OUTPUT); Serial.print(F("SDCard:")); //---SDライブラリの初期化エラー if(!SD.begin(sd_chip_select)) { Serial.println(F(" error...")); }else{ Serial.println(F(" OK")); //---ファイル一覧を表示 Serial.println(F("----------------------------")); Serial.println(F("----------------------------")); } } void loop(){ val=digitalRead(2); delay(250); val2=digitalRead(2); delay(250); val3=digitalRead(2); delay(250); val4=digitalRead(2); if(val==0 && val2==0 && val3==0 && val4==0){valsum=1;} else{valsum=0;} test_str += valsum; test_str +=","; SdFileWrite("SEN1.csv", test_str); Serial.print(F("SEN1:")); Serial.println(valsum); Serial.println(F("----------------------------")); delay(59000); } void SdFileWrite(String p_file_name, String p_str) { //---上書きモードでファイルを開く File file = SD.open(p_file_name , FILE_WRITE | O_TRUNC); if(file){ //---書き込み file.print(p_str); } else{ Serial.println(F(" error...")); } //---ファイルを閉じる file.close(); }
プログラミング知ってる人ならば0.25秒毎とかやらずに処理できると思うけど、初心者で思いつく方法はこれが精一杯だった。もう少し詳しくなったら改造を行いたい。
【ジャパンカップ】
三連複的中したけど、960円では・・・
しかしコースレコード2.20.6とはすごいもんみれたなー。配当とかどうでもよくなってくるレベルで感動しました。