内容を見る

전체상품카테고리

ロケーション
  1. ホーム

아두이노용 방석 센서 쉴드

(海外配送商品)
このブランドの商品一覧
このブランドの商品一覧 このブランドの商品一覧
基本情報
商品名 : 아두이노용 방석 센서 쉴드
メーカー : 自社制作
原産地 : 韓国
販売価格 : ¥990
商品コード : P00000DW
国内・海外配送 : 海外発送
配送方法 : 宅配
配送費 : 海外送料
수량 : 수량증가수량감소
SNS 商品広報
SNS 商品広報 :
商品オプション
上記情報で選択
(最小注文数量 1点以上 / 最大注文数量 0点以下) サイズガイド

数量を選択してください。

オプションを選択すると商品が追加されます。

商品一覧
商品名 商品数 価格
아두이노용 방석 센서 쉴드 数量+ 数量- 990 (  )
商品金額合計(数量) : 0 (0点)

合わせて買いたいアイテム

 
オプション情報
商品選択
上記情報で選択
 
オプション情報
商品選択
上記情報で選択

イベント

アイテム情報

본 제품은 '아두이노용 32채널 쉴드'와 동일한 제품입니다.


자료실에서 제품 소개자료 PDF 파일을 다운받으세요 !  (2020년 6월 갱신)

자료실 소개자료 바로가기

소스코드 예제 설명 블로그 바로가기




COPY :    https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json  




예제) 압력 센서32개의 측정값을 시리얼 포트로 출력.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
int En0 = 7;  //  Low enabled
int En1 = 6;  //  Low enabled
 
 
int S0  = 5;
int S1  = 4;
int S2  = 3;
int S3  = 2;
 
 
int SIG_pin = A3; // Arduino ProMicro : A3, Arduino Nano : A7
 
 
void setup() {
  Serial.begin(115200);
  pinMode(En0, OUTPUT);
  pinMode(En1, OUTPUT);
 
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
 
}
 
void loop() {
 
 
  for(int i = 0; i < 32; i ++){
 
    Serial.print(readMux(i));
 
    Serial.print(" / ");   
    delay(1);
Serial.print(" "); 
 
  }
Serial.println(" "); 
  
 
 delay(100);
}
 
 
int readMux(int channel){
  int controlPin[] = {S0,S1,S2,S3,En0,En1};
 
  int muxChannel[32][6]={
    {0,0,0,0,0,1}, //channel 0
    {0,0,0,1,0,1}, //channel 1
    {0,0,1,0,0,1}, //channel 2
    {0,0,1,1,0,1}, //channel 3
    {0,1,0,0,0,1}, //channel 4
    {0,1,0,1,0,1}, //channel 5
    {0,1,1,0,0,1}, //channel 6
    {0,1,1,1,0,1}, //channel 7
    {1,0,0,0,0,1}, //channel 8
    {1,0,0,1,0,1}, //channel 9
    {1,0,1,0,0,1}, //channel 10
    {1,0,1,1,0,1}, //channel 11
    {1,1,0,0,0,1}, //channel 12
    {1,1,0,1,0,1}, //channel 13
    {1,1,1,0,0,1}, //channel 14
    {1,1,1,1,0,1}, //channel 15
    {0,0,0,0,1,0}, //channel 16
    {0,0,0,1,1,0}, //channel 17
    {0,0,1,0,1,0}, //channel 18
    {0,0,1,1,1,0}, //channel 19
    {0,1,0,0,1,0}, //channel 20
    {0,1,0,1,1,0}, //channel 21
    {0,1,1,0,1,0}, //channel 22
    {0,1,1,1,1,0}, //channel 23
    {1,0,0,0,1,0}, //channel 24
    {1,0,0,1,1,0}, //channel 25
    {1,0,1,0,1,0}, //channel 26
    {1,0,1,1,1,0}, //channel 27
    {1,1,0,0,1,0}, //channel 28
    {1,1,0,1,1,0}, //channel 29
    {1,1,1,0,1,0}, //channel 30
    {1,1,1,1,1,0}  //channel 31
  };
 
  //loop through the 6 sig
  for(int i = 0; i < 6; i ++){
    digitalWrite(controlPin[i], muxChannel[channel][i]);
  }
 
  //read the value at the SIG pin
  int val = analogRead(SIG_pin);
 
  //return the value
  return val;
}
cs



