{"id":2636,"date":"2013-03-18T13:33:09","date_gmt":"2013-03-18T04:33:09","guid":{"rendered":"http:\/\/mkusunoki.net\/?p=2636"},"modified":"2013-12-06T21:58:53","modified_gmt":"2013-12-06T12:58:53","slug":"ld8113-%e8%9b%8d%e5%85%89%e8%a1%a8%e7%a4%ba%e7%ae%a1%e3%81%ae%e7%82%b9%e7%81%af%e5%9b%9e%e8%b7%af%e8%a9%a6%e4%bd%9c","status":"publish","type":"post","link":"https:\/\/mkusunoki.net\/?p=2636","title":{"rendered":"LD8113 \u86cd\u5149\u8868\u793a\u7ba1\u306e\u70b9\u706f\u56de\u8def\u8a66\u4f5c"},"content":{"rendered":"<p><a href=\"http:\/\/mkusunoki.net\/?attachment_id=2633\" rel=\"attachment wp-att-2633\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"http:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.17.46.jpg\" alt=\"2013-03-18 12.17.46\" class=\"alignnone size-full wp-image-2633\" srcset=\"https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.17.46.jpg 1280w, https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.17.46-320x180.jpg 320w, https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.17.46-1024x576.jpg 1024w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/p>\n<p>\n\u5148\u9031\u306e\u91d1\u3001\u571f\u66dc\u65e5\u3067\u5358\u4f53\u3067\u306e\u70b9\u706f\u3092\u3084\u3063\u3066\u307f\u307e\u3057\u3066\u3002\u65e5\u66dc\u306f\u5893\u53c2\u308a\u306e\u305f\u3081\u307b\u3068\u3093\u3069\u624b\u3064\u304b\u305a\u3002\u6708\u66dc\u306e\u5348\u524d\u4e2d\u3067\u3042\u308b\u7a0b\u5ea6\u307e\u3068\u307e\u3063\u3066\u304d\u305f\u304b\u306a\u3068\u3044\u3046\u611f\u3058\u3067\u3059\u3002\n<\/p>\n<p>\nArduiono \u304b\u3089 SPI \u901a\u4fe1\u3067 HC595 \u306e\u30b7\u30d5\u30c8\u30ec\u30b8\u30b9\u30bf\u3078\u8868\u793a\u3055\u305b\u308b\u30c7\u30fc\u30bf\u3092\u9001\u308a\u307e\u3059\u3002\u86cd\u5149\u7ba1\u306e\u30a2\u30ce\u30fc\u30c9\u306e\u30d3\u30c3\u30c8\u3068\u3001\u30b0\u30ea\u30c3\u30c9\u306e\u30d3\u30c3\u30c8\u3092\u6d41\u3057\u8fbc\u307f\u3057\u307e\u3057\u3066\u3001\u30b7\u30d5\u30c8\u30ec\u30b8\u30b9\u30bf\u306e\u51fa\u529b\u304c TD62783 \u306e\u30bd\u30fc\u30b9\u30c9\u30e9\u30a4\u30d0\u306b\u63a5\u7d9a\u3055\u308c\u307e\u3059\u3002TD62783 \u306e\u5148\u306f\u86cd\u5149\u7ba1\u306e\u5404\u30a2\u30ce\u30fc\u30c9\u3001\u30b0\u30ea\u30c3\u30c9\u306b\u63a5\u7d9a\u3002\u56de\u8def\u7684\u306b\u306f\u5fc5\u8981\u6700\u4f4e\u9650\u306e\u72b6\u614b\u3067\u3059\u306d\u3002\n<\/p>\n<p><a href=\"http:\/\/mkusunoki.net\/?attachment_id=2632\" rel=\"attachment wp-att-2632\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"http:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.09.15.jpg\" alt=\"2013-03-18 12.09.15\" class=\"alignnone size-full wp-image-2632\" srcset=\"https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.09.15.jpg 1280w, https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.09.15-320x180.jpg 320w, https:\/\/mkusunoki.net\/wp\/wp-content\/uploads\/2013\/03\/2013-03-18-12.09.15-1024x576.jpg 1024w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/p>\n<p>\n\u3068\u308a\u3042\u3048\u305a\u3001\u6642\u8a08\u3063\u307d\u3044\u8868\u793a\u3060\u3051\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092 Arduino \u306b\u5165\u308c\u307e\u3057\u3066\u3001\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u70b9\u706f\u3055\u305b\u3066\u307f\u305f\u3068\u3044\u3046\u3084\u3064\u3067\u3059\u3002\n<\/p>\n<p>\n\u4eca\u56de\u306f\u3001\u30ab\u30bd\u30fc\u30c9\u306e\u30d0\u30a4\u30a2\u30b9\u3082\u304b\u3051\u3066\u3044\u306a\u3044\u3057\u30c9\u30e9\u30a4\u30d0\u5074\u3082\u7d20\u3067\u63a5\u7d9a\u3057\u3066\u3044\u308b\u3060\u3051\u306e\u305f\u3081\u3001\u30021ms \u306e\u30d6\u30e9\u30f3\u30ad\u30f3\u30b0\u30bf\u30a4\u30e0\u3092\u7d4c\u904e\u3057\u305f\u5f8c\u306b\u5fc5\u8981\u306a\u6841\u3092 1ms \u70b9\u706f\u3055\u305b\u308b\u65b9\u6cd5\u3067\u5b9f\u9a13\u3057\u3066\u3044\u307e\u3059\u3002\u30d6\u30e9\u30f3\u30ad\u30f3\u30b0\u30bf\u30a4\u30e0\u3092\u8a2d\u3051\u308b\u3053\u3068\u3067\u30b4\u30fc\u30b9\u30c8\u306f\u6539\u5584\u3055\u308c\u307e\u3059\u3002\n<\/p>\n<p>\n\u30bf\u30a4\u30de\u5272\u308a\u8fbc\u307f\u3092 1ms \u3067\u30d7\u30ed\u30b0\u30e9\u30e0\u3057\u3061\u3083\u3063\u305f\u95a2\u4fc2\u3067\u4eca\u306f\u3053\u308c\u304c\u7cbe\u5ea6\u306e\u9650\u754c\u3002\u30bf\u30a4\u30de\u5272\u308a\u8fbc\u307f\u3092 100\u03bcs \u6bce\u306b\u3059\u308c\u3070\u3001\u70b9\u706f\u3055\u305b\u308b\u30c7\u30e5\u30fc\u30c6\u30a3\u30fc\u6bd4\u306e\u8a2d\u5b9a\u7bc4\u56f2\u5e83\u3052\u3089\u308c\u308b\u306e\u3067\u3001\u3082\u3046\u3061\u3087\u3063\u3068\u3084\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002\n<\/p>\n<p>#include <SPI.h><\/p>\n<p>\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n &#8212; Class instance<br \/>\n &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; *\/<\/p>\n<p>\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n &#8212; Grobal Variables<br \/>\n &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; *\/<br \/>\nunsigned int msCount = 0;<br \/>\nboolean msCountOVF;<br \/>\nint hh = 11;<br \/>\nint mm = 58;<br \/>\nint ss = 0;<br \/>\nint vfdDigit = 0;<br \/>\nunsigned char a = 0;<br \/>\nunsigned char b = 0;<\/p>\n<p>\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n &#8212; Interrupt hundler<br \/>\n &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; *\/<br \/>\nISR(TIMER2_COMPA_vect) {<\/p>\n<p>  \/\/ inclement millisecond counter<br \/>\n  msCount++;<br \/>\n  if(msCount >= 1000) {<br \/>\n    msCount = 0;<br \/>\n    msCountOVF = true;<br \/>\n  }<br \/>\n  \/\/ Reset interrupt flag and counter.<br \/>\n  TCNT2 = 0;<br \/>\n  TIFR2 &#038;= ~(1<<OCF2A);\n}\n\n\/* ------------------------------------------------------------\n -- Initial Setup\n ------------------------------------------------------------ *\/\nvoid setup() {\n  pinMode(2,OUTPUT);\n  pinMode(3,OUTPUT);\n\n  SPI.begin();\n  SPI.setClockDivider(SPI_CLOCK_DIV128);\n  SPI.setDataMode(SPI_MODE0);\n  SPI.setBitOrder(LSBFIRST);\n\n  digitalWrite(3,LOW);\n  digitalWrite(3,HIGH);\n\n  \/\/ Setup TIMER2\n  \/\/ a. Disable the Timer\/Counter2 interrupts by clearing OCIE2x and TOIE2.\n  \/\/ b. Select clock source by setting AS2 as appropriate.\n  \/\/ c. Write new values to TCNT2, OCR2x, and TCCR2x.\n  \/\/ d. To switch to asynchronous operation: Wait for TCN2xUB, OCR2xUB, and TCR2xUB.\n  \/\/ e. Clear the Timer\/Counter2 Interrupt Flags.\n  \/\/ f. Enable interrupts, if needed.\n\n  \/\/ TIMSK2 2=OCIE2B 1=OCIE2A 0=TOIE2\n  \/\/ Disable interrupt enable\n  TIMSK2 &#038;= ~(1<<OCIE2B);\n  TIMSK2 &#038;= ~(1<<OCIE2A);\n  TIMSK2 &#038;= ~(1<<TOIE2);\n  \/\/ ASSR \u2013 Asynchronous Status Register\n  \/\/ 6=EXCLK 5=AS2 4=TCN2UB 3=OCR2AUB 2=OCR2BUB 1=TCR2AUB 0=TCR2BUB  \n  \/\/ AS2=0 CLKIO,  AS2=1 TOSC1\n  ASSR &#038;= ~(1<<AS2);\n  \/\/ Waveform Generation Mode set to NORMAL mode WGM22,21,20=0\n  TCCR2A &#038;= ~(1<<WGM20);\n  TCCR2A &#038;= ~(1<<WGM21);\n  TCCR2B &#038;= ~(1<<WGM22);\n  \/\/ TCCR2B \u2013 Timer\/Counter Control Register B\n  \/\/ 7=FOC2A 6=FOC2B 3=WGM22 2=CS22 1=CS21 0=CS20\n  \/\/ CS22 CS21 CS20 Description\n  \/\/ 0    0    0    No clock source (Timer\/Counter stopped).\n  \/\/ 0    0    1    clkT2S\/(No prescaling)\n  \/\/ 0    1    0    clkT2S\/8 (From prescaler)\n  \/\/ 0    1    1    clkT2S\/32 (From prescaler)\n  \/\/ 1    0    0    clkT2S\/64 (From prescaler)\n  \/\/ 1    0    1    clkT2S\/128 (From prescaler)\n  \/\/ 1    1    0    clkT2S\/256 (From prescaler)\n  \/\/ 1    1    1    clkT2S\/1024 (From prescaler)\n  TCCR2B |= (1<<CS22);\n  TCCR2B &#038;= ~(1<<CS21);\n  TCCR2B |= (1<<CS20);\n  TCNT2 = 0;\n  OCR2A = 125;\n  \/\/ Clear interrupt flag\n  \/\/ TIFR2 \u2013 Timer\/Counter2 Interrupt Flag Register\n  \/\/ 2=OCF2B 1=OCF2A 0=TOV2\n  TIFR2 &#038;= ~(1<<OCF2A);\n  \/\/ TIMSK2 2=OCIE2B 1=OCIE2A 0=TOIE2\n  \/\/ Enable interrupt\n  TIMSK2 |= (1<<OCIE2A);\n\n}\n\n\/* ------------------------------------------------------------\n -- Main loop\n ------------------------------------------------------------ *\/\nvoid loop() {\n  int t1;\n\n  if(msCount % 2 == 0) {\n    switch(vfdDigit) {\n    case 0:  \n      t1 = hh \/ 10; \n      break;\n    case 1:  \n      t1 = hh % 10; \n      break;\n    case 2:  \n      t1 = mm \/ 10; \n      break;\n    case 3:  \n      t1 = mm % 10; \n      break;\n    case 4:  \n      t1 = ss \/ 10; \n      break;\n    case 5:  \n      t1 = ss % 10; \n      break;\n    }\n    sendVfd(vfdDigit, t1, 0);\n    vfdDigit++;\n    if(vfdDigit > 5) {<br \/>\n      vfdDigit = 0;<br \/>\n    }<br \/>\n  }<\/p>\n<p>  if(msCountOVF == true) {<br \/>\n    ss++;<br \/>\n    if(ss == 60) {<br \/>\n      ss = 0;<br \/>\n      mm++;<br \/>\n    }<br \/>\n    if(mm == 60) {<br \/>\n      mm = 0;<br \/>\n      hh++;<br \/>\n    }<br \/>\n    if(hh == 25) {<br \/>\n      hh = 0;<br \/>\n    }<br \/>\n    msCountOVF = false;<br \/>\n  }<br \/>\n}<\/p>\n<p>\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n &#8212; Send vfd<br \/>\n &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; *\/<br \/>\nvoid sendVfd(int digit, int num, int dot) {<\/p>\n<p>  \/\/ HC595 SCLR(shift register clear)<br \/>\n  digitalWrite(3,LOW);<br \/>\n  digitalWrite(3,HIGH);<br \/>\n  \/\/ RCK positive edge data latch<br \/>\n  digitalWrite(2,LOW);<br \/>\n  digitalWrite(2,HIGH);<br \/>\n  delay(1);<\/p>\n<p>  a = (1<<digit);\n\n  switch(num) {\n  case 0: \n    b = 0xFC; \n    break;\n  case 1: \n    b = 0x01; \n    break;\n  case 2: \n    b = 0xda; \n    break;\n  case 3: \n    b = 0xf2; \n    break;\n  case 4: \n    b = 0x66; \n    break;\n  case 5: \n    b = 0xb6; \n    break;\n  case 6: \n    b = 0xbe; \n    break;\n  case 7: \n    b = 0xe0; \n    break;\n  case 8: \n    b = 0xfe; \n    break;\n  case 9: \n    b = 0xe6; \n    break;\n  }\n\n  \/\/ send to shift register\n  SPI.transfer(a);\n  SPI.transfer(b);\n  \/\/ RCK positive edge data latch\n  digitalWrite(2,LOW);\n  digitalWrite(2,HIGH);\n}\n[\/code]\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5148\u9031\u306e\u91d1\u3001\u571f\u66dc\u65e5\u3067\u5358\u4f53\u3067\u306e\u70b9\u706f\u3092\u3084\u3063\u3066\u307f\u307e\u3057\u3066\u3002\u65e5\u66dc\u306f\u5893\u53c2\u308a\u306e\u305f\u3081\u307b\u3068\u3093\u3069\u624b\u3064\u304b\u305a\u3002\u6708\u66dc\u306e\u5348\u524d\u4e2d\u3067\u3042\u308b\u7a0b\u5ea6\u307e\u3068\u307e\u3063\u3066\u304d\u305f\u304b\u306a\u3068\u3044\u3046\u611f\u3058\u3067\u3059\u3002 Arduiono \u304b\u3089 SPI \u901a\u4fe1\u3067 HC595 \u306e\u30b7\u30d5\u30c8\u30ec\u30b8\u30b9\u30bf\u3078\u8868\u793a\u3055\u305b &hellip; <a href=\"https:\/\/mkusunoki.net\/?p=2636\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;LD8113 \u86cd\u5149\u8868\u793a\u7ba1\u306e\u70b9\u706f\u56de\u8def\u8a66\u4f5c&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7],"tags":[107,169,58],"class_list":["post-2636","post","type-post","status-publish","format-standard","hentry","category-kousaku","tag-arduino-uno","tag-ld8113","tag-vfd"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mkusunoki.net\/index.php?rest_route=\/wp\/v2\/posts\/2636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mkusunoki.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mkusunoki.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mkusunoki.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mkusunoki.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2636"}],"version-history":[{"count":0,"href":"https:\/\/mkusunoki.net\/index.php?rest_route=\/wp\/v2\/posts\/2636\/revisions"}],"wp:attachment":[{"href":"https:\/\/mkusunoki.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mkusunoki.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mkusunoki.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}