電子書籍の厳選無料作品が豊富!

ArduinoでRFIDリーダRC522を使って生産管理をやろうと思っています。
https://dotstud.io/blog/arduino-use-rfid-reader/を参考にしてやっています。
工具に識別タグを付けて工具を識別する管理をやりたいのですが。
下のプログラムにプラスでRC522センサーにタグをかざしていない間は20秒ごとにNOと出るようにしたいのですが。誰か教えてください。

#include <SPI.h>
#include <MFRC522.h>

constexpr uint8_t RST_PIN = 9;
constexpr uint8_t SS_PIN = 10;

#define UID "xx xx xx xx xx xx xx" // 取得した識別子を記述

int led_blue = 8;
int led_red = 3;

MFRC522 mfrc522(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;

void setup() {
Serial.begin(9600);
pinMode(led_blue, OUTPUT);
pinMode(led_red, OUTPUT);
while (!Serial);
SPI.begin();
mfrc522.PCD_Init();
mfrc522.PCD_DumpVersionToSerial();
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));

dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE);
}

void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

String strBuf[mfrc522.uid.size];
for (byte i = 0; i < mfrc522.uid.size; i++) {
strBuf[i] = String(mfrc522.uid.uidByte[i], HEX);
if(strBuf[i].length() == 1){
strBuf[i] = "0" + strBuf[i];
}
}

String strUID = strBuf[0] + " " + strBuf[1] + " " + strBuf[2] + " " + strBuf[3] + " " + strBuf[4] + " " + strBuf[5] + " " + strBuf[6];
if ( strUID.equalsIgnoreCase(UID) ){
Serial.println("chantoku");
digitalWrite(led_blue, HIGH); // 青いLEDを光らせる
delay(1000); // 1秒待つ
digitalWrite(led_blue, LOW); // 青いLEDを消す
} else {
Serial.println("error!");
analogWrite(led_red, 180); // 赤いLEDを光らせる
delay(1000); // 1秒待つ
analogWrite(led_red, 0); // 赤いLEDを消す
}
}

void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}

A 回答 (1件)

millis()を調べれば時間に関する有益な情報が得られるでしょう。


その程度が調べられないなら金出して外注し、
その時間で他のこと(管理手法の勉強など)をすべきです。
仕事で趣味を楽しんではいけません。
    • good
    • 5

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!