예제) 키보드 매핑 - 방석 센서의 측정값에 따라 전후좌우 버튼이 눌리도록 설정됨.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
//  방석 센서 키패드 Ver 180712
//  기술 문의 : sales@mdex.co.kr , 마블덱스
//  방석 센서를 깔고 앉아서 전후좌우로 움직이면, 키보드 이벤트를 발생시킵니다.
//  설정 1, 2를 변경해서 바로 원하는 동작을 만들어보세요.
 
#include "Keyboard.h"
 
 
//----------------------------------------------
//  설정 1 - 키맵) 방향키
char KEY_MAP_row_1st   = KEY_UP_ARROW;    // ↑
char KEY_MAP_row_3rd   = KEY_DOWN_ARROW;  // ↓
char KEY_MAP_COP_left  = KEY_LEFT_ARROW;  // ←
char KEY_MAP_COP_right = KEY_RIGHT_ARROW; // →
 
//----------------------------------------------
// 설정 2 - 키맵) FPS 슈팅 게임용
//char KEY_MAP_row_1st   = 'w';
//char KEY_MAP_row_3rd   = 's';
//char KEY_MAP_COP_left  = 'a';
//char KEY_MAP_COP_right = 'd';
 
//  특수키:  https://www.arduino.cc/reference/en/language/functions/usb/keyboard/keyboardmodifiers/
//  일반 문자 : http://www.asciitable.com/ 
 
//----------------------------------------------
//  설정 - 키이벤트를 발생하는 문턱값. 무게중심의 좌표값. (범위 : -1.0 ~ 1.0)
//        문턱값을 넘기면 키가 눌리게 됨. 0 에 가까울수록 민감하게 동작.
const float THRESHOLD_COP_forth   = 0.3;    // 앞 쏠림. Y가 이 값보다 커야 키이벤트 발생.
const float THRESHOLD_COP_back    = -0.85;  // 뒤 쏠림. Y가 이 값보다 작아야 키이벤트 발생.
const float THRESHOLD_COP_left    = -0.22;  // 좌 쏠림. X가 이 값보다 작아야 키이벤트 발생.
const float THRESHOLD_COP_right   = 0.22;   // 우 쏠림. X가 이 값보다 커야 키이벤트 발생.
 
//----------------------------------------------
//  무효 판정 문턱값. 측정값이 아래 문턱값보다 낮으면 무시함.
const int THRESHOLD_SUM_row_1st   = 60;   // 1st row, front row
const int THRESHOLD_SUM_row_3rd   = 60;   // 3rd row, back row
const int THRESHOLD_SUM_row_2nd   = 105;  // 2nd row, left and right
const int THRESHOLD_SUM_VERT      = 60// SUM? PRESSURE?
 
//----------------------------------------------
//  상수 - 방석의 셀 개수
const int CONST_SEAT_CELL_NUM_TOTAL = 31// Total number of sensor cells = 31.
const int CONST_SEAT_CELL_NUM_ROW_1ST = 6;
const int CONST_SEAT_CELL_NUM_ROW_2ND = 15;
const int CONST_SEAT_CELL_NUM_ROW_3RD = 10;
 
 
 
//----------------------------------------------
//  변수
int adc_value[32]; // 센서 측정값 버퍼
bool is_key_pressed[256];  // 특정 키가 눌렸는지를 기록.
 
//----------------------------------------------
//  하드웨어 핀
int En0 = 7;  //  4 to 16 decoder 0, Low enabled
int En1 = 6;  //  4 to 16 decoder 1, Low enabled
 
int S0  = 5;
int S1  = 4;
int S2  = 3;
int S3  = 2;
int SIG_pin = A3; // common output of two decoder
 
 
void setup() {
  Serial.begin(115200);
  pinMode(En0, OUTPUT);
  pinMode(En1, OUTPUT);
 
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
 
  ResetKeyboardLog();
  Keyboard.begin();
  Keyboard.releaseAll();
}
 
