平成25年社会人講座 arduinoによるマイコン入門講座

93
ArduinoŖťŨƗŰŸƤ%ēýi fv25gh ¶ĨÏ\ēU Êýi

Upload: katsuhiro-morishita

Post on 24-Jun-2015

1.883 views

Category:

Devices & Hardware


6 download

DESCRIPTION

平成25年に熊本高専で開催されたArduinoによるマイコン入門講座の資料を頂いて掲載の許可を頂いたので掲載します。ライセンスは熊本高専に帰属し、その扱いはCCです。

TRANSCRIPT

Page 1: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoŖťŨƗŰŸƤ%ēýi�fv25ghĪ¶�ĨÏ\ēU�ĪÊ��ýi�

Page 2: 平成25年社会人講座 Arduinoによるマイコン入門講座

1.  ƗŰŸƤƨarduinoŗÓ7ŕÙ� 2.  ĞéLEDŗµ² 3.  �éLEDŗµ´ 4.  ƑźƦŒġŬĩŦŇ 5.  ĞéLEDŗƔƀơ´ 6.  ƀŵƇŽŰƃƂŬ�ŎŌ%2ŗ�© 7.  cdsžơŬ�ŎŌžƤŹƦŗ�ĵ� 8.  7žŶLEDŗµ´

��ŗ'Z(W)Ŗŏĵő�

ú�Řoï�^ĘŖŅőƨXěŖyŬ4ĹŅŕĺŦƨłçĄŒ�ħŅőŢŦĶťĶŕkŒX�ŅőĵĻşŇƩ�

Page 3: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƗŰŵƣŸƤƏƝƦƀŗ¿ÌŒƨYĝíDţĝS Eŗ.mŕŔ

Ŗ�ūũŨƨ�ŏŗ6]�ƂƃƒŖŸƤƏƝƦƀŻŽƅƙ&�ŬĜ

ÎŅŌLSIíDŗŁœŬ�ŅşŇƩ CPUƨƚƛƠƨ%)2FăƨƀŰƗƦFăŕŔŬ�ŏŗĜÎFăŖ�ÖŅőĸŧƨ7�ŒŸƤƏƝƦƀœŅőŗ�Čŧŗ åŬ�Ņőĵ

şŇƩ

ƗŰŸƤœŘ�

Page 4: 平成25年社会人講座 Arduinoによるマイコン入門講座

�ĹŬ.mŇŨ(ç*ŗrĶČŧŖ4ĹŇ)ŁœĺŒĻşŇƩ �ķřƥƥƥ •  �ĽŕŎŌŦƨç4Œ´ŧĺŏĽťĶŕP´ •  �ĺ�ŌŦƨġŒÆŦʼnőĽũŨė·žƤŹƦ •  ßŗ�Ŭç4ŒĀŨƣƕƃƇ •  ¦şŎŌ�ĕŖç4ŒƓƃƇŖĦŬĴŀŨťĶŕĦţŧE

ç*ŗrĵČŧŖƨĵŪĵŪŕŬX¹ŇŨŁœĺŒĻşŇƩ

ƗŰŸƤŒ�ĺŒĻŨŗƲ�

Page 5: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoŘƨ7×ŕ%)2Ŭ"ķŌK�œProcessing/Wiring óùŬXìŅŌĔ»MĹŦ�vŃũŨƗŰŸƤƕƦƈŗÝÌŒƨ�ıŕÍĥĺĴŧşŇƩ �FXãŒ�½ŇŨƕƦƈIJLEONARDOijŘƨ2000(ĽŦĵŒÿ%:åŒŇƩ� LEONARDOŖŘ14�ŗƆżƀơ%)2ƏƤ(�ĐŘPWMŖŢ[q) ƨ6�ŗůƉƣŶ%2ƏƤƨĝ°(+5VœGND)ŕŔĺĴŧƨ¸uŬëÉŇŨŌšŗ4�ŗLED(ONƨLƨTXƨRX)œƨƕƦƈŗ4�ŬƠžƃƇŇŨŌšŗŽŰƃƂĺĴŧşŇƩ�

ArduinoœŘ�

Page 6: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƳƹƴƺƵƷƸœƎſŸƤŬŏŕļşŅŤĶ

USBŷƦƑơ�

USBŷƦƑơŗ^ŃŕŸƋŵƀŗ�ŬArduinoŗŸƋŵƀŖbŅ抺ŇƩŢĶ��ŗQĻĵ�ŗŸƋŵƀŬƎſŸƤŗ0ĠŖĴŨUSBŸƋŵƀŖbŅ抺ŇƩ�

ŊŗlƆƍŰŽƈƟŰƍŗûŠćŠŬŅşŇƩ0ŗƒƣżŲŵƀƦŗ¾ĠŬðŕĺŦ�ÞŖ��ŅőĽōŃĵƩ�

Page 7: 平成25年社会人講座 Arduinoによるマイコン入門講座

Ĕ»MŗöWŬŅşŅŤĶ

¡ŖĔ»MŗöWŬŅşŇƩWindowsŗŽƀƦƇƚƊƝƦĮŇŝőŗƒƣŶƟƙĹŦArduinoŬď{Ņőā4ŅşŇƩ�

ā4ŅŌŦƚƊƝƦŗIJƄƦơijĹŦIJƗŰŸƤƕƦƈijœIJŻƠůơƖƦƇijŗöWŬO�ŅşŇƩ�

Page 8: 平成25年社会人講座 Arduinoによるマイコン入門講座

ĞéLEDŬµ²ŃʼnőŠşŅŤĶ

şňŘĞéLEDƧLight Emitting Diode)Ŭµ²ŃʼnőŠşŅŤĶƩGŗťĶŖ�ÜŅşŇƩ�

LEDŘæŗĒĵ�ĺƒƟŽ(ůƌƦƈ)ƨÇĵ�ĺƗŰƉŽ(ŴſƦƈ)ŖŕŧşŇƩæŗĒĵ�Ŭ13ÀŖƨÇĵ�ŬGNDŖ�ÜŅşŇƩ�

Page 9: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬ�ĵőŠşŅŤĶ

ArduinoŗƒƣŶƟƙŬ%2ŅşŇƩ�Q�Tƨ^�TŖªtŅőƨ%2ŅőŠőĽōŃĵƩ�%2ĺÚūŎŌŦƨ�÷ƕƀƤŬ}ŅőŸƤƎŰơŅşŇƩ�IJŸƤƎŰơÚ�ijœëÉŃũũřOKŒŇƩ��¡ŖArudinoŖŁŗƒƣŶƟƙŬąĊŅşŇƩ;Å8ƕƀƤŬ}ŅőĽōŃĵƩ��ŁũŒƨŁŗƒƣŶƟƙĺArduinoŖąĊŃũőƨŊŗ4�ĺĸŁŕūũşŇƩ��

Page 10: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬO�ŅőŠşŅŤĶ

¡ŖƨÅ8ŗĐ*ŗ~j'ŗ�TŬO�ŅőŠşŅŤĶƩ��ķř100ŖO�Ņőƨ;Å8ƕƀƤŬ}ŅőŠőĽōŃĵƩ��µ²ŗĕĚŬÓ7ŖO�ŇŨŁœĺ)�şŇƩ�ŗ�ŗ� ĺµ´ŅőĵŨ�ĕƨ�ŗ�ŗ� 嬴ŅőĵŨ�ĕŖŕŧşŇƩ��1000ōœ1Ëƨ100ōœ0.1ËŖŕŧşŇƩ��éıœ� ŬO�ŅőƨŊŗƒƣŶƟƙŬąĊŅőŠőĽōŃĵƩ�

Page 11: 平成25年社会人講座 Arduinoによるマイコン入門講座

Arduinoŗ�ĵ�ŗĸŃŦĵ

