式はvolt * 5.9-6.6 = mhz(1.8vと4.5vの間で有効)のようですので、3.3vでは12.8mhzになります。12.8MHzで実行している場合、3.3vを下回ると問題が発生する可能性があり(診断も非常に困難です!)、問題を回避できる場合があります。
ただし、Arduino Atmega328pチップには「電圧低下」検出が4.3vに設定されています。これを下回ると、チップはシャットダウンします。ISP(別名ICSP)を入手してヒューズを交換できます。http: //www.engbedded.com/fusecalc/にアクセスして、ヒューズの設定を確認してください。ISPを使用して現在のヒューズを読み取ったり、Arduinoボードなしで実際にチップを再プログラムしたりすることもできます。私のプロジェクトにはすべて6ピンヘッダーがあります。これを行う場合は、Arduinoボードを使用して再プログラミングする前に、「ツールメニューの」「ブートローダーを書き込む」必要があります。プログラミングは引き続きArduino IDEを介して実行できることに注意してください。
あるいは、「軽く」したい場合(そしてISPを持っている場合)は、内部の8MHzクロックを使用するようにヒューズを変更できます。これにより、2つの余分なピンも解放されます。ただし、通常の水晶では1日あたり1.7秒(20万分の20)であるのに対し、内部時計は1日あたり1.2時間(= 5%)ずれている可能性があることに注意してください。計時に使用しない場合、これはおそらく問題ではありません。
コードのタイミングを変更する必要があります-チップ/クロック速度などの正しい設定でboards.txtを追加する必要があります-ボードのエントリから設定をコピーし、名前を変更して変更できます「build.f_cpu」の設定。Arduino IDEを再起動(または起動)し、[ツール]-> [ボード]に移動して、追加したボードを選択します。
チップをボードのオン/オフに移動して再プログラミングできます([ツール]→[ボード]で選択したボードは、プログラミングボードではなく、最終ボードであることに注意してください)。プラグの抜き差しには注意してください。最終的にはピンが曲がります。または、上記のようにISP(ICSP)を使用することもできます(お勧めします)。チップが工場出荷時のデフォルトである場合、動作クロックがある限り、ISPプログラミングも機能します。
チップがどれだけの電力を使用するかは、それを使って何をするかに大きく依存します-クロック速度、クロックソースなどだけでなく、スリープモードも。よく眠っている場合、実行速度が遅い場合よりも高速である場合の方が描画が少なくなる可能性があります。ほとんどすべての時間がスリープ状態である場合、クロックが半分の速度である場合、電力消費は秒単位ではなくクロックサイクルごとにカウントされます。電流が半分の場合、命令ごとに同じ電流を引き出します。残りの時間は眠っているので、何のメリットもありません。電力使用量の非常に優れた内訳、電力を節約する方法のヒントなどについては、http://www.gammon.com.au/powerを参照してください。
クロックの速度を下げすぎると、シリアルとi2cの信頼性が低下する可能性があります(速度を落とさない限り)。ただし、これが問題になる前に1MHzまで下げることができると予想されます-1MHzのチップが9600bpsを試みます転送されるデータのビットごとに104の命令があります。i2cは100kHzで実行されるため、ビットあたり10命令(1MHzで)を取得します-プッシュする可能性があります。8MHzで大丈夫です。テスト、テスト、テスト。
更新:電圧低下検出には3つの可能な設定があります-AtMega328pには3つの可能な値があります:無効、1.8v、2.7v、および4.3v。Arduinosは通常4.3vに設定されているという印象(上記)にありました。明らかにそうではありません(以下のコメントを参照)。どこかで電圧低下が検出されたことを思い出しました。これは、Arduinoがリセットされた場合、特にバッテリーに大きな負荷をかけている場合(モーター、複数のLEDなど)に注意する必要があります。