void loop() {
   // Read 32 sensor cells.
  for(int i = 0 ; i < 32 ; i++){
    adc_value[i] = readMux(i);
  }
 
  /*
   *    방석 센서의 번호. 센서는 총 31개가 가로로 3줄로 배열되어 있습니다.
   *    아래 그림은 adc_value에 담긴 측정값이 어느 위치의 센서값인지를 설명합니다.
   *    예를 들어 adc_value[14]는 1번째 줄의 3번째 센서의 측정값입니다. 
   *    adc_value[2]는 3번째 줄의 3번째 센서의 측정값입니다.
   *  1st row (6 cells):                       10, 12, 14, 16, 18, 20
   *  2nd row (15 cells) :   5, 6, 7, 8, 9, 11, 13, 15(center), 17, 19, 21, 22, 23, 24, 25
   *  3rd row (10 cells) :                 0, 1, 2, 3, 4, 26, 27, 28, 29, 30
   * 
   * 무게 중심의 X 좌표는 2번 줄의 측정값으로 계산합니다.
   * 무게 중심의 Y 좌표는 1, 3번 줄의 측정값으로 계산합니다.
   */
 //---------------------------------------------------------
 //     1, 3번 줄의 측정값으로 무게 중심의 Y 좌표 계산하기
 //---------------------------------------------------------
  int sum_row_1st = adc_value[10]+adc_value[12]+adc_value[14]+adc_value[16]+adc_value[18]+adc_value[20];
 
  int sum_row_3rd =   adc_value[0]+adc_value[1]+adc_value[2]+adc_value[3]+adc_value[4]
                    +adc_value[26]+adc_value[27]+adc_value[28]+adc_value[29]+adc_value[30];
 
  int sum_vertical = sum_row_1st + sum_row_3rd;
 
  double avg_row_1st = sum_row_1st / CONST_SEAT_CELL_NUM_ROW_1ST;
  double avg_row_3rd = sum_row_3rd / CONST_SEAT_CELL_NUM_ROW_3RD;
 
  //  무게 중심의 Y 좌표 계산
  float cop_vertical = 0.0;
  if0 < sum_vertical) {
    cop_vertical = (avg_row_1st * (1+ avg_row_3rd * (-1)) / (avg_row_1st + avg_row_3rd);
  }
 
  //  키 이벤트 발생 - 앞 쏠림, 뒤 쏠림
  if( sum_vertical < THRESHOLD_SUM_VERT) {
    KEY_Release(KEY_MAP_row_1st);
    KEY_Release(KEY_MAP_row_3rd);
  }
  else {
    if(THRESHOLD_COP_forth < cop_vertical) {
      KEY_Release(KEY_MAP_row_3rd);
      KEY_Press(KEY_MAP_row_1st);
    }
    else if(cop_vertical < THRESHOLD_COP_back) {
      KEY_Release(KEY_MAP_row_1st);
      KEY_Press(KEY_MAP_row_3rd);
    }
    else {
      KEY_Release(KEY_MAP_row_1st);
      KEY_Release(KEY_MAP_row_3rd);
    }
  }
 
 //---------------------------------------------------------
 //     2번 줄의 측정값으로 무게 중심의 X 좌표 계산하기
 //---------------------------------------------------------
  int sum_row_2nd =  adc_value[5]+adc_value[6]+adc_value[7]+adc_value[8]+adc_value[9]
                    +adc_value[11]+adc_value[13]+adc_value[15]+adc_value[17]+adc_value[19]
                    +adc_value[21]+adc_value[22]+adc_value[23]+adc_value[24]+adc_value[25];
 
  //  센서 2 번째 줄의 15개 센서의 측정값에 위치별 가중치(-7~7))를 부여하여 더합니다. 
  //  그것을 7로 나눠서 좌표 범위를 -1~1 로 한정합니다.
  int sum_wp_horizon = (  (-7)*adc_value[5]+(-6)*adc_value[6]+(-5)*adc_value[7]
                          +(-4)*adc_value[8]+(-3)*adc_value[9]+(-2)*adc_value[11]
                          +(-1)*adc_value[13]+(0)*adc_value[15]
                          +(1)*adc_value[17]+(2)*adc_value[19]+(3)*adc_value[21]
                          +(4)*adc_value[22]+(5)*adc_value[23]+(6)*adc_value[24]
                          +(7)*adc_value[25] ) / 7.0// divide 7.0 ==> unitize. (-7.0~7.0)
 
  float cop_horizon = 0.0;
  //  무게 중심의 X 좌표 계산
  if(0 < sum_row_2nd) {
    cop_horizon = sum_wp_horizon / (double)sum_row_2nd;
  }
 
  //  키 이벤트 발생 - 좌 쏠림, 우 쏠림
  if(sum_row_2nd < THRESHOLD_SUM_row_2nd) {
    KEY_Release(KEY_MAP_COP_right);
    KEY_Release(KEY_MAP_COP_left);
  }
  else {
    //  press left
    if(cop_horizon < THRESHOLD_COP_left) {
      KEY_Release(KEY_MAP_COP_right);
      KEY_Press(KEY_MAP_COP_left);
    }
    //  press right
    else if(THRESHOLD_COP_right < cop_horizon) {
      KEY_Release(KEY_MAP_COP_left);
      KEY_Press(KEY_MAP_COP_right);  
    }
    //  release left, right
    else {
      KEY_Release(KEY_MAP_COP_right);
      KEY_Release(KEY_MAP_COP_left);
    }
  }
 
  //  무게 중심 계산값을 출력하여 확인하기.
  //  Print_XY(cop_horizon, cop_vertical);  
  
  delay(10);//delay
}
 