ƫƩFăŬÛŠşŇƩ İArduinoœ=ĐDŬ�ÜŅşŇƩ ƬƩƒƣŶƟƙŬ�ĻşŇƩ İÛŭōFăŖ¨Ŏőƨ£ŅĽ4�ŇŨťĶŖƒƣŶƟƙŬ�ĻşŇƩ ƭƩƒƣŶƟƙŬArduinoŖąĊŅşŇƩ İ�ĵŌƒƣŶƟƙŬArduinoŖůƃƒƣƦƈŅşŇƩ ī1Àœ2ÀŗĢÀŘƨłçĄŗţŧ�ĵ�ŒƨċŒŢOK.

Page 12: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoİLeonardoŖŏĵő

0�13ŗ14�ŗƆżƀơ%)2ƖƦƇ (Ŋŗ'ƭƨƮƨƯƨưƨƫƪƨƫƫƨƫƭŘůƉƣŶ)2:å) •  Ɔżƀơ%2ƖƦƇƥƥƥĝHĺ�őĵŨĹŔĶĹŬ�Æ •  Ɔżƀơ)2ƖƦƇƥƥƥ5VŗĝHŬ)2(LEDŗµ²) •  ůƉƣŶ)2ƖƦƇƥƥƥ0�5VşŒŬ0.02V/ŠŒ)2 A0�A5ŗ6�ŗůƉƣŶ%2ƖƦƇ •  5VşŒŗĝHŬÕ0.005V/ŠŒ�Æ Ŋŗ�ƨ5Vœ3.3Vŗĝ°Ïĺ�ĆŃũőĵŨƩ�

Page 13: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬŠőŠşŅŤĶ

#ŞŔ%2ŅŌƒƣŶƟƙŬðŕĺŦƨArduinoŗƒƣŶƟƙŖŏĵőú�ŅşŇƩ ƒƣŶƟƙŖŘƨQĻĽ*Ŀő void setup(){ ƥƥƥ } void loop(){ ƥƥƥ } ŗƬŏŗžŵŻƞƤĺĴŧşŇƩ �

Page 14: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬŠőŠşŅŤĶ

void setup(){ ƥƥƥ } Řarduinoŗ,�öWŗ'ZŬ�ĻşŇƩ ŁŗĐ*ŘXê�ƨ�,ŗ1FōĿXêŃũşŇƩ void loop(){ ƥƥƥ } ŖXěŗ4�ŖŏĵőŗƒƣŶƟƙŬ�ĻşŇƩŁŗĐ*Ř�ĹŦ�ŜĢŖXêŃũőĵĻƨ�lşŒĻŌŦƨşŌ�,ŖwŨœĵĶ4�ĺàŧĈŃũşŇƩ �

Page 15: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬŠőŠşŅŤĶ

¡ŖØĹĽŠőĵĻşŅŤĶƩ int led =13;İ→ledŘ13œ?ņœĵĶtAƩ pinMode(led,OUTPUT);İ →13ƖƦƇŬ)2ƖƦƇŖöWƩ digitalWrite(led,HIGH); →13ƖƦƇŖ5VŬ)2Ʃ delay(100);İ →ƒƣŶƟƙŬ100mË(=0.1Ë)¢šŨƩ digitalWrite(led,LOW); →13ƖƦƇŬ0VŖŇŨƩ�

setup()�

loop()�

Page 16: 平成25年社会人講座 Arduinoによるマイコン入門講座

�éLEDŬµ²ŃʼnőŠşŅŤĶ

¡Ř�éLEDŬµ²ŃʼnőŠşŅŤĶƩGŗťĶŖ�ÜŅşŇƩ�

�ÀĒĵæĺƗŰƉŽ(ŴſƦƈ)ŖŕŧşŇŗŒƨ�ÀæŗĒĵÐxŬGNDŖƨŊŗ�ŗæŬ11ƨ12ƨ13Ŗ�ÜŅşŇƩ�

Page 17: 平成25年社会人講座 Arduinoによるマイコン入門講座

�éLEDŬµ²ŃʼnőŠşŅŤĶ

¡Ř�éLEDŬµ²ŃʼnőŠşŅŤĶƩGŗťĶŖ�ÜŅşŇƩ�

�ÀĒĵæĺƗŰƉŽ(ŴſƦƈ)ŖŕŧşŇŗŒƨ�ÀæŗĒĵÐxŬGNDŖƨŊŗ�ŗæŬ11ƨ12ƨ13Ŗ�ÜŅşŇƩ�

Page 18: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬ�ĵőŠşŅŤĶ

ArduinoŗƒƣŶƟƙŬ%2ŅşŇƩ�#ŞŔŗĞéLEDŬµ²ŇŨŗƒƣŶƟƙĺ�ŏ*ĴŨŁœŖŕŧşŇƩ int led =13;İ→ledŘ13œ?ņœĵĶtAƩ pinMode(led,OUTPUT);İ →13ƖƦƇŬ)2ƖƦƇŖöWƩ digitalWrite(led,HIGH); →13ƖƦƇŖ5VŬ)2Ʃ delay(1000);İ →ƒƣŶƟƙŬ1000mË(=1Ë)¢šŨƩ digitalWrite(led,LOW); →13ƖƦƇŬ0VŖŇŨƩ�

Page 19: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƒƣŶƟƙŬO�ŅőŠşŅŤĶ

#ŞŔŗĞéLEDŬµ²ŃʼnŌ�ŗƒƣŶƟƙŬO�ŅŌŗœ?�Ŗƨdelay(1000)ŗ� ŬO�ŅőŠşŅŤĶƩ �

Page 20: 平成25年社会人講座 Arduinoによるマイコン入門講座

ġŬĩŦŅőŠşŅŤĶ

HĝƑźƦŗæŗÇĵ�Ŭ13ŖƨĒĵ�ŬGNDŖ�ÜŅşŇƩ�

¡ŘġŬŕŦŅőŠşŅŤĶƩHĝƑźƦŬ��ŗťĶŖ�ÜŅşŇƩ�

HĝƑźƦ�

Page 21: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoŗƒƣŶƟƙŬ%2ŅşŇƩ� delayMicroseconds(500);İ →ƒƣŶƟƙŬ500µË(=5×10-6Ëƨŏşŧ0.0005Ë)¢šŨƩ �

ƒƣŶƟƙŬĹĻşŅŤĶ

Page 22: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoŗƒƣŶƟƙŬ%2ŅşŇƩ�Q�Tƨ^�TŖªtŅőƨ%2ŅőŠőĽōŃĵƩ�toneœdelayŗC�ŗàŧĈŅŕŗŒƨŸƏƦœþŧ�ĿŒ%2ŇŨœ�ŒŇƩ��%2ĺÚūŎŌŦƨ�÷ƕƀƤŬ}ŅőŸƤƎŰơŅşŇƩ�IJŸƤƎŰơÚ�ijœëÉŃũũřOKŒŇƩ��¡ŖArudinoŖŁŗƒƣŶƟƙŬąĊŅşŇƩ;Å8ƕƀƤŬ}ŅőĽōŃĵƩ��

ġęŬŕŦŅőŠşŅŤĶ

Page 23: 平成25年社会人講座 Arduinoによるマイコン入門講座

toneŗ~jŖĴŨ� ĺġęŖŕŧşŇƩ262Řƈƨ294ŘƢƨ330ŘƘƥƥƥŖŕŧşŇƩ� durationŘġŗĒŃŖŕŧƨƒƣŶƟƙŗ�À�,Œ500œĵĶ� ŖöWŃũőĵşŇƩŁũŒ0.5Ëĕġĺ)şŇƩ��ŒŘIJĻŦĻŦ�ijŗ�,ŬƒƣŶƟƙŒ�ŎőŠşŅŤĶƩġęŘ �ƈƈſſƟƟſİƐŮƐŮƘƘƢƢƈ��ŒŇƩ�

toneĖ�ŗ�ĵ�

