
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);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがありま...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
【gcc・cygwin】multiple defin...
-
const_castのつかいどころを教...
-
(void)0 はどんな意味ですか
-
[Visual C++ 6.0] コンパイル(...
-
C#を勉強中でC#で壁紙を変更す...
-
C++でオーバーロードに関するバ...
-
Enterキーを押されたら次の処理...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
C言語での引数の省略方法
-
ある商品のロス率を5%見込み、...
-
【C言語】全角文字の配列を、全...
-
エクセルで可視セルにのみ値貼...
-
fgetsなどのときのstdinのバッ...
-
#define _CRT_SECURE_NO_WARNIN...
-
マイナスからプラスへ転じた時...
-
20'(角度)の計算がわかりま...
-
有効数字について 以前質問をし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
既定のコンストラクタがありま...
-
C++にてtemplateで受け取った任...
-
多重定義が起きている?--lnk20...
-
【gcc・cygwin】multiple defin...
-
const_castのつかいどころを教...
-
戻り値を返す関数の前に(void)...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
C# Controls.Addで動的に配置し...
-
C#でテンキーの操作は可能でし...
-
int main()、void main()、void...
-
C# KeyDownイベントでショート...
-
gcc: incompatible pointer type
-
Notepad++の関数リスト表示の変...
-
(void)0 はどんな意味ですか
-
VC++でGetKeyboardStateがうま...
-
関数ポインタについて
-
void main()って誰が最初?:AN...
-
演算子のオーバーロードでコン...
-
この式の意味
おすすめ情報