ä»åã¯Arduinoã§ã䜿ããããæŒç®åã«ã€ããŠã®ã玹ä»ã§ãã
Arduinoã䜿ã£ãŠããŠãããæŒç®ãå¿ èŠã«ãªãã¿ã€ãã³ã°ãšããã°ã
ãªã«ãã®ICã䜿ããšãã«ãã¬ãžã¹ã¿ãããããšããããã§ããããïŒ
ãã ã以åããArduinoãAVRã®ãã€ã³ã³ãšããŠäœ¿çšããŠããèšäºãæžããŠããŸãã
ããã§ã¯é »ç¹ã«ãã€ã³ã³èªäœã®ã¬ãžã¹ã¿ãæžãæããé¢ä¿äžã
ã©ãããŠããããæŒç®ãå¿ èŠã«ãªããŸãã
ãŸããæ¯å0b00000001ã®ããã«8bitå šãŠæå®ããŠãã§ããŸãã…
ã¡ãã£ãšãã£ãæªããšããã®ãšãä»ã®æ©èœãåžãbitãŸã§äžçšæã«å€æŽããã®ã¯
ãã°ã®åå ãšãªããŸããããåºæ¬çã«ã¯å¿ èŠãªãšãããå¿ èŠãªã ãå€æŽããã»ããããã§ãã
ãã ã§ããæ¢ã«ã€ãã³ãã§åºåãããããšããŠãã³ãäºçŽãããŠããããšããããŸãã®ã§ã
ãã®ãã³ãäžçšæã«ããã£ãŠããŸãã®ã¯å±ãªãã§ãããïŒ
ãšããããšã§ä»åã¯ãããæŒç®ã«ã€ããŠã玹ä»ããŠãããŸãã
Youtubeãã£ã³ãã«ã«ããŸããŸãªåç»ãäžããŠããŸãã
âââãã¡ãããYoutubeãã£ã³ãã«ã«ã¢ã¯ã»ã¹!! âââ
æ¬ããã°ã¯ã¢ãã£ãªãšã€ããçšããåºåãæ²èŒããŠããŸãã
- ã©ããªãšãã«ãããæŒç®ãå¿ èŠãïŒ
- ãããæŒç®ãšã¯å ·äœçã«äœãããïŒ
- ãããæŒç®ãå®äŸãšåãããŠçŽ¹ä»ããã
- ä»åã®ãŸãšãã
ã©ããªãšãã«ãããæŒç®ãå¿ èŠãïŒ
ããã§ã¯ã©ããªæã«ãããæŒç®ãå¿ èŠãäŸãæããŠãããŸãããã
äŸãã°ãã®2ã€ã¯æ¬ããã°ã§ã玹ä»ããŠããå 容ã§ãã
ã©ã¡ãã以åãã玹ä»ããŠããå 容ãªã®ã§è»œã觊ããŠãããŸãããã
IC(ã·ããã¬ãžã¹ã¿ã ã£ããIOãšãã¹ãã³ãã ã£ãã)ãå¶åŸ¡ããå Žåã
ICé¢ä¿ãå¶åŸ¡ãããšãã¯ãã®ICã®ã¬ãžã¹ã¿ã«éä¿¡ããå¿ èŠããããŸãã
ãã®éããã®ICã®ããŒã¿ã·ãŒãã«æžãããŠããã¬ãžã¹ã¿(ããããçªå°)
ã«ããããç«ãŠããèœãšãããããããšã§ãICãæå³éãã«åãããŸãã
å ·äœçã«ã¯ããã®èšäºã§çŽ¹ä»ããmcp23017ãšãã
IOãšãã¹ãã³ããŒãªãããããäŸã§ãã
ãããIOãšãã¹ãã³ããŒ
âââ
![MCP23017](https://www.hobbyhappyblog.jp/wp-content/uploads/2021/11/DSC02251-1024x683.jpg)
ãã®IOãšãã¹ãã³ããŒã§äœ¿çšãããã³ãèšå®ãããã
å®éã«åºåããããšãã«0b00000011ã®ããã«2é²æ°ã§è©²åœç®æã«ãããã
ç«ãŠãç¶æ ã§éä¿¡ãããšãICåŽã§ãã®éãã®åããããŸãã
åçŽãªå¶åŸ¡ã®å Žåã¯ãã¹ãŠ8bitãªã8bitäžžããšå ¥åããŠããŸã£ãŠãåé¡ãªãããšãå€ãã§ãã
Arduinoã®æ¬äœãšãããã¹ããã€ã³ã³æ¬äœãå¶åŸ¡ããå Žåã
å ã»ã©ã®äŸã ãšã8bitãªã8bitäžžããšå ¥åããŠããŸãã°ãããšèšããŸãããã
ãã®Arduinoã«èŒã£ãŠãããã€ã³ã³ã®å¶åŸ¡ã®å Žåã
ããã¯ãããŸããã
ãšããã®ããArduinoã®å Žåããã§ã«ã©ããã«ã€ãªãã£ãŠã
åäœãããã®ã«éèŠãªããããŸã§èœãšããŠããŸããšã
æ£åžžãªåäœã«ãªããªãããã§ãã
äŸãã°ãPortAã®0~7ãŸã§ãã¹ãŠLOWã«èœãšãã
ãšãã£ãæ什ãåºããå Žåã«ãä»ã®æ©èœãšãããã£ã³ã°ããŠã
PORTAã®ââçªãã³ãLOWã«èœãšããšäžå ·åã…ãªããŠããšãçºçããå¯èœæ§ãããããã§ãã
ãããæŒç®ãšã¯å ·äœçã«äœãããïŒ
ãããæŒç®ã§ããããšãšèšãã°ã次ã®3ã€ãããã ãšèªèããŠããŸãã
å ·äœçã«ã©ããããšãã«ãã®æŒç®ãå¿ èŠãªã®ãã玹ä»ããŸãã
bitã®ãªãã®ãæå®ããæ¡æ°ã®bitã®ã¿ãå転ãããã
ããã¯ãå ¥åºåé¢ä¿ã®ã¬ãžã¹ã¿ãããããšãã«çºçããŸãã
ä»ãŸã§åºåããŠãã5çªpinãä»åºŠã¯LOWã«ããŠåºåãæ¢ãããã
ãªããŠãšãã§ããã
ãã®æã3çªpinã4çªpinã¯ãã®ãŸãŸHIGHã®ãŸãŸã§å¶åŸ¡ãããã
ãšããå Žåããªã«ãèããã«ãã¹ãŠã®bitãèœãšããšã
3çªpinãš4çªpinã«ã圱é¿ãåãŒãããã§ãã
ã§ããããçã£ãæ¡ã®ããããå転ãããå¿ èŠãããããã§ãã
æå®ããæ¡ã®bitã匷å¶çã«1ãŸãã¯0ã«ããã
ããã¯åæåã®æãªããã«ãã䜿ããŸãã
ä»çŸåšã®ã¬ãžã¹ã¿ã®ç¶æ ã¯ç¡èŠããŠãæå®ããç¶æ ã«ããããšãã§ããã
å ã»ã©ãæžããŸããããåæåã®æã¯ãã®ããã«åŒ·å¶çã«ãããã®æäœãè¡ããŸãã
ååŸããã¬ãžã¹ã¿ã®ç¶æ ãããç®çã®æ¡æ°ã®ããããç«ã£ãŠãããã©ãã確èªããã
ã¬ãžã¹ã¿ã®ç¶æ ã¯ç¢ºèªããæ©äŒãããã¯ãã§ãã
ãããªæã8bitãªãã°ã8æ¡ã®01ã®æ°åã®çŸ åãè¿ã£ãŠããã¯ãã§ãã
ãã®çŸ åãèŠãŠãââæ¡ç®ã ãã….ãšãããšã¡ãã£ãšããµãã§ãããã
ã§ãããããããããââæ¡ã ããèŠãããã«å·¥å€«ããããã§ãã
ãããæŒç®ãå®äŸãšåãããŠçŽ¹ä»ããã
ããã§ã¯å®äŸãšåãããŠä»åã®ãããæŒç®ã®å 容ãã玹ä»ããŠãããŸãããã
ãŸãã䜿ãã®ã¯C++
8bitã®ã¬ãžã¹ã¿ãæäœããããšãåæãšããŸãã
C++ãšããã®ã¯ãArduinoã®èšèªãC++ã®æŽŸçã ããã§ãã
ãã®éããã£ãŠããããšãArduinoã§ã䜿ããŸãã®ã§è©ŠããŠã¿ãŠãã ããã
ã§ã¯ãã£ãŠãããŸãããã
bitã®ãªãã®ãæå®ããæ¡æ°ã®bitã®ã¿ãå転ãããã
æå®ããæ¡ã®ãšããã ãbitãå転ãããå Žåãã玹ä»ããŸãã
äŸãã°ã0b00100100ãšããç¶æ ã«ãªã£ãŠãããšããŸãããã
ããã§ã3bitç®ã®1ã®ã¿ã0ã«ããŸãããã
ã€ãŸãã3bitç®ãå転ããããã§ãããã®ã»ãã®bitã«ã¯åœ±é¿ãåºãŠã¯ãããŸããã
ãŸãã¯æªãäŸã§ãã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test = 0b000;//ããã§0ã«ããŠãããã6bitç®ãŸã§0ã«ãªã£ãŠããŸãã
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ0
ãããã«0b000ãšããã°ã0bitç®ãã3bitç®ãŸã§0ã«ããããšã¯ã§ããŸãããã
6bitç®ã®1ãŸã§0ã«ãªã£ãŠããŸã£ãŠããŸãã
ãããå転ãšèšã£ãŠããã®ã«ã匷å¶çã«0ã«ããŠããã®ã§ãå転ãšãèšããªãã§ããã
ããã§ã¯ã©ãããã°ããã®ãã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test ^= 0b100;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
} // å®è¡çµæ32(0b00100000)
ããããããšã«ãã£ãŠã6bitç®ã«åœ±é¿ãåºãªãããã«ãªã£ãŠããŸãã
å ·äœçã«ã¯ããã®è¡ã§ããã
test ^= 0b100;// ããã§å転ãããŠããã
ããã§äœãããŠããããšãããšã
^=ã¯XORã§ãã
ãã®XORã¯ãäž¡æ¹ã®bitã確èªããŠãã©ã¡ããäžæ¹ã§ã1ã«ãªã£ãŠããã1ã
ã©ã¡ãã1ã«ãªã£ãŠããã0ã«ãããšããè«çæŒç®åã§ãã
ã€ãŸãXORã䜿ãããšã§ã
3bitç®ã1ã«ãªã£ãŠããã0ã«ãªããã
3bitç®ã0ã ã£ãå Žåã¯1ã«ãªããã€ãŸãå転ãããšããããšã§ããã
è©Šãã«ãã®ããã«2è¡ã«ãããšãå ã«æ»ãããšã確èªã§ããŸãã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test ^= 0b100;
test ^= 0b100;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ36(0b00100100)
åœç¶ã§ãããè€æ°ã®bitãåæã«å転ãããããšãå¯èœã§ãã
ããã§ã¯ã1~4bitç®ãå転ãããŸãããã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test ^= 0b1111;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}//å®è¡çµæ43(0b00101011)
ã¡ãããš1~4bitç®ãŸã§å転ããŠããããšãããããŸããã
æå®ããæ¡ã®bitã匷å¶çã«1ãŸãã¯0ã«ããã
次ã«æå®ããæ¡ã®bitã匷å¶çã«1ãŸãã¯0ã«ããŠã¿ãŸãããã
ã²ãšã€åã®ç« ã§ã¯ãå転ã§ãããããçŸåšã®bitã®ç¶æ ã«ãã£ãŠå€åãããŠããŸããã
ä»åã¯åŒ·å¶çã«çã£ãbitã ã0ã1ã«ãããã®ã§ãXORæŒç®åã¯äœ¿çšã§ããŸããã
ã§ã¯äœã䜿ãããšãããšã1ã«ãããå Žåã¯ORã0ã«ãããå Žåã¯ANDãšNOTã§ãã
å ·äœçã«ã³ãŒãããèŠãããŸãã
1ã«ãããå Žåã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test |= 0b1111;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ47(0b00101111)
0ã«ãããå Žåã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test &= ~0b1111;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ32(00100000)
匷å¶çã«çã£ãbitã1ã«ããå Žåã
匷å¶çã«1ã«ããå Žåã¯ãORã䜿çšããŸãã
ORã¯|ãã®èšå·ã䜿çšããŸãã
ORã®åœ¹å²ã¯ãäž¡æ¹ã®bitãæ¯èŒããŠãã©ã¡ããäžæ¹ã§ãbitã«1ãå ¥ã£ãŠããå Žåã¯1ã«ããã
ãšããè«çæŒç®åã§ãã
ã§ããããçã£ãbitã«1ãç«ãŠãããªããORã§1ãã¶ã€ããŠããã°ã
ããšãå ã®bitã0ã§ã1ã§ã匷å¶çã«1ã«ãªãããšããåçã§ãã
匷å¶çã«çã£ãbitã0ã«ããå Žåã
匷å¶çã«0ã«ããå Žåã¯ãANDãšNOTã䜿çšããŸãã
ANDã®åœ¹å²ã¯ãäž¡æ¹ã®bitãæ¯èŒããŠãã©ã¡ãã1ã«ãªã£ãŠããªããã°0ã§ã
ã©ã¡ãã1ã«ãªã£ãŠããã°1ã«ãªããŸãã
NOTã¯åŠå®ã®è«çæŒç®åã§ããä»åã®å Žåã¯ã
~0b1111ãšãªã£ãŠããã®ã§ã0b0000ãšåãæå³ã§ãã
ã§ã¯ä»åã®å Žåã¯ã©ããªã£ãŠããããšãããšã
1bitç®ãã4bitç®ãŸã§0b0000ãšANDããšããšããããšã«ãªããŸãã
0ãšANDããšãâå¿ ã0ã«ãªãã
ãããã£ãåçãããŸãå©çšããŠãããšããããšã§ãã
ååŸããã¬ãžã¹ã¿ã®ç¶æ ãããç®çã®æ¡æ°ã®ããããç«ã£ãŠãããã©ãã確èªããã
ä»åºŠã¯ååŸããã¬ãžã¹ã¿ã®äžãããå¿ èŠãªæ¡æ°ã®ãããã確èªããæ¹æ³ã§ãã
å ·äœçã«ã¯ãå ã»ã©ãã䜿çšããŠããäŸãåŒãç¶ã䜿çšããŸãã
äŸãã°ãtest = 0b00100100ãšãªã£ãŠããŠããã®testã®ç¶æ ãèªãã ãšããŸãã
ãããŠã5bitç®ã0ãªã®ã1ãªã®ãã確èªããããšããŸãã
ãã¡ãã人éã¯ãã®æ°åã®çŸ åãç®ã§ç¢ºèªããŠãå³ãã5çªç®ã¯0ãªã®ã1ãªã®ãïŒ
ãšç¢ºèªããããšãå¯èœã§ãããã¡ãã0ã§ããïŒ
ãã ãããã°ã©ã äžã§ããã ãå¿ èŠãªå Žåã©ããããããã§ããããïŒ
ãã®bitã ã䜿ã£ãŠifæã§åå²ããã㪅ãªããŠãšãã«çµæ§é¢åãªã¯ãã§ãã
ããã§ã¯ãã®é¢åãªåé¡ã解決ããŸãããã
åé¡ã®ããŒãšãªãã®ã¯ããããã·ãããšããããŒã«ã§ãã
ãŸãã¯ã³ãŒãããèŠãããŸãã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test = (test>>4 & 0b01);
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ0
ãã£ãããã ãã§5bitç®ã®ç¶æ ãããããŸãã
ãããã·ããã¯>>ã§è¡šçŸãããŸãããããã·ãããšã¯ã
åçŽã«èª¬æãããšãæ°åã®çŸ åããã®ãŸãŸãã£ãã移åãããææ³ã§ãã
test>>1ãšãããšã1ã€å³ã«ãããŸãã
ã€ãŸãtest=0b0010010ãšãªããŸãã
ããã«ç¶ããŠtest>>1ãšãããšã
test=0b001001ãšãªããŸãã
ä»åã®äŸã§ã¯5bitç®ã®ç¶æ ãç¥ãããã®ã§ã4ã€å³ã«ãããããšã§ã
5bitç®ã®æ°å€ã1bitç®ã«æ¥ãŸãã
ããã«ãããŸã§æ¥ããã0b01ãšANDããšã£ãŠãããã°ã
5bitç®ãããäžã®bitã¯ç¡èŠããŠ0ãªã®ã1ãªã®ããããããšããåçã§ãã
ãããã·ããããã ãã ãšã5bitç®ä»¥éã®å€ãäžç·ã«åºãŠããŠããŸãã®ã§ã
&0b01ã¯å¿ ãå¿ èŠã«ãªãã®ãå¿ããªãããã«æ°ãã€ããŸãããã
ãããã«&0b01ãå¿ãããšãããªæãã«ãªããŸãã
#include <iostream>
#include <string>
using namespace std;
int main() {
int test = 0b00100100;
test = test>>4;
string testS = std::to_string(test);
printf(testS.c_str());
return 0;
}// å®è¡çµæ2(0b10)
ä»åã®ãŸãšãã
ä»åã¯ãããæŒç®ã«ã€ããŠã玹ä»ããŸããã
ç§èªèº«ãArduinoã«èŒã£ãŠããatmega4809ã®ã¬ãžã¹ã¿ãçŽæ¥ããã£ãŠããæã«ã
ããããããæŒç®åã£ãŠããäœã®æå³ã ã£ãïŒ
ãªããŠæãåºããªãããã£ãŠããéšåããã£ãã®ã§ã
ä»åã®èšäºã¯èªåã®åå¿é²çãªæå³åãããããŸãã
ã¬ãžã¹ã¿ãããã£ãããã€ã³ã³é¢ä¿ã§å¶åŸ¡ãã人ã«ã¯åœããåã®è©±ãããããªãã§ããã
åå¿è ã§ãããããããæŒç®ã©ãã©ããã£ãŠãããïŒãšãã
å Žåã«ã¯æçšã§ãããã²ãã¹ã¿ãŒããŠã¿ãŠãã ããã
ã³ã¡ã³ã