Page 24: 平成25年社会人講座 Arduinoによるマイコン入門講座

void loop(){ tone(pin,262,duration); delay(duration); tone(pin,262,duration); delay(duration); tone(pin,392,duration); delay(duration); tone(pin,392,duration); delay(duration); tone(pin,440,duration); delay(duration); tone(pin,440,duration); delay(duration); tone(pin,392,duration); delay(duration); delay(500); �

tone(pin,349,duration); delay(duration); tone(pin,349,duration); delay(duration); tone(pin,330,duration); delay(duration); tone(pin,330,duration); delay(duration); tone(pin,294,duration); delay(duration); tone(pin,294,duration); delay(duration); tone(pin,262,duration); delay(duration); delay(1000); }�

int pin = 13; int duration = 500; void setup(){ pinMode(pin,OUTPUT }

ĻŦĻŦ�ŗƒƣŶƟƙ üģƐųơƁŖƒƣŶƟŬáĵőşŇŗŒƨŸƏƦŅő�ŎőĵŌōĵő�ĵşʼnŭƩ�

Page 25: 平成25年社会人講座 Arduinoによるマイコン入門講座

ĞéLEDŒƔƀơ´ŬŏĽŧşŅŤĶ

�ÀRšŖ�ŎŌĞéLEDŗµ²FăŬŢĶ�h�ŧşŇƩ�

LEDŘæŗĒĵ�ĺƒƟŽ(ůƌƦƈ)ƨÇĵ�ĺƗŰƉŽ(ŴſƦƈ)ŖŕŧşŇƩæŗĒĵ�Ŭ13ÀŖƨÇĵ�ŬGNDŖ�ÜŅşŇƩ�

Page 26: 平成25年社会人講座 Arduinoによるマイコン入門講座

ĞéLEDŒƔƀơ´ŬŏĽŧşŅŤĶ

¡ŖƒƣŶƟƙŬ%2ŅşŇƩ for(i=0;i<255;i++){ ƥƥƥ } →iĺ0ĹŦRşŎőƨ{ƥƥƥ}ŬXêŅőƨÚūŎŌŦiŖ1ŬĂŅőƨ{ƥƥƥƻŬXêŇŨœĵĶ4�Ŭƨiĺ255ŖŕŨşŒàŧĈŅşŇƩ analogWrite(ledpin,i) →iŗ ŖťŎőƨ13ƏƤŖ)2ŇŨĝHĺO5ŇŨƩ iĺ0ŗ�Ř0Vƨiĺ255ŗ�Ř5VŬ)2ŅşŇƩiĺ1NķŨłœŖÕ0.02VĝHĺQĻĽŕŧşŇƩ�

Page 27: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƀŵƇŽŰƃƂŬ�ŎŌ%2ŗ�©

ŽŰƃƂŬ�ŎŌ%2ŗ�©ŖŏĵőÈøŇŨŌšƨ��ŗFăŬ�ŧşŇƩ�

Page 28: 平成25年社会人講座 Arduinoによるマイコン入門講座

¡ŖƒƣŶƟƙŬ%2ŅşŇƩ digitalRead(button) →button=7ŕŗŒƨ7ƏƤŖ%ŎőĽŨĝHŬ�ÆŅőƨĝHĺ�őĵũřIJHIGHijƨ�őĵŕĿũřIJLOWijœĵĶ ŬĈŅşŇƩ if(val == HIGH){ ƥƥƥ } else{ ƥƥƥ } →valŗ ĺHIGHœÏŅĿũřƨŇľlŗ{ƥƥƥ}ŗ�ŬƨÏŅĽŕĿũřelseŗ{ƥƥƥ}ŗ�ŬXêŅşŇƩ�

ƀŵƇŽŰƃƂŬ�ŎŌ%2ŗ�©

Page 29: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƀŵƇŽŰƃƂŬ�ŎŌ%2ŗ�©

ŽŰƃƂĺ}ŃũőĵŨĹƨŊĶŒŕĵĹŬƨarduinoŖ�ÆŃʼnŨ�ÛŠŬú�ŅşŇƩ�

+5V�

0V�

?V�

Å8ŒÉŅŌLxŗĝHŘ ŽŰƃƂŬ}Ņőĵŕĵ�→İ0V ŽŰƃƂŬ}ŅŌ�→İ5V ŁŗĝHŬ7ƏƤŒûŠ9ŎőƨƕƀƤĺ}ŃũőĵŨĹƨŊĶŒŕĵĹŬð*ĿőĵşŇƩ

Page 30: 平成25年社会人講座 Arduinoによるマイコン入門講座

ŒŘƨƕƀƤŬ}Ņőĵŕĵ�ŘƨLEDĺµ´ŅőĵőƨƕƀƤŬ}ŇœLED嬴ŇŨťĶŖƨƒƣŶƟƙŬO�ŅőŠşŅŤĶƩ�

ƀŵƇŽŰƃƂŬ�ŎŌ%2ŗ�©

Page 31: 平成25年社会人講座 Arduinoによるマイコン入門講座

CdsžơŬ�ŎŌžƤŹƦŗ�ĵ�

CdsžơŬ�ŎŌžƤŹƦŗ�ĵ�ŖŏĵőÈøŇŨŌšƨ��ŗFăŬ�ŧşŇƩ�

Page 32: 平成25年社会人講座 Arduinoによるマイコン入門講座

CdsžơŬ�ŎŌžƤŹƦŗ�ĵ�

¡ŖƒƣŶƟƙŬ�vŅşŇƩ analogRead(0) →ůƉƣŶ%2ŗ0ƏƤŖ%ŎőĽŨĝHŬûŠ9ŧƨ0Vŗ�Ř0ƨ5Vŗ�Ř1023œĵĶ ŬĈŅşŇƩ ĝHŬûŠ9ŨÔhŘ0.004887585 V/ŠŒŇƩ

0V�

5V�

0�

1023�

1024/Š�

5÷1024=0.004887585�

�Ʊ ĺ512ŗœĻ 512×0.004887585 =2.50244352 V�

Page 33: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´

į�ƫ�į�2 į�3

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�

GND�

7žŶLEDœArduinoŬ��ŗČŧŖđßŅşŇƩ�

Page 34: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´

į�ƫ�į�2 į�3

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�

GND�

7žŶLEDŬ�Ŏő�TŬëÉŃʼnŨŌšŖŘƨŔŁŬµ´ŃʼnũřèĵĹäķşŅŤĶ 0ŗL>→a,b,d,f,g,i ¡Ŗa,b,d,f,g,iŬµ´ƨƶŬ¬´ŇŨŌšŗƒƣŶƟƙŬ�ĵőŠşŅŤĶƩ

Page 35: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´

į�ƫ�į�2 į�3

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�

GND�

?�ŖŅő1�9şŒŗ�TŬĢŖëÉŇŨƒƣŶƟƙŬ�ŎőŠşŅŤĶƩ Ŋũŋũŗ�TŬëÉŇŨƒƣŶƟƙŗĕŖdelay()Ŭ%ũŨŁœŒƨëÉŇŨčhŬOķŨŁœĺŒĻşŇƩ

Page 36: 平成25年社会人講座 Arduinoによるマイコン入門講座

�lŘ7žŶLEDŬ�ŎőŴűƤƀŬ�ŎőŠşŅŤĶ

}ŅƕƀƤŬ}ŇŁœŒƨ�TĺŴűƤƇŃũőĵĽFăŖO�ŅşŇƩ�}ŅƕƀƤŬ11œ13ŗxƨ|zŬ13œ16ŗxŖbŅćŠƨŽŰƃƂŗ11œ5Vƨ13œ8ƨ16œGndŬđßŬŅşŇƩ�

Gnd 5V

8

Page 37: 平成25年社会人講座 Arduinoによるマイコン入門講座

ĸÁũ�ŒŅŌ

