Der Code, den ich gerade ausführe, ist einfach
setup()
{
Serial.println("SET CONTROL CONFIG 103d");
}
loop()
{
Serial.println("SLEEP");
}
Ich habe aber auch den Befehl SLEEP im Setup ausprobiert und diesen Code in den ArduinoBT-Bootloader eingefügt. Ich habe den Arduino mehrere Stunden lang mit aktiviertem Ruhezustand belassen und es machte keinen Unterschied für den Verbrauch. Auch "SET CONTROL CONFIG 102d" ändert nichts. Vielleicht gebe ich die Befehle im Datenmodus aus? Ich verstehe, dass der Datenmodus ist, wenn eine Bluetooth-Verbindung besteht, und der Befehl, wenn keine Verbindung besteht, aber ich könnte mich irren.
Tut mir leid, dass ich so lange gebraucht habe, um meine Prüfungen und Ferien zu haben.
Mein Code hat sich schließlich so entwickelt:
int input = 0;
int resetPin = 7;
int ledPin = 13;
void setup()
{
pinMode(resetPin, OUTPUT);
Serial.begin(115200);
Serial.println("SET CONTROL ESCAPE 43 00 0");
Serial.println("SET CONTROL CONFIG 103D");
digitalWrite(ledPin, HIGH);
}
void loop()
{
if (!input)
{
delay(2000);
Serial.print("+++");
delay(2000);
Serial.println("TEST DEEPSLEEP");
delay(10000);
Serial.print("+++");
delay(2000);
input = 1;
digitalWrite(ledPin, LOW);
}
Was nicht funktioniert (YAY!)
Ich habe dann hier einen Code gefunden, der eine erfolgreiche iWRAP-Kommunikation hatte. Ich habe ihn so geändert, dass er den gewünschten iWRAP enthält. Ich habe mit "INFO" begonnen und herausgefunden, dass die Version von iWRAP (WRAP THOR AI 2.2.0 Build 60) das richtige Datenblatt erhalten hat Deepsleep war eine Funktion des Moduls und Sie konnten es mit dem Befehl "TEST DEEPSLEEP" testen. Ich habe diesen Befehl benutzt und das Board hat geschlafen! Ich denke ... der Strom lag bei ungefähr 36 mA, was höher ist als bei normaler, nicht verbundener Nutzung, aber das Board war nicht kommunizierbar. Der Test ergab ein OK, daher bin ich zuversichtlich, dass ich das Board jetzt schlafen lassen kann. Leider scheint die Ausgabe des Befehls "SLEEP" nichts zu bewirken, obwohl ich nicht weiß, ob meine anfänglichen Setup-Befehle noch ausgegeben werden.
Jedenfalls ist hier der (kaum) modifizierte Code, den ich jetzt verwende. Führen Sie es im Grunde aus, geben Sie "&" in den seriellen Monitor ein und es wechselt in den Befehlsmodus und gibt die Befehle aus, die Sie in den Code eingegeben haben. Geben Sie "@" ein und Sie erfahren die Antwort auf diese Befehle.
#include <EEPROM.h>
int ledPin = 13; // LED connected to digital pin 13
int resetPin = 7; // BT module uses pin 7 for reset
char inByte = 0; // incoming serial byte
int infoSize = 0 ;
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
pinMode(resetPin, OUTPUT);
Serial.begin(115200); // start serial at 115200 kbs
Serial.println("SET CONTROL ESCAPE 43 00 0");
Serial.println("SET CONTROL CONFIG 103D");
}
void loop()
{
// if we get a valid byte, read analog ins:
if (Serial.available() > 0) {
inByte = getbyte(); // get incoming byte
if (inByte == '&' ) { // look for a &
Serial.print("Got an & ");
infoSize = getInfo();
Serial.println("Done");
}
else if (inByte == '@' ) { // look for a 0
digitalWrite(ledPin, LOW); // set led LOW
Serial.print("Get string: ");
for(int i=0;i<infoSize;i++)
{
Serial.print(EEPROM.read(i));
}
Serial.println();
Serial.print("Cleared string size: ");
Serial.println(infoSize);
}
}
}
int getInfo()
{
int j=0;
digitalWrite(ledPin, HIGH); // set led HIGH
delay(2000);
Serial.print("+++");
delay(2000);
Serial.println("SLEEP"); //THIS IS WHERE YOU ENTER THE COMMANDS
//"INFO" and "TEST DEEPSLEEP" are both successful
//"SLEEP" isn't successful yet
for (int i=0; i <= 10; i++){
delay(1000);
while (Serial.available() > 0 && j <512) {
inByte = getbyte(); // get incoming byte
EEPROM.write(j, inByte);
j++;
}
delay(1000);
}
delay(2000);
Serial.print("+++");
delay(2000);
digitalWrite(ledPin, LOW); // set led low
return j;
}
char getbyte()
{
while (Serial.available() == 0) { //look for aviable data
// do nothing, wait for incoming data
}
return Serial.read(); //return data if aviable
}
Yay epische Bearbeitung! Vielen Dank für Ihre Hilfe, es war von unschätzbarem Wert für meine Reise :)