int readMux(int channel){
  int controlPin[] = {S0,S1,S2,S3,En0,En1};
 
  int muxChannel[32][6]={
    {0,0,0,0,0,1}, //channel 0
    {0,0,0,1,0,1}, //channel 1
    {0,0,1,0,0,1}, //channel 2
    {0,0,1,1,0,1}, //channel 3
    {0,1,0,0,0,1}, //channel 4
    {0,1,0,1,0,1}, //channel 5
    {0,1,1,0,0,1}, //channel 6
    {0,1,1,1,0,1}, //channel 7
    {1,0,0,0,0,1}, //channel 8
    {1,0,0,1,0,1}, //channel 9
    {1,0,1,0,0,1}, //channel 10
    {1,0,1,1,0,1}, //channel 11
    {1,1,0,0,0,1}, //channel 12
    {1,1,0,1,0,1}, //channel 13
    {1,1,1,0,0,1}, //channel 14
    {1,1,1,1,0,1}, //channel 15
    {0,0,0,0,1,0}, //channel 16
    {0,0,0,1,1,0}, //channel 17
    {0,0,1,0,1,0}, //channel 18
    {0,0,1,1,1,0}, //channel 19
    {0,1,0,0,1,0}, //channel 20
    {0,1,0,1,1,0}, //channel 21
    {0,1,1,0,1,0}, //channel 22
    {0,1,1,1,1,0}, //channel 23
    {1,0,0,0,1,0}, //channel 24
    {1,0,0,1,1,0}, //channel 25
    {1,0,1,0,1,0}, //channel 26
    {1,0,1,1,1,0}, //channel 27
    {1,1,0,0,1,0}, //channel 28
    {1,1,0,1,1,0}, //channel 29
    {1,1,1,0,1,0}, //channel 30
    {1,1,1,1,1,0}  //channel 31
  };
 
  //loop through the 6 sig (muxChannel has 6 values)
  for(int i = 0; i < 6; i ++){
    digitalWrite(controlPin[i], muxChannel[channel][i]);
  }
 
  //read the value at the SIG pin
  int val = analogRead(SIG_pin);
 
  return val;
}
 
void Print_XY(float x, float y) {
  Serial.print("x= ");
  Serial.print(x);
  Serial.print(", y= ");
  Serial.println(y);  
}
 
void ResetKeyboardLog(){
  memset(is_key_pressed, false256);
}
 
void  KEY_Press(byte key_index) {
  if(is_key_pressed[key_index] == false) {
      Keyboard.press(key_index);
      is_key_pressed[key_index] = true;
  }
}
 
void KEY_Release(byte key_index){
    Keyboard.release(key_index);
    is_key_pressed[key_index] = false;
}
 
cs




レビュー

レビューを作成してください。

まだ投稿はありません。

Q&A

商品についてお問い合わせください。