¡FŘƨ­hžƤƀƦœ7žŶLEDŬ�ŎŌƆżƀơ­hôŬŏĽ

ŧşŇƩ

Ēĵ�ĕƨĸÁũ�ŒŅŌƩ

��ŘŔĶŢĴŧĺœĶłńĵşŅŌƩ

ĸ¤ŬŏĿőĸdŧĽōŃĵƩ

Page 38: 平成25年社会人講座 Arduinoによるマイコン入門講座

ArduinoŖťŨƗŰŸƤ%ēýi(2ĎÃ)�fv25ghĪ¶�ĨÏ\ēU�ĪÊ��ýi�

Page 39: 平成25年社会人講座 Arduinoによるマイコン入門講座

1.  arduinoŗ�ĵ�œöWŗÓ7ŕnã

2.  7žŶLEDŗµ´ŗnãœƁŰƉƘƃŵµ´

3.  2�ŗ7žŶLEDŖťŨƁŰƉƘƃŵµ´

4.  ­hžƤŹƦŖťŨ­hô®Făŗ�vœƒƣŶƟƙ

5.  ­hžƤŹƦœ7žŶLEDŖťŨƆżƀơ­hôŗ�v

��(2ĎÃ)ŗ'ZŖŏĵő�

�ĎŘƨŕŨŝĽFăţƒƣŶƟƙŬłçĄŒäķőĵŌōĵőƨ�vŅőĵĽťĶŕkŒX�ŅőĵĻŌĵœrĵşŇƩ�

Page 40: 平成25年社会人講座 Arduinoによるマイコン入門講座

ƳƹƴƺƵƷƸŬƎſŸƤŒ�½ŇŨŌšŗöWŗnã(1)

USBŷƦƑơ�

USBŷƦƑơŗ^ŃŕŸƋŵƀŗ�ŬArduinoŗŸƋŵƀŖbŅ抺ŇƩŢĶ��ŗQĻĵ�ŗŸƋŵƀŬƎſŸƤŗ0ĠŖĴŨUSBŸƋŵƀŖbŅ抺ŇƩ�

ŊŗlƆƍŰŽƈƟŰƍŗûŠćŠŬŅşŇƩŸƤƏƝƦƀ→Òº→ƆƍŰŽƗƋƦżƜƦŬā4ŅƨleonardoŗƈƟŰƍŬƨarduino IDE(Ĕ»M)ŗƐųơƁŖĴŨdriversƐųơƁŬ�WŅőûŠćşʼnşŇƩ�

Page 41: 平成25年社会人講座 Arduinoによるマイコン入門講座

¡ŖĔ»MŗöWŬŅşŇƩWindowsŗŽƀƦƇƚƊƝƦĮŇŝőŗƒƣŶƟƙĹŦArduinoŬď{Ņőā4ŅşŇƩ�

ā4ŅŌŦƚƊƝƦŗIJƄƦơijĹŦIJƗŰŸƤƕƦƈijœIJŻƠůơƖƦƇijŗöWŬO�ŅşŇƩ�

ƳƹƴƺƵƷƸŬƎſŸƤŒ�½ŇŨŌšŗöWŗnã(2)

Page 42: 平成25年社会人講座 Arduinoによるマイコン入門講座

)2œ%2ŗnãŬŅőŠşŅŤĶ

ĞéLEDœƀŵƇŽŰƃƂŬ�ŎőƨƕƀƤŬ}ŅŌ�ōĿ¬ķŨFăŬ�ŎőŠşŅŤĶƩ FăGŘ��ŗČŧœŕŧşŇƩ�

LEDŘ�sĺĴŎőƨæŗĒĵ�ĺƒƟŽ(ůƌƦƈ)ƨÇĵ�ĺƗŰƉŽ(ŴſƦƈ)ŖŕŨŁœŖªtŅőĽōŃĵƩ FăĺŒĻŌŦƒƣŶƟƙŬ�ĵőŠşŅŤĶƩ�

Page 43: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´ŗnã(1)

İ 7žŶLEDŬµ´ŃʼnŨFăŬÛŭŒŠşŅŤĶƩ İ ŌōŅLEDŗ=ƏƤŘƨ��ŗGŗÀ<ŗArduinoŗƆżƀơ%)2ƖƦƇŖđßŅőĽōŃĵƩ İ İ ĝ«.Ę½ŗ|zŬ�ÜŇŨŁœŬpũŕĵŒĽōŃĵƩ�

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�

GND�

į�3

Page 44: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´ŗnã(3)

İðŐŦĵŒŇĺƨ;GŗťĶŕđßŖŕŧşŇƩ İ ¡Ŗƨ0ĹŦ9şŒĢŖ�TŬëÉŇŨƒƣŶƟƙŬ�vŅőŠşŅŤĶƩ

Page 45: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´ŗnã(3)

int a = 0; int b = 1; int d = 2; int e = 3; int f = 4; int g = 5; int i = 6; int j = 7;

void setup(){ pinMode(a,OUTPUT); pinMode(b,OUTPUT); pinMode(d,OUTPUT); pinMode(e,OUTPUT); pinMode(f,OUTPUT); pinMode(g,OUTPUT); pinMode(i,OUTPUT); pinMode(j,OUTPUT); }

