Arduino Nano 互換機テスト
はんだ付けしたArduino Nano 互換機が正常に動作するかテストしました。
このArduino Nano 互換機はUSB通信にCH340Gというチップを使っているようです。
archlinuxならch340はドライバを入れなくても認識しました。
$lsmod |grep ch34 ch341
テスト回路
5VとGNDをブレッドボードのプラスとマイナスに、
デジタルピンを全てLEDに、
アナログピンを全てGNDに、
可変抵抗を取り付けてテストしたいアナログピンを繋いだだけです。
テストプログラム
int digitalPin =13; //0-13 デジタルピンの数 int analogPin =7; //0-7 アナログピンの数 int analogLevel =1024; void setup() { // put your setup code here, to run once: // デジタルピンをすべて出力モードに for(int i=0; i <= digitalPin; i=i+1){ pinMode(i, OUTPUT); } } void loop() { // put your main code here, to run repeatedly: // 一番電圧の高いアナログピンを取得 int analogMax =0; for(int i=0; i <= analogPin; i=i+1){ int analog[i]; analog[i] = analogRead(i); if(analog[i] > analogMax){ analogMax = analog[i]; } } //アナログ入力から点灯させるLEDを選ぶ int count=0; for(int i=digitalPin; i >= 0; i=i-1){ if(analogMax > analogLevel/2/digitalPin*(i+1)+analogLevel/4){ //analogLevelの半分を検出範囲、上下1/4を余白にする if(count < 8){ //デジタルピンの出力が合計200mAを超えないようにする count = count +1; digitalWrite(i,HIGH); } else { digitalWrite(i,LOW); } } else { digitalWrite(i,LOW); } } }
アナログピンの中で一番電圧の高いピンを探し、デジタルピンでLEDを光らせるプログラムです。
LED1つに20mAほど流れるので全部光らせるとArduino Nano 互換機の合計出力(200mA)を超えてしまうので、
if(count < 8){
の部分で同時に光らせる数を制限しています。
テスト結果
テストしたArduino Nano 互換機は2つとも無事動作しました。
ピンに通電しなかったり、隣のピンと繋がってたりすることもなかったので無事使えそうです。
書き込みエラー
ツール>ボード Arduino Nano
プロセッサ ATmega328p
としてプログラムを書き込もうとしましたが,
エラーが出て書き込めませんでした。
avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
ツール>ボード Arduino Nano
プロセッサ ATmega328p(Old Bootloader)
に設定を変更すると書き込めました。