转到详细内容

전체상품카테고리

当前位置
  1. 首页
  2. 测量附件

아두이노용 방석 센서 쉴드

(该商品可以海外配送)
进入店铺
进入店铺 进入店铺
基本信息
商品名 : 아두이노용 방석 센서 쉴드
制造商 : 自主生产
原产地 : 韩国
销售价格 : $9.43
商品编码 : P00000DW
国内/海外配送 : 海外配送
配送方式 : 快递
配送费 : 海外配送
수량 : 수량증가수량감소
SNS 商品促销
SNS 商品促销 :
商品选项
按上述信息选择
(单笔订单最少须满1件 / 最多可订购0件以下) 尺码指南

请选择购买数量。

根据您的选项设定,将自动为您添加商品!

商品目录
商品名称 商品数量 价格
아두이노용 방석 센서 쉴드 增加数量 减少数量 9.43 (  )
商品合计(数量) : 0 (0件)

推荐搭配

点击抢购更多热销商品!

 
商品选项
Select
按上述信息选择
 
商品选项
Select
按上述信息选择

精彩活动

商品详情

본 제품은 '아두이노용 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




商品评论

请发表商品评论。

暂无内容

商品咨询

如有疑问请留言咨询,我们将及时为您解答。

暂无内容

  • 支付须知

    支持以下支付方式。
    - 信用卡
     - Visa
     - MasterCard
     - American Express
     - Discover
    - PayPal

    Paypal是更安全便捷的在线收付款方式。Paypal提供的服务使任何人能以任何方式付款,包括通过信用卡、银行账户、买家信用或账户余额付款,同时不会透露用户的财务信息。
    网站链接:http://www.paypal.com/c2/cgi-bin/webscr?cmd=_home
  • 配送须知

    配送方式 : 快递

    配送地区 : 全国

    货配送费 : 海外配送

    配送时间 : 1日 ~ 3日

    因商品的特性不同,商品的准备及配送可能发生延迟。另外,我们无法保证订购当日配送。
    -配送指南:我们将对顾客所订购的商品,确认汇款后安排配送。退货以及换货时请务必联系运营商。
    ★ 配送地为中国地区(包括港、澳、台)以外的其他地区的用户,系统会一次性添加部分运费。


    - 通关及关税

    根据国家海关的相关规定,在配送过程中可能会产生关税。此关税需要由买家承担。

    关税是由国家海关征收的,与官网没有关联。 具体的缴税金额建议您咨询当地邮局。如果要交关税,届时相关工作人员会通知您并发送报关通知单。您交齐关税后就可以领取包裹了。
    因拒收返送到韩国的商品,将无法重新配送。由此产生的一切费用由买家承担。(包括但不限于国际往返运费,韩国通关费用以及关税。)官网将减去以上费用之后,为您进行退款。

  • 换货/退货须知

    1. 退货(退款)申请条件如下
    商品均不受理换货,符合退货条件的商品,官网将在收到商品后为您处理退款。

    1) 可以取消订单的条件如下
    -支付完成24小时后,订单状态仍处于“商品准备中”时
    (配送准备中时可与卖家确认后进行受理)
    -卖家无任何通知配送日延迟10天以上时
    -订购的商品断货时

    2) 可以退货(退款)的条件如下
    -配送的商品有误时
    -商品有瑕疵时

    ※ 退货申请步骤
    ① 签收商品3天内,请拍下商品整体图片以及瑕疵部分图片上传至商品咨询栏进行退货申请。
    (申请内容:订单号,配送错误或不良商品编号,退款申请理由,图片)

    ② 收到退货申请后会个别与买家联系。

    ③ 退货时包装(包装箱,个别包装袋等)内把订单号,买家姓名,会员名记录的便条
    请一并附加发送。

    * 如未经退货申请及没有按照申请受理步骤寄回商品时将不予受理退货及退款。
    * 但,错误配送及瑕疵商品如有试穿痕迹或商品吊牌/标签/领标有受损时将不予受理退货。
    * 退换时要将配送的所有组成品及赠品一起寄回。
    * 因商品缺陷及错误配送而退换时退换过程中所产生的运费由海外网站卖家负担。 但EMS不能到付时,发送商品后将返送费的收据进行扫描。利用邮箱或咨询栏告知客服中心,收到商品后会一并受理退款。

    3) 不能退货(换货)的条件如下
    -因买家一方改变心意所提出的退货(颜色,尺寸等等)
    -配饰类(鞋子,包包,饰品)商品:因商品的特性上不能取消订单以及更换商品。
    -因买家自身引起的商品破损或变形时
    -未经过官网允许私自退换货时

    * 商品上没有吊牌、价格表、标签等不属于瑕疵商品将不予受理退货。
    * 配送时可能产生的商品褶皱或因大批量生产而导致的缝纫处理不足等不属于瑕疵商品将不予受理退货。

    4) 订购的商品在配送中有遗漏时
    * 请在商品签收当日与客服取得联系或是在商品咨询栏中申请

    * 在没有另行告知之前配送时的包装(包装箱,个别包装袋等)一定要好好保管。
    包装有损时遗漏的商品将不会进行赔偿,请务必维持好包装。

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

我的咨询