void loop(){ digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(d,HIGH); digitalWrite(e,LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(i,HIGH); digitalWrite(j,LOW); delay(300); İ�lÜĽ�

seg_1.ino�

Page 46: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗµ´FăŗO�

İ ¡ŖFăŬ_ŅO�ŅőŠşŅŤĶƩ GNDŖ�ÜŅőĵŌLEDŗCƏƤŬƨArduinoŗƆżƀơIOƖƦƇŗ8ÀŖ�ÜŅőĽōŃĵƩ�

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�8�

į�3

Page 47: 平成25年社会人講座 Arduinoによるマイコン入門講座

İ O�ŅŌFăŒƨ?ņťĶŖ0ĹŦ9şŒĢŖ�TŬëÉŇŨťĶŖƨƒƣŶƟƙŬ�£ŅőŠşŅŤĶƩ İ LEDĕŖĝHŗbĺ¼ņũřƨĝ«ĺ«ũőLEDĺ$ŧşŇƩ ŁŗäķĹŦƨƆżƀơ IOƖ Ʀ Ƈ ŗ 8 À ŗ ) 2 ŬIJLOWijŖöWŇŨœèĵŖŕŧşŇƩ

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�8�

į�3

7žŶLEDŗµ´FăŗO�

Page 48: 平成25年社会人講座 Arduinoによるマイコン入門講座

int a = 0; int b = 1; int d = 2; int e = 3; int f = 4; int g = 5; int i = 6; int j = 7; int c = 8; �

void loop(){ digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(d,HIGH); digitalWrite(e,LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(i,HIGH); digitalWrite(j,LOW); digitalWrite(c,LOW); delay(300); �lÜĽƥƥƥ

void setup(){ pinMode(a,OUTPUT); pinMode(b,OUTPUT); pinMode(d,OUTPUT); pinMode(e,OUTPUT); pinMode(f,OUTPUT); pinMode(g,OUTPUT); pinMode(i,OUTPUT); pinMode(j,OUTPUT); pinMode(c,OUTPUT); }

7žŶLEDŗµ´FăŗO�(ƒƣŶƟƙŗ�£) _7segLED_2_pre.ino�

Page 49: 平成25年社会人講座 Arduinoによるマイコン入門講座

void loop(){ digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(d,HIGH); digitalWrite(e,LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(i,HIGH); digitalWrite(j,LOW); digitalWrite(c,LOW);

7žŶLEDŗµ´FăŗO�(ƒƣŶƟƙŗĖ�5) _7segLED_3_pre.ino�

void loop(){ zero(); } void zero(){ digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(d,HIGH); digitalWrite(e,LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(i,HIGH); digitalWrite(j,LOW); digitalWrite(c,LOW); }�

IJ0ijŬëÉŃʼnŨC�ŗĐ*Ŭƨzero()œĵĶĖ�œŅőWâŅƨ�½ŇŨL>ŘŊŗzero()ŬBŚ)ŅşŇƩ

Page 50: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5(1)

7žŶLEDŬNţŇŌšŗFăŖŏĵőäķőŠşŇƩ 7žŶLEDŬƈƃƇŢ@šőŇŝőžŶƚƤƇŬ.mŇŨL>ƨ8�ŗůƌƦƈŬ�ÜŇŨoïĺĴŧşŇƩ

7žŶLEDİ1�İ→8� 7žŶLEDİ2�İ→16� 7žŶLEDİ3�İ→24�

Ƽ Ƽ Ƽ

7žŶLEDŬNţŇœƨArduinoŗƏƤĺĂŧŕĽŕŧşŇƩ

Page 51: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5(2)

7žŶLEDŬNţŇŌšŗFăŖŏĵőäķőŠşŇƩ 7žŶLEDŬƈƃƇŢ@šőŇŝőžŶƚƤƇŬ.mŇŨL>ƨ8�ŗůƌƦƈŬ�ÜŇŨoïĺĴŧşŇƩ

7žŶLEDİ1�İ→8� 7žŶLEDİ2�İ→16� 7žŶLEDİ3�İ→24�

Ƽ Ƽ Ƽ

7žŶLEDŬNţŇœƨArduinoŗƏƤĺĂŧŕĽŕŧşŇƩ

Page 52: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5(3)

ŊŁŒƨğeŖÇĵ�ĕŒ.mŇŨLEDŗ+ŧ�ķőƨĴŌĹŢî�ŗLEDĺ?�ŖëÉŃũőĵŨťĶŖðʼnŨœĵĶy©Ŭ�ĵşŇƩ

ƁŰƉƘƃŵ.m(µ´)

�FŗFăŒŁũŬX¹ŇŨŖŘŔĶŅŌŦťĵŒŅŤĶĹƲ ŴſƦƈĺ�ÜŃũŌƖƦƇŒƨĨčŖHIGHœLOWŬ+ŧ�ķőƨ2ŏŗLEDŬëÉŃʼnŨŁœŖŅşŇƩ

Page 53: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5(4)

ŒŘXěŖLEDŬNţŅőƨƁŰƉƘƃŵ.mŖťŧƨ�ŏŗLEDŬëÉŃʼnŨFăŬ�ŎőŠşŅŤĶƩ

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�8�

į�3

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�9�

į�3

digitalWrite(8,LOW); digitalWrite(9,HIGH); ŗ�ƨa!ŗLEDĺµ´ digitalWrite(8,HIGH); digitalWrite(9,LOW); ŗ�ƨ;!ŗLEDĺµ´

ĨčŖ+ŧ�ķőƨàŧĈŇƩ

Page 54: 平成25年社会人講座 Arduinoによるマイコン入門講座

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�8�

į�3

į�0 į�1 į�2

4 ĭ�

5 ĭ�

6 ĭ�

7 ĭ�

| į�9�

į�3

7žŶLEDŗ2�5(5)

ŒŘXěŖLEDŬNţŅőƨƁŰƉƘƃŵ.mŖťŧƨ�ŏŗLEDŬëÉŃʼnŨFăŬ�ŎőŠşŅŤĶƩ�GŗťĶŖLEDœ|zŬđáŅőĹŦƨ�Ŏő�ŃĵƩ

Page 55: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5ŗƒƣŶƟƘƤŶ(1)

int a = 0; int b = 1; int d = 2; int e = 3; int f = 4; int g = 5; int i = 6; int j = 7; int c_left = 8; int c_right = 9; int duration =100;�

¡Ŗa;ŗLEDŖ0Ŭ �ŖëÉŃʼnŨƒƣŶƟƙŬŏĽŎőŠşŅŤĶƩ

void setup(){ pinMode(a,OUTPUT); pinMode(b,OUTPUT); pinMode(d,OUTPUT); pinMode(e,OUTPUT); pinMode(f,OUTPUT); pinMode(g,OUTPUT); pinMode(i,OUTPUT); pinMode(j,OUTPUT); pinMode(c_left,OUTPUT); pinMode(c_right,OUTPUT); }�

void loop(){ zero_left(); delay(duration); zero_right(); delay(duration); } void zero_left(){ digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(d,HIGH); ��ÜĽƥƥƥ

_7segLED_5.ino�

Page 56: 平成25年社会人講座 Arduinoによるマイコン入門講座

7žŶLEDŗ2�5ŗƒƣŶƟƘƤŶ(2)

int a = 0; int b = 1; int d = 2; int e = 3; int f = 4; int g = 5; int i = 6; int j = 7; int c_left = 8; int c_right = 9; int duration =5; int k = 0;�

void setup(){ pinMode(a,OUTPUT); pinMode(b,OUTPUT); pinMode(d,OUTPUT); pinMode(e,OUTPUT); pinMode(f,OUTPUT); pinMode(g,OUTPUT); pinMode(i,OUTPUT); pinMode(j,OUTPUT); pinMode(c_left,OUTPUT); pinMode(c_right,OUTPUT); }�

void loop(){ for(k=1;k<100;k++){ zero_left(); delay(duration); one_right(); delay(duration); } for(k=1;k<100;k++){ one_left(); delay(duration); two_right(); delay(duration); } ��ÜĽƥƥƥ

¡Ŗ01→12→23→ƥƥƥœëÉŇŨƒƣŶƟƙŬŏĽŎőŠşŅŤĶƩ _7segLED_6.ino�

Page 57: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬŏĹŎőŠşŅŤĶ

­hžƤŹƦŬ�Ŏő­hŬ®WŇŨFăŬ�ŎőŠşŅŤĶƩ�

Pñ�

ƏƤůŹŰƤ�

+VsŖ4-20VŬ3ķŨœƨVoutĹŦ1ĬŖŏĻ10mVĺ)2ŃũŨƩ�

Page 58: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬŏĹŎőŠşŅŤĶ(2)

­hžƤŹƦĹŦ)2ŃũŨĝHŬ®WŇŨŌšŗFăŬ�ŎőŠşŅŤĶƩ�

Fă�

ƏƤůŹŰƤ�

Page 59: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬŏĹŎőŠşŅŤĶ(3)

­hžƤŹƦĹŦ)2ŃũŨĝHŬŻƠůơƛƊƀƦŒëÉŇŨƒƣŶƟƙŬ�ŎőŠşŅŤĶƩ�

ŻƠůơƛƊƀƦŗ�ĵ� void setup()ŗ{ }'Ŗ Serial.begin(9600); œõĉŅƨ void loop()ŗ{ }'Ŗ Serial.println(O�); œõĉŅşŇƩ

float val = 0; void setup(){ Serial.begin(9600); } void loop(){ val = analogRead(0); Serial.println(val); delay(500); }

10mV=0.01V/Šŗ ĺ%ŨŗŒƨint→floatŒO�ŬWâŅşŇƩ�

ƒƣŶƟƙ��

Page 60: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬŏĹŎőŠşŅŤĶ(4)

­hžƤŹƦĹŦ)2ŃũŨĝHŬ­hŖO�ŅőƨŻƠůơƛƊƀƦŒ­hŬëÉŇŨƒƣŶƟƙŬ�ŎőŠşŅŤĶƩ�

analogRead(0) →ůƉƣŶ%2ŗ0ƏƤŖ%ŎőĽŨĝHŬûŠ9ŧƨ0Vŗ�Ř0ƨ5Vŗ�Ř1023œĵĶ ŬĈŅşŇƩ ĝHŬûŠ9ŨÔhŘ0.004887585 V/ŠŒŇƩ

0V�

5V�

0�

1023�

1024/Š�

5÷1024=0.004887585�

�Ʊ ĺ512ŗœĻ 512×0.004887585 =2.50244352 V�

�Fŗ­hžƤŹƦŒŘƨ0ĬŒ0Vĺ) 2 Ń ũ ƨ 1 Ĭ N ķ Ũ ł œ Ŗ10mV(=0.01V))2ĺN3ŅşŇƩ �ķř20ĬŗL>ƨ)2ĝHVoutŘ Vout = 0.01×20İ= 0.2 [V] ĺ)2ŃũşŇƩ ŁŗĖ�œanalogRead()ŒûŠ9Ũ ĹŦƨ­hŬÑ)ŅőƨŻƠůơƛƊƀƦŒëÉŃʼnŨťĶŖƨƒƣŶƟƙŬO�ŅşŇƩ

