Changeset 321 for EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sKernel.c
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sKernel.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 1 1 /* 2 * ã«ã¼ãã«é¢é£2 * カーネル関連 3 3 * 4 4 * Copyright (c) 2016 Wakayama.rb Ruby Board developers … … 17 17 18 18 /******************************************************/ 19 /* ãã¸ã¿ã«ã©ã¤ã*/19 /* デジタルライト*/ 20 20 /* digitalWrite(pin, value) */ 21 21 /* pin*/ 22 /* ãã³ã®çªå·*/22 /* ピンの番号*/ 23 23 /* value*/ 24 24 /* 0: LOW*/ … … 34 34 pin = get_pin(pintype_gpio, pinno); 35 35 if (pin == NULL) 36 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/36 return mrb_nil_value(); /*戻り値は無しですよ。*/ 37 37 38 38 gpio_write(&pin->gpio, value); 39 39 40 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/41 } 42 43 /******************************************************/ 44 /* PIN ã®ã¢ã¼ãè¨å®*/40 return mrb_nil_value(); /*戻り値は無しですよ。*/ 41 } 42 43 /******************************************************/ 44 /* PINのモード設定*/ 45 45 /* pinMode(pin, mode) */ 46 46 /* pin*/ 47 /* ãã³ã®çªå·*/47 /* ピンの番号*/ 48 48 /* mode*/ 49 /* 0: INPUT ã¢ã¼ã*/50 /* 1: OUTPUT ã¢ã¼ã*/49 /* 0: INPUTモード*/ 50 /* 1: OUTPUTモード*/ 51 51 /******************************************************/ 52 52 mrb_value mrb_kernel_pinMode(mrb_state *mrb, mrb_value self) … … 59 59 pin = get_pin(pintype_gpio, pinno); 60 60 if (pin == NULL) 61 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/61 return mrb_nil_value(); /*戻り値は無しですよ。*/ 62 62 63 63 gpio_dir(&pin->gpio, value); 64 64 65 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/66 } 67 68 /******************************************************/ 69 /* ãã£ã¬ã¤ å¼·å¶GCãè¡ã£ã¦ãã¾ã*/65 return mrb_nil_value(); /*戻り値は無しですよ。*/ 66 } 67 68 /******************************************************/ 69 /* ディレイ 強制GCを行っています*/ 70 70 /* delay(value) */ 71 71 /* value*/ 72 /* æé(ms)*/72 /* 時間(ms)*/ 73 73 /******************************************************/ 74 74 mrb_value mrb_kernel_delay(mrb_state *mrb, mrb_value self) … … 78 78 mrb_get_args(mrb, "i", &value); 79 79 80 /*試ãã«å¼·å¶gcãå 81 ¥ãã¦è¦ã*/ 80 /*試しに強制gcを入れて見る*/ 82 81 mrb_full_gc(mrb); 83 82 … … 86 85 } 87 86 88 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/89 } 90 91 92 /******************************************************/ 93 /* ããªç§ãåå¾ãã¾ã: millis*/87 return mrb_nil_value(); /*戻り値は無しですよ。*/ 88 } 89 90 91 /******************************************************/ 92 /* ミリ秒を取得します: millis*/ 94 93 /* millis()*/ 95 /* æ»ãå¤*/96 /* èµ·åãã¦ããã®ããªç§æ°*/94 /* 戻り値*/ 95 /* 起動してからのミリ秒数*/ 97 96 /******************************************************/ 98 97 mrb_value mrb_kernel_millis(mrb_state *mrb, mrb_value self) … … 102 101 103 102 /******************************************************/ 104 /* ãã¤ã¯ãç§ãåå¾ãã¾ã: micros*/103 /* マイクロ秒を取得します: micros*/ 105 104 /* micros()*/ 106 /* æ»ãå¤*/107 /* èµ·åãã¦ããã®ãã¤ã¯ãç§æ°*/105 /* 戻り値*/ 106 /* 起動してからのマイクロ秒数*/ 108 107 /******************************************************/ 109 108 mrb_value mrb_kernel_micros(mrb_state *mrb, mrb_value self) … … 113 112 114 113 /******************************************************/ 115 /* ãã¸ã¿ã«ãªã¼ã: digitalRead*/114 /* デジタルリード: digitalRead*/ 116 115 /* digitalRead(pin) */ 117 /* pin: ãã³ã®çªå·*/116 /* pin: ピンの番号*/ 118 117 /* */ 119 118 /* 0:LOW*/ … … 129 128 pin = get_pin(pintype_gpio, pinno); 130 129 if (pin == NULL) 131 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/130 return mrb_nil_value(); /*戻り値は無しですよ。*/ 132 131 133 132 value = gpio_read(&pin->gpio); … … 138 137 139 138 /******************************************************/ 140 /* ã¢ããã°ãªãã¡ã¬ã³ã¹: analogReference*/139 /* アナログリファレンス: analogReference*/ 141 140 /* analogReference(mode)*/ 142 /* ã¢ããã°å 143 ¥åã§ä½¿ãããåºæºé»å§ãè¨å®ãã¾ã*/ 144 /* mode: 0:DEFAULTï¼5.0V Arduinoäºæ, 1:INTERNALï¼1.1V å 145 èµé»å§, 2:EXTERNALï¼AVREFãã³ä¾çµ¦é»å§, 3:RAW12BITï¼3.3V 12ãããA/Då¤æãè¡ã*/ 141 /* アナログ入力で使われる基準電圧を設定します*/ 142 /* mode: 0:DEFAULT:5.0V Arduino互換, 1:INTERNAL:1.1V 内蔵電圧, 2:EXTERNAL:AVREFピン供給電圧, 3:RAW12BIT:3.3V 12ビットA/D変換を行う*/ 146 143 /******************************************************/ 147 144 mrb_value mrb_kernel_analogReference(mrb_state *mrb, mrb_value self) … … 165 162 break; 166 163 } 167 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/168 } 169 170 /******************************************************/ 171 /* ã¢ããã°ãªã¼ã: analogRead*/164 return mrb_nil_value(); /*戻り値は無しですよ。*/ 165 } 166 167 /******************************************************/ 168 /* アナログリード: analogRead*/ 172 169 /* analogRead(pin) */ 173 /* pin: ã¢ããã°ã®çªå·*/170 /* pin: アナログの番号*/ 174 171 /* */ 175 /* 10 ãããã®å¤(0ï½1023)*/172 /* 10ビットの値(0~1023)*/ 176 173 /******************************************************/ 177 174 mrb_value mrb_kernel_analogRead(mrb_state *mrb, mrb_value self) … … 184 181 pin = get_pin(pintype_analogin, anapin); 185 182 if (pin == NULL) 186 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/183 return mrb_nil_value(); /*戻り値は無しですよ。*/ 187 184 188 185 value = analogin_read_u16(&pin->analogin); … … 193 190 #if 0 194 191 /****************************************************/ 195 /* åºåãã³ã並åæ¥ç¶ããã¦ãããã³ã¨ã·ã§ã¼ããããã©ãã調ã¹ã¾ã*/192 /* 出力ピンが並列接続されているピンとショートするかどうか調べます*/ 196 193 /**/ 197 /* true: è¡çªãã¦ãã*/198 /* false: è¡çªãã¦ããªããçæ¹ãINPUTã§ããã*/194 /* true: 衝突している*/ 195 /* false: 衝突していない。片方がINPUTである。*/ 199 196 /****************************************************/ 200 197 bool IsWritePinCollision(int pinSub) … … 209 206 210 207 /******************************************************/ 211 /* PWM åºå: pwm*/208 /* PWM出力: pwm*/ 212 209 /* pwm(pin, value)*/ 213 /* pin: ãã³ã®çªå·(0,1,7,8,11,23ãã³ãPWMå¯è½)*/214 /* ãã ãã23ãã³ã¯5ãã³ã¨24ãã³ç絡ãã¦ããã®ã§ã使ç¨æã¯5ãã³ã¨24ãã³ãINPUTã«ãã¦ãã*/215 /* value: åºåPWMæ¯ç(0ï½255)*/210 /* pin: ピンの番号(0,1,7,8,11,23ピンがPWM可能)*/ 211 /* ただし、23ピンは5ピンと24ピン短絡しているので、使用時は5ピンと24ピンをINPUTにしておく*/ 212 /* value: 出力PWM比率(0~255)*/ 216 213 /******************************************************/ 217 214 mrb_value mrb_kernel_pwm(mrb_state *mrb, mrb_value self) … … 224 221 pin = get_pin(pintype_pwmout, pinno); 225 222 if (pin == NULL) 226 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/223 return mrb_nil_value(); /*戻り値は無しですよ。*/ 227 224 228 225 pwmout_pulsewidth_us(&pin->pwmout, value); 229 226 230 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/227 return mrb_nil_value(); /*戻り値は無しですよ。*/ 231 228 } 232 229 #if 0 233 230 /******************************************************/ 234 /* PWM å¨æ³¢æ°è¨å®: pwmHz*/231 /* PWM周波数設定: pwmHz*/ 235 232 /* pwmHz(value)*/ 236 /* value: å¨æ³¢æ°(12ï½184999)Hz*/233 /* value: 周波数(12~184999)Hz*/ 237 234 /******************************************************/ 238 235 mrb_value mrb_kernel_pwmHz(mrb_state *mrb, mrb_value self) … … 245 242 pin = get_pin(pintype_pwmout, pinno); 246 243 if (pin == NULL) 247 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/244 return mrb_nil_value(); /*戻り値は無しですよ。*/ 248 245 249 246 if (value >= 12 && value < 18500) { … … 254 251 } 255 252 256 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/253 return mrb_nil_value(); /*戻り値は無しですよ。*/ 257 254 } 258 255 #endif 259 256 /******************************************************/ 260 /* ãã¼ã³åºååæ¢: noTone*/257 /* トーン出力停止: noTone*/ 261 258 /* noTone(pin)*/ 262 /* pin: ãã³çªå·*/259 /* pin: ピン番号*/ 263 260 /******************************************************/ 264 261 mrb_value mrb_kernel_noTone(mrb_state *mrb, mrb_value self) … … 269 266 270 267 if (pin == 4 || pin >= 20) { 271 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/268 return mrb_nil_value(); /*戻り値は無しですよ。*/ 272 269 } 273 270 274 271 noTone(pin); 275 272 276 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/277 } 278 279 /******************************************************/ 280 /* ãã¼ã³åºå: tone*/273 return mrb_nil_value(); /*戻り値は無しですよ。*/ 274 } 275 276 /******************************************************/ 277 /* トーン出力: tone*/ 281 278 /* tone(pin, frequency[,duration])*/ 282 /* pin: ãã³çªå·*/283 /* frequency: å¨æ³¢æ°(2ï½62500)Hz*/284 /* duration: åºåãç¶æããæé[ms]ãçç¥æã0æå®æã¯åºåãç¶ããã*/279 /* pin: ピン番号*/ 280 /* frequency: 周波数(2~62500)Hz*/ 281 /* duration: 出力を維持する時間[ms]。省略時、0指定時は出力し続ける。*/ 285 282 /******************************************************/ 286 283 mrb_value mrb_kernel_tone(mrb_state *mrb, mrb_value self) … … 293 290 294 291 if (pin == 4 || pin >= 20) { 295 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/292 return mrb_nil_value(); /*戻り値は無しですよ。*/ 296 293 } 297 294 … … 301 298 tone(pin, freq, dura); 302 299 } 303 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/304 } 305 306 /******************************************************/ 307 /* ã¢ããã°DACãã³åæå: initDac*/300 return mrb_nil_value(); /*戻り値は無しですよ。*/ 301 } 302 303 /******************************************************/ 304 /* アナログDACピン初期化: initDac*/ 308 305 /* initDac()*/ 309 306 /******************************************************/ … … 311 308 { 312 309 setPinModeDac(RB_PIN9); 313 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/314 } 315 316 /******************************************************/ 317 /* ã¢ããã°DACåºå: analogDac*/310 return mrb_nil_value(); /*戻り値は無しですよ。*/ 311 } 312 313 /******************************************************/ 314 /* アナログDAC出力: analogDac*/ 318 315 /* analogDac(value)*/ 319 /* value: 10bit 精度(0ï½4095)*/316 /* value: 10bit精度(0~4095)*/ 320 317 /******************************************************/ 321 318 mrb_value mrb_kernel_analogDac(mrb_state *mrb, mrb_value self) … … 330 327 pin = get_pin(pintype_dac, RB_PIN9); 331 328 if (pin == NULL) 332 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/329 return mrb_nil_value(); /*戻り値は無しですよ。*/ 333 330 334 331 analogout_write_u16(&pin->dac, (value << 6) | (value >> 4)); … … 336 333 #endif 337 334 338 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/335 return mrb_nil_value(); /*戻り値は無しですよ。*/ 339 336 } 340 337 … … 351 348 352 349 /******************************************************/ 353 /* LED ãªã³ãªã: led*/350 /* LEDオンオフ: led*/ 354 351 /* led(sw)*/ 355 352 /******************************************************/ … … 369 366 #endif 370 367 371 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/372 } 373 374 /******************************************************/ 375 /* ä¹±æ°ãå¾ãããã®ç¨®ãä¸ãã¾ã: randomSeed*/368 return mrb_nil_value(); /*戻り値は無しですよ。*/ 369 } 370 371 /******************************************************/ 372 /* 乱数を得るための種を与えます: randomSeed*/ 376 373 /* randomSeed(value)*/ 377 /* value: 種ã¨ãªãå¤*/374 /* value: 種となる値*/ 378 375 /******************************************************/ 379 376 mrb_value mrb_kernel_randomSeed(mrb_state *mrb, mrb_value self) … … 385 382 randomSeed(value); 386 383 387 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/388 } 389 390 /******************************************************/ 391 /* ä¹±æ°ãåå¾ãã¾ã: random*/384 return mrb_nil_value(); /*戻り値は無しですよ。*/ 385 } 386 387 /******************************************************/ 388 /* 乱数を取得します: random*/ 392 389 /* random([min,] max)*/ 393 /* min: ä¹±æ°ã®åãããæå°å¤ãçç¥å¯*/394 /* max: ä¹±æ°ã®åãããæ大å¤*/390 /* min: 乱数の取りうる最小値。省略可*/ 391 /* max: 乱数の取りうる最大値*/ 395 392 /******************************************************/ 396 393 mrb_value mrb_kernel_random(mrb_state *mrb, mrb_value self) … … 408 405 409 406 /******************************************************/ 410 /* é ãã³ãã³ãã§ã: El_Psy.Congroo*/407 /* 隠しコマンドです: El_Psy.Congroo*/ 411 408 /* El_Psy.Congroo()*/ 412 409 /******************************************************/ … … 415 412 mrb_raise(mrb, mrb_class_get(mrb, "Sys#exit Called"), "Normal Completion"); 416 413 417 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/418 } 419 420 /******************************************************/ 421 /* ã©ã¤ãã©ãªãå®ç¾©ãã¾ã*/414 return mrb_nil_value(); /*戻り値は無しですよ。*/ 415 } 416 417 /******************************************************/ 418 /* ライブラリを定義します*/ 422 419 /******************************************************/ 423 420 void kernel_Init(mrb_state *mrb)
Note:
See TracChangeset
for help on using the changeset viewer.