質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NFC

無線通信

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

5530閲覧

ArduinoとFelicaリーダーを利用してIDmの取得をする

Gfon

総合スコア15

NFC

無線通信

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

1クリップ

投稿2017/05/23 13:25

編集2017/05/26 08:47

###前提・実現したいこと
現在,Arduinoを利用して,電子鍵を制作しています.
その中で,SONY社のRC-S620Sを利用しIDmを読み取りたいのですが,上手く動作していない模様です.
シリアル通信を利用して動作確認するにも,リーダーがTX, RXを使用している状態です.
どうにかして,読み取ったIDmを変数IDmに格納したいと思っております.
Arduinoに関しては,少し触ったことがある程度の初心者です.
どうぞご教授,よろしくお願いいたします.

###該当のソースコード

Arduino

1#include <RCS620S.h> 2#include<Servo.h> 3Servo servo1; 4 5#define close_pin 2//Close 6#define open_pin 12 //Open 7#define led_r_pin 9 //LED_R 8#define led_g_pin 10 //LED_G 9#define led_b_pin 11 //LED_B 10#define COMMAND_TIMEOUT 400 11#define POLLING_INTERVAL 500 12RCS620S rcs620s; 13 14String IDm = ""; //IDm格納用 15 16/**↓↓ User IDm Set↓↓ **/ 17String IDm1 = "XXXXXXXXXXXXXXXX"; 18/**↑↑ User IDm Set↑↑ **/ 19 20/*↓↓LED_ON↓↓*/ 21int LED_ON(char c){ 22 switch(c){ 23 case 'R': 24 analogWrite(led_r_pin, 0); 25 analogWrite(led_g_pin, 255); 26 analogWrite(led_b_pin, 255); 27 break; 28 case 'G': 29 analogWrite(led_r_pin, 255); 30 analogWrite(led_g_pin, 0); 31 analogWrite(led_b_pin, 255); 32 break; 33 case 'B': 34 analogWrite(led_r_pin, 255); 35 analogWrite(led_g_pin, 255); 36 analogWrite(led_b_pin, 0); 37 break; 38 } 39} 40/*↑↑LED_ON↑↑*/ 41 42void setup() { 43 int ret; 44 pinMode(led_r_pin, OUTPUT); //Rのピンをアウトプットに設定 45 pinMode(led_g_pin, OUTPUT); //Gのピンをアウトプットに設定 46 pinMode(led_b_pin, OUTPUT); //Bのピンをアウトプットに設定 47 pinMode(close_pin, INPUT_PULLUP); //Close ボタン入力用 48 pinMode(open_pin, INPUT_PULLUP); //Openボタン入力用 49 servo1.attach(5); 50 Serial.begin(115200); 51 ret = rcs620s.initDevice(); 52} 53 54void loop(){ 55/***IDm読み取りここから***/ 56 int ret, i; 57 rcs620s.timeout = COMMAND_TIMEOUT; 58 ret = rcs620s.polling(); 59 if(ret) { 60 for(i = 0; i < 8; i++){ 61 if(rcs620s.idm[i] / 0x10 == 0)IDm += "0"; 62 IDm += (rcs620s.idm[i], HEX); 63 } 64 } 65 rcs620s.rfOff(); 66/***IDm読み取りここまで***/ 67 68 if( digitalRead(open_pin) == LOW || IDm == IDm1 ){ 69 LED_ON('R') ; 70 servo1.write(90); 71 delay(500); 72 } else if(digitalRead(close_pin) == LOW){ 73 LED_ON('G'); 74 servo1.write(180); 75 delay(500); 76 } 77 IDm = ""; 78} 79

###試したこと
様々なサイトで紹介されているRC-S620Sの使用例などを参考にし,ここ数日,何度も何度も修正しましたが,成功せずに,ここに至ります.上のソースは現段階で最新のもので,他にも何種かの方法で試しています.

###補足説明
open_pin, close_pinに接続されているSWの操作では正常にサーボが動作します.

改めまして,よろしくお願いいたします.

###追記
ライブラリの変更箇所

Arduino

1RCS620S.cpp 2#include "WProgram.h" //修正前 3#include "Arduino.h" //修正後 4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2017/05/25 08:49

追記依頼: RC-S620S用のライブラリはいくつか存在しているようですが、どれをお使いでしょうか? URLを示してくださると確実かと思います。
Gfon

2017/05/26 08:45 編集

情報不足で申し訳ありません. 使用しているライブラリは以下のスイッチサイエンスさんの商品ページのリンクから取得したものです.また,技術資料等もここから参照していますが,完全には理解しきれていな現状です. https://www.switch-science.com/catalog/353/ (スイッチサイエンス_RC-S620S) ただし,ここから取得できるライブラリは古いもので現行のArduinoIDEでは動作しません.ですので,以下のように書き換えて使用しています.この点について,質問を編集しました.
guest

回答1

0

loop関数のコードの中の以下の行

ret = rcs620s.polling();

ですが、「Arduino 用 RC-S620/S ライブラリ Version 1.0.0.1」("RCS620S-sjis.txt" (更新日時は 2010/11/26 19:49))では書式が以下のように説明されています。

int polling(uint16_t systemCode);

引数にシステムコードを指定していないために、FeliCaカードが検出されないのではないでしょうか?

投稿2017/05/26 01:12

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gfon

2017/05/26 13:08 編集

coco_bauerさん ご指摘の部分についてですが,システムコードを指定しなくても正しく動作しているように思われます.(システムコードを指定した場合も同様です) というのは,コードを以下のように編集しましたところ,どちらのケースもカードは正しく捕捉できておりました.しかし,サーボ(servo1)の動作はしませんでした. /***IDm読み取りここから***/ int ret, i; rcs620s.timeout = COMMAND_TIMEOUT; ret = rcs620s.polling(); if(ret) { for(i = 0; i < 8; i++){ if(rcs620s.idm[i] / 0x10 == 0)IDm += "0"; IDm += (rcs620s.idm[i], HEX); } LED_ON('B'); //変更箇所 } rcs620s.rfOff(); /***IDm読み取りここまで***/ おそらくですが,変数IDmに取得したIDmを格納するあたりで,失敗しているのかと自己推測しております.若しくは,全く別の部分で何らかのミスをしているのかと思いますが,すでにお手上げ状態です.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問