Page 61: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬŏĹŎőŠşŅŤĶ(5)

­hžƤŹƦĹŦ)2ŃũŨĝHŬ­hŖO�ŅőƨŻƠůơƛƊƀƦŒ­hŬëÉŇŨƒƣŶƟƙŬ�ŎőŠşŅŤĶƩ�

­hŬ%ũŨO�ŬtempœWâŇŨœ tempİ= (5/1024)*val / 0.01 ŏşŧ tempİ= (5/1024)*val * 100 œŕŧşŇƩ ŁŗtempŬŻƠůơƛƊƀƦŒëÉŃʼnŨťĶŖƨƒƣŶƟƙŬO�ŅşŇƩ

float val = 0; float temp = 0; void setup(){ Serial.begin(9600); } void loop(){ val = analogRead(0); temp = (5*val) / 1024 * 100; Serial.println(temp); delay(500); }

Page 62: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hŗƆżƀơëÉŗ0±"(1)

­hžƤŹƦŬ�ŎőÑ)ŅŌ­hŗO�tempŗ Ŭ7žŶLEDŒëÉŇŨŌšŗ±"ŬŅşŇƩ�

­hžƤŹƦŬ�ŎőÑ)ŅŌ­hŗO�tempŗ Ŭƨ2ŏŗ7žŶLEDŒëÉŇŨŌšŖŘƨ­hŗ Ŭ10ŗ�œ1ŗ�Ŗ*ĿőƨŊũŋũŬëÉŇŨoïĺĴŧşŇƩ tempŗ (�ķř25)Ŭ10ŗ�ŗ (25ŗL>Ř2)œƨ1ŗ�ŗ (25ŗL>Ř5)Ŗ*ĿőƨŊũŋũ-ŗO�ƨtemp_10œtemp_1Ŗ%ũŨŌšŖŘŔĶŇũřťĵŒŅŤĶĹƩ

Page 63: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hŗƆżƀơëÉŗ0±"(2)

­hžƤŹƦŬ�ŎőÑ)ŅŌ­hŗO�tempŗ Ŭ7žŶLEDŒëÉŇŨŌšŗ±"ŬŅşŇƩ�

10ŗ�ŗ Ŭ¥šŨŖŘƨtempŬ10Œ1ŧƨ1ŗ�ŗ Ŭ¥šŨŖŘƨtempŬ10Œ1ŎŌ Ŭ¥šőƨŊũŋũtemp_10œtemp_1Ŗ%ũşŇƩ ŌōŅtempŘfloatJŕŗŒƨ��ŗôÑŘŒĻşʼnŭƩŊŁŒ-ŗ��JŗO�temp_intŬ½tŅőƨ temp_int = int(temp) œŅƨ��JŗO�temp_iŬ�ŎőôÑŅşŇƩ 1ŧÑŗ³ÑSŘİ IJ/ij(ŽƟƃŻƝ)ƨ�ŧŬ¥šŨ³ÑSŘIJ%ij(ƎƦžƤƇ)Ŭ�ĵşŇƩ #ŞŔŗƒƣŶƟƙŬO�ŅőƨŻƠůơƛƊƀƦŒƨ tempƨ temp_10ƨtemp_1ŬëÉŃʼnőŠşŅŤĶ�

Page 64: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬ�ŎőÑ)ŅŌ­hŗO�tempŗ Ŭ7žŶLEDŒëÉŇŨŌšŗ±"ŬŅşŇƩ�

float val = 0; float temp = 0; int temp_10; int temp_1; int temp_int; void setup(){ Serial.begin(9600); }

void loop(){ val = analogRead(0); temp = (5*val) / 1024 * 100; temp_int = (int)(temp); temp_10 = temp_int / 10; temp_1 = temp_int % 10; Serial.println(temp); Serial.println(temp_10); Serial.println(temp_1); delay(500); }�

­hŗƆżƀơëÉŗ0±"(3)

Page 65: 平成25年社会人講座 Arduinoによるマイコン入門講座

­hžƤŹƦŬ�ŎőÑ)ŅŌ­hŗ Ŭƨ2ŏŗ7žŶLEDŒëÉŇŨƆżƀơ­hôŬ�vŅőŠşŅŤĶƩ •  ­hžƤŹƦĹŦŗ­hŗ Ŭ10ŗ�œ1ŗ�ŗ Ŗ*òŅőŻƠůơƛƊƀƦŒëÉŃʼnŨƒƣŶƟƙ

•  �ŏŗ7žŶLEDŬƨƁŰƉƘƃŵ.mŖťŧƨ-ıŗ ŒëÉŃʼnŨƒƣŶƟƙ

ŬÛŠ>ūʼnũřVvŒŇƩ

Ɔżƀơ­hôŗ�v(1)

Page 66: 平成25年社会人講座 Arduinoによるマイコン入門講座

Ɔżƀơ­hôŗ�v(2)