まだ投稿はありません。

  • お支払について

    決済手段は下記のとおりです。
    - クレジットカード決済
      - Visa
      - MasterCard
      - American Express
      - Discover
    - PayPal
  • 配送について

    配送方法 : 宅配

    配送地域 : 全国

    送料 : 海外送料

    配送期間 : 1日 ~ 3日

    商品種類によって商品準備及び発送が若干遅延される場合があります。
    当日発送はできませんのでご了承ください。
    - 配送案内 : お客様がご注文された商品は、ご入金確認後の発送とさせていただきます。
    返品及び交換の際には、必ず運営スタッフへご連絡ください。

    - 通関及び関税
    海外に物品などを送られる場合、相手国で関税等が発生することがございます。その場合、発生した関税等は受取人のご負担となりますので、ご了承ください。関税は相手国での徴収であり、本サイトとは関連がありません。
    受取拒否によって韓国に返送された商品は再発送は行いません。その過程で発生した費用は購買者の負担となります。
    発生した実費(国際運送往復費用及び韓国通関費、関税を含む)を除いて残り金額のみが払戻しできます。

  • 交換・返品について

    1. 注文キャンセルについて
    ご注文の状態が「入金確認」もしくは「発送準備中」の状態のご注文のみ可能です。
    注文キャンセルをご希望の方は、メール・電話などを通じてご連絡お願いいたします。

    2. 交換および返品について
    ※ 海外配送商品の特性上、お客様の都合による交換および返品は承れない場合もございますので、事前にお問合せください。(カラー・サイズの交換など含む)
    なお、お客様都合による交換および返品される際、往復海外送料および関税・付加価値税などはお客様の負担となりますので、十分にご注意の上、ご注文をお願い致します。

    - 交換・返品をお受けできる商品
    商品を受取ってから○○日以内の商品
    着用、洗濯、加工・補正をしておらず、タグが付いた状態の新品の商品
    間違って送られた商品
    不良品、または損傷して到着した商品
    交換および払戻しの手続きにおいて通信販売サイトと事前協議を済ませた場合

    - 交換・返品をお受けできない商品
    お客様のもとでキズまたは破損が生じた商品
    梱包を開けたり、毀損され商品価値を喪失された場合
    使用済みもしくは一部消費によって商品価値が顕著に減少した場合
    時間の経過によって再販売できないほど商品価値が顕著に減少した場合
    複製が可能な商品などの梱包を毀損した場合
    通信販売サイトの交換および返品手続きを履行していない場合
    (詳しくは、電話またはメールでお問合せください。)

    3. 返品方法
    商品の返品を希望されます場合は、まずはお電話またはメールにて「お問い合わせ」までご連絡ください。下記【返品の手順】をご覧のうえ、お手続きをお願いいたします。
    【返品の手順】
    1)商品受領日から○日以内に、欠陥であることを証明できる画像(商品全体画像及び欠陥の拡大画像)を添付し、注文番号、誤配達/欠陥商品番号、払戻し理由などの情報と一緒にメールにてご送付お願いいたします。
    2)返品申込が受付けられたら、後ほど別途ご連絡いたします。
    3)返品時、パッケージ(箱、包装ビニールなど)の中に注文番号、顧客名、会員IDを記載したメモを同梱してお送りください。
    ※ 返品申込や申込受付など手続きなしに返送された場合は、返品及び払戻しの処理ができかねますのでご了承ください。
    ※ 返品する際の送料は、帰責事由によって処理されます。
    - 変心・カラーやサイズの交換などお客様の都合による場合の返品送料はお客様のご負担
    - 誤配達・不良品など弊社責任の場合の返品送料は弊社にて負担
    ※ EMSの場合、着払いができませんので商品発送後、送料に対する領収書をメールで送って下さい。確認後、払戻しさせて頂きます。

Shop Community

公知事項

公知事項

もっと見る

FAQ

FAQ

もっと見る

sales@mdex.co.kr

  • (+82)32.624.3870
  • FAX
  • am 09:30 ~pm 18:30 (週末/祝日は休業) / 昼休み pm 12:30 ~ pm 01:30
  • INDUSTRIAL BANK OF KOREA
  • ACCOUNT : 614-009295-56-00017
  • SWIFT Code : IBKOKRSE
  • Marveldex Inc.

もっと見る

口座情報

BANKINDUSTRIAL BANK OF KOREA

ACCOUNT614-009295-56-00017

SWIFT CODEIBKOKRSE

顧客センター

TEL(+82)32.624.3870

FAX(+82)2.6442.7749

1:1お問い合わせ