void loop(){ val = analogRead(0); temp = (5*val) / 1024 * 100; temp_int = int(temp); temp_10 = temp_int / 10; temp_1 = temp_int % 10; Serial.println(temp); Serial.println(temp_10); Serial.println(temp_1);

for(k=0;k<100;k++){ if(temp_10==0){ zero_left(); } if(temp_10==1){ one_left(); } �lŏŐĽƥƥƥ�

ƒƣŶƟƙŗ�(W�ƨO�ŗWâœvoid setup()ŗÐxŘÄ¿)

Page 67: 平成25年社会人講座 Arduinoによるマイコン入門講座

VvŃũŌ�Řƨ ­hëÉĺśũŕĵťĶŖƨ�Fŗ­hŗfIŬÑ)ŅőƨëÉŇŨťĶŖƒƣŶƟƙŬ�£ŅőŠşŅŤĶƩ 7žŶLEDŬŢĶ�ŏNţŅőƨ3�ŗƆżƀơ­hôŬ�vŅőŠşŅŤĶƩ

Ɔżƀơ­hôŗ�v(Â`)

Page 68: 平成25年社会人講座 Arduinoによるマイコン入門講座

ĸÁũ�ŒŅŌ

¡Fŗ�ÚFŘƨ¯§#¼ĺýcŖŕŧşŇƩ

Ēĵ�ĕƨĸÁũ�ŒŅŌƩ��ŘŔĶŢĴŧĺœĶłńĵşŅŌƩ

�ĎŢťŪŅĽĸĤĵĵŌŅşŇƩ

ĸ¤ŬŏĿőĸdŧĽōŃĵƩ

Page 69: 平成25年社会人講座 Arduinoによるマイコン入門講座

平成25年度 熊本高等専門学校 社会人講座

Arduinoによるマイコン入門講座(3週目)

1.ドットマトリクスLEDの使い方2.文字や記号の表示方法

3.文字のスクロール方法

4.外部入力による点灯位置の制御

Arduino日本語リファレンスhttp://www.musashinodenpa.com/arduino/ref/

ドットマトリクスLEDを用いたミニ電光掲示板

1

Page 70: 平成25年社会人講座 Arduinoによるマイコン入門講座

赤色ドットマトリクスLED(アノードコモン)

LED:8×8 = 64個 端子は8+8=16本

ピン番号①②③④⑤⑥⑦⑧※文字面を手前にみる

ピン番号⑯⑮⑭⑬⑫⑪⑩⑨

1.ドットマトリクスLEDの使い方

2

Page 71: 平成25年社会人講座 Arduinoによるマイコン入門講座

赤色ドットマトリクスLED(アノードコモン)

LED:8×8 = 64個 端子は8+8=16本

行(row)

列(col)

1.ドットマトリクスLEDの使い方

点灯方法点灯させたいLEDの行をHIGH(5V),列をLOW(0V)にする.

3

Page 72: 平成25年社会人講座 Arduinoによるマイコン入門講座

配線 「列」の配線には,途中に100Ωの抵抗を接続する.

1.ドットマトリクスLEDの使い方

デジタル入出力ピンの0番と1番はシリアル通信などで使うため(プログラムをアップロードするときにも干渉することがあるため),できれば接続しない方がよい. 4

Page 73: 平成25年社会人講座 Arduinoによるマイコン入門講座

配線LED

ピン番号行/列番号

Arduinoピン番号

9 行1 2

10 列4 3

11 列6 4

12 行4 5

13 列1 6

14 行2 7

15 列7 8

16 列8 9

1.ドットマトリクスLEDの使い方

ANALOG IN A0 A1 A2 A3 A4 A5

UNO 14 15 16 17 18 19Leonald 18 19 20 21 22 23

注意:アナログ入力端子(A0~A5)をデジタル入出力として使う場合のピン番号

LEDピン番号

行/列番号

Arduinoピン番号

1 行5 13

2 行7 12

3 列2 11

4 列3 10

5 行8 20(A2)6 列5 21(A3)7 行6 22(A4)8 行3 23(A5)

5

Page 74: 平成25年社会人講座 Arduinoによるマイコン入門講座

どれか1つを点灯させる

1.ドットマトリクスLEDの使い方

const int row[8] = { 2,7,23,5,13,22,12,20 }; //行のArduinoのピン番号

const int col[8] = { 6,11,10,3,21,4,8,9 }; //列のArduinoのピン番号void setup(){for(int i=0; i < 8; i++){ // 8回繰り返し

pinMode(col[i], OUTPUT); // 行の端子を「出力」に設定

pinMode(row[i], OUTPUT); // 列の端子を「出力」に設定digitalWrite(col[i],HIGH); // 列にHIGHを出力してLEDを消灯

}} ※この部分はこの後共通して使います

LED_MAT_1

6

Page 75: 平成25年社会人講座 Arduinoによるマイコン入門講座

どれか1つを点灯させる

1.ドットマトリクスLEDの使い方

void loop(){

digitalWrite(row[0],HIGH); // ある行にHIGH(5V)を出力

digitalWrite(col[0], LOW); // ある列にLOW(0V)を出力

}

※配列の番号を変えて,任意の場所を点灯させてみよう.ただし,配列の番号(アドレス)は0から始まることに注意!

LED_MAT_1

7

Page 76: 平成25年社会人講座 Arduinoによるマイコン入門講座

順番に1個ずつ点灯させる

1.ドットマトリクスLEDの使い方

void loop(){for(int i=0; i < 8; i++){ // 8回繰り返し(行の移動)

digitalWrite(row[i],HIGH); // 行にHIGHを出力⇒点灯準備for(int j=0; j < 8; j++){ // 8回繰り返し(列の移動)

digitalWrite(col[j], LOW); // 列にLOWを出力⇒ LED点灯delay(500); // 移動の間隔 この場合は0.5秒digitalWrite(col[j],HIGH); // 列にHIGHを出力 ⇒ LED消灯

}digitalWrite(row[i],LOW); // 行にLOWを出力⇒点灯準備解除

}}

64個がすべて点灯して見えるようにdelayMicroseconds( )に替えて値を変更してみましょう.

LED_MAT_2

8

Page 77: 平成25年社会人講座 Arduinoによるマイコン入門講座

1個ずつ右にずらしながら点灯させ,すべて点灯したらその行を消灯して次の行へ移動

void loop(){for(int i=0; i < 8; i++){

digitalWrite(row[i], HIGH); // 行をHIGHにする(ONの準備)for(int k=0; k<8; k++){ // 一行すべてONになるまで繰り返し

for(int j=0; j<8-k; j++){ // ONの横移動digitalWrite(col[j], LOW); // 列をLOWにする(LED ON)delay(100); // 移動スピードdigitalWrite(col[j],HIGH); // 列をHIGHにする(LED OFF)

}digitalWrite(col[7-k],LOW); // 最後のLEDをONに保つ

} for(int j=0; j<8; j++){ // 一行すべてOFFになるまで繰り返し

digitalWrite(col[j], HIGH); // 列をHIGHにする(LED OFF)} digitalWrite(row[i],LOW); // 行のLED OFF(その行すべてOFF)

}}

LED_MAT_3

1.ドットマトリクスLEDの使い方

9

Page 78: 平成25年社会人講座 Arduinoによるマイコン入門講座

一文字の表示法

2.文字や記号の表示方法

boolean matrix[8][8]={{0,0,0,1,1,0,0,0},{0,0,1,0,0,1,0,0},{0,1,0,0,0,0,1,0},{0,1,0,0,0,0,1,0},{0,1,0,0,0,0,1,0},{0,1,1,1,1,1,1,0},{0,1,0,0,0,0,1,0},{0,1,0,0,0,0,1,0}};

setup( )の前に文字データを二次元配列 matrix[行数][列数]で準備する.

//boolean型はtrue(1)かfalse(0)だけ

黒を1 ⇒白を0 ⇒

10

Page 79: 平成25年社会人講座 Arduinoによるマイコン入門講座

一文字の表示法

2.文字や記号の表示方法

void loop(){for(int i =0; i < 8; i++){ // 行の繰り返し(配列を縦にみていく)

digitalWrite(row[i],HIGH); // 行をHIGHにする(ONの準備)

for(int j = 0; j < 8; j++){ // 列の繰り返し(配列を横にみていく)if(matrix[i][j] == 1){ // もし配列の中身が1ならば次の{}を実行

digitalWrite(col[j], LOW); // LED ON(その列をLOWにする)delayMicroseconds(200); // 点灯時間

}digitalWrite(col[j],HIGH); // LED OFF(その列をHIGHにする)

}digitalWrite(row[i],LOW); // 行をLOWにする(その行すべてOFF)

}}

LED_MAT_CHARACTER1

11

Page 80: 平成25年社会人講座 Arduinoによるマイコン入門講座

任意の文字や絵の表示

2.文字や記号の表示方法

LED_MAT_CHARACTER2

黒を1⇒白を0⇒

左側に白黒で文字や絵を描き,右側に 1,0 のデータを作る.

右側の 1,0 のデータをmatrix[8][8]に書いて実行させてみましょう.

12

Page 81: 平成25年社会人講座 Arduinoによるマイコン入門講座

文字スクロール

3.文字のスクロール方法

boolean matrix[8][MAX_LEN+1]={ {1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0},{0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0}

};

// 8行,(8×文字数+1)列の配列を作る.// 最後の列はすべて0としておく.

空の列

#define MAX_LEN 32 //8×4=32文字文字数に合わせて変更する

LED_MAT_SCROLL

13

Page 82: 平成25年社会人講座 Arduinoによるマイコン入門講座

文字スクロール(文字表示)

3.文字のスクロール方法

void loop(){int count = 20; // 1文字の表示回数 5(早い)~50(ゆっくり)while(count>0){ // count数だけ繰り返し

for(int i=0; i<8; i++){ // 行の繰り返し(配列を縦にみていく)digitalWrite(row[i],HIGH); // 行をHIGHにする(ONの準備)for(int j = 0; j < 8; j++){ // 列の繰り返し(配列を横にみていく)

if(matrix[i][j] ==1 ){ // 配列の中身が1のときだけ次を実行digitalWrite(col[j], LOW); // LED ONdelayMicroseconds(200); // 点灯時間

}digitalWrite(col[j],HIGH); // LED OFF

}digitalWrite(row[i],LOW);

}count--; // countを1減らす}次ページへ続く

LED_MAT_SCROLL

14

Page 83: 平成25年社会人講座 Arduinoによるマイコン入門講座

文字スクロール(文字の移動)

3.文字のスクロール方法

for(int k = 0; k < 8; k++){ // 行の繰り返し

matrix[k][MAX_LEN] = matrix[k][0]; // 最後の列に1列目を移動

for(int l = 0; l < MAX_LEN; l++){ // 列の繰り返し

matrix[k][l]=matrix[k][l+1]; // 2列目以降を1つ左へずらす

}

}

}

文字データの二次元配列を1列ずらす

LED_MAT_SCROLL

15

Page 84: 平成25年社会人講座 Arduinoによるマイコン入門講座

任意の文字や絵のスクロール

3.文字のスクロール方法

16

Page 85: 平成25年社会人講座 Arduinoによるマイコン入門講座

エクセルによる二次元データ作成

3.文字のスクロール方法

(1).8×文字数+1列の枠を準備.その後データを入力する.

点灯 ⇒ 1消灯 ⇒ 0

(2).「名前を付けて保存」で「ファイルの種類」をCSV(カンマ区切り)として保存し,終了する.もし,“○○.csv”へ変更を保存しますか?が表示されたら“いいえ”を選択して終了する.

(3).保存されたCSV形式のファイルを右クリックし,「プログラムから開く」から「メモ帳」で開く.そのデータをコピーする.

(4).貼り付けた後,左側に { 最後列の後に }, (中カッコとカンマ)を入力する.(5).#define MAX_LEN ○←に列数を入力.

17

Page 86: 平成25年社会人講座 Arduinoによるマイコン入門講座

好きな文字や図案を作ってスクロールさせてみよう

3.文字のスクロール方法

(1) エクセルによる文字や図案の作成

⇒ CSV形式で保存 ⇒ メモ帳で開く

(2) データをboolean matrix[8][MAX_LEN+1]へコピーする.

(3) 配列データの左に 「 { 」,右側に「 },」を追加する.

(3) 文字数(列の数)に合わせて MAX_LEN を変更する.

(4) loop( )内の count でスクロールスピードを調整する.

18

Page 87: 平成25年社会人講座 Arduinoによるマイコン入門講座

可変抵抗の使い方

4.外部入力による点灯位置の制御

ALPS ロータリーボリューム 10kΩ 型番RK09K1130AP5

1 2 3 1

3つまみ

210kΩ

つまみの回転角度

端子1-2間の抵抗 B特性

・ポテンショメータ・電子回路

A特性オーディオ用

ブレッドボードに挿すために曲げている

回路図

19

Page 88: 平成25年社会人講座 Arduinoによるマイコン入門講座

可変抵抗器の配線

4.外部入力による点灯位置の制御

ANALOGIN

5VX行方向

Y列方向

GND

A0A1

POWER

20

Page 89: 平成25年社会人講座 Arduinoによるマイコン入門講座

スケッチの例 RowColumnScanningを使用

4.外部入力による点灯位置の制御

(1)ファイル ⇒ スケッチの例 ⇒ 07.Display ⇒RowColumnScanning を選択

(2) Arduino UNO のピン番号をLEONALD仕様に変更// 2-dimensional array of row pin numbers:const int row[8] = {2,7,19,5,13,18,12,16 } をconst int row[8] = {2,7,23,5,13,22,12,20 } に変更// 2-dimensional array of column pin numbers:const int col[8] = {6,11,10,3,17,4,8,9 } をconst int col[8] = {6,11,10,3,21,4,8,9 } に変更

21

Page 90: 平成25年社会人講座 Arduinoによるマイコン入門講座

RowColumnScanning

4.外部入力による点灯位置の制御

// 2-dimensional array of pixels:int pixels[8][8]; // ドットマトリクスLED用の

8×8の二次元配列を準備// cursor position:int x = 5; //LEDのx軸(行方向)の位置を決める変数⇒ pixelsのx番地int y = 5; //LEDのy軸(列方向)の位置を決める変数⇒ pixelsのy番地

// initialize the pixel matrix:for (int x = 0; x < 8; x++) {for (int y = 0; y < 8; y++) {pixels[x][y] = HIGH; //配列pixelsの中身をすべてHIGHに初期化

}}

void setup( )は省略

01234567

yの番地

xの番地

0 1 2 3 4 5 6 7

22

Page 91: 平成25年社会人講座 Arduinoによるマイコン入門講座

void readSensors() {// turn off the last position:pixels[x][y] = HIGH; // 配列pixelsの番地(x,y:前の番地)の中身をHIGHに設定// read the sensors for X and Y values:x = 7 - map(analogRead(A0), 0, 1023, 0, 7); //入力電圧を0~7へ変換し,

それを7から引いたものをxy = map(analogRead(A1), 0, 1023, 0, 7); //入力電圧を0~7へ変換し,それをy// set the new pixel position low so that the LED will turn on// in the next screen refresh:pixels[x][y] = LOW; // 配列pixelsの番地(x,y:現在の番地)の中身をLOWに設定

}

RowColumnScanning4.外部入力による点灯位置の制御

A0の電圧を取得 現在の範囲 新しい範囲

01234567

yの番地

xの番地

0 1 2 3 4 5 6 7

readSensors()は,可変抵抗のつまみの位置を電圧として読み込み,その値によって点灯位置の番地x,y を決め,そこがONになるように配列pixelsにLOWをセットする.

23

Page 92: 平成25年社会人講座 Arduinoによるマイコン入門講座

RowColumnScanning4.外部入力による点灯位置の制御

void refreshScreen() { //pixel[x][y]をスキャンしてLOWの位置でLEDを点灯させ,すぐに消す// iterate over the rows (anodes):for (int thisRow = 0; thisRow < 8; thisRow++) { // 行の繰り返し// take the row pin (anode) high:digitalWrite(row[thisRow], HIGH); // thisRow番目の行をHIGHにする(ONの準備)

// iterate over the cols (cathodes):for (int thisCol = 0; thisCol < 8; thisCol++) { // 列の繰り返し// get the state of the current pixel;int thisPixel = pixels[thisRow][thisCol]; // thisPixelに現在のpixels[thisRow][thisCol] の中身を代入// when the row is HIGH and the col is LOW,

// the LED where they meet turns on:digitalWrite(col[thisCol], thisPixel); // thisCol列に thisPixelの値をデジタル出力

(thisPixelが LOW のところだけ LED ON)// turn the pixel off:if (thisPixel == LOW) { // もし thisPixelの中身が LOW ならば次を実行

digitalWrite(col[thisCol], HIGH); // thisCol列に HIGH を出力(LED OFF)}

}// take the row pin low to turn off the whole row:digitalWrite(row[thisRow], LOW); // thisRow番目の行をLOWにする(OFFに戻す)

}}

点灯

消灯

24

Page 93: 平成25年社会人講座 Arduinoによるマイコン入門講座

参考文献・購入先

• Massimo Banzi著,船田巧訳:Arduinoをはじめよう第2版,㈱オライリージャパン,2000円+税

• 河連庸子,山崎文徳,神原健著:Arduinoスーパーナビゲーション,リックテレコム,3600円+税

• 建築発明工作ゼミ2008 基本から応用まで詳しく解説されています.

http://kousaku-kousaku.blogspot.jp/2008/07/arduino.html• 部品の購入先

Arduino:スイッチサイエンス http://www.switch-science.com/電子部品:秋月電子通商 http://akizukidenshi.com/catalog/

皆様お疲れさまでした.

25