Я пытаюсь сделать из устройства Adafruit 32u4 FONA простое устройство. Просто когда я нажимаю кнопку, система включается и набирает номер. Но по какой-то причине он отказывается включаться и делать то, что должен делать.
void PinMode_Setup() {
pinMode(13, OUTPUT);//This is the blinky light
pinMode(6, OUTPUT);//This is the MOSFET gate
digitalWrite(6, HIGH);//Immediately activate the MOSFET gate
}
#include "OneButton.h"#include "Adafruit_FONA.h"
#define FONA_RX 9
#define FONA_TX 8
#define FONA_RST 4
#define FONA_RI 7
#define Number "##########"
int count=0;//This will count how many times we blink before turning off
// Hardware serial is also possible!
HardwareSerial *fonaSerial = &Serial1;
// Use this for FONA 800 and 808s
Adafruit_FONA fona = Adafruit_FONA(FONA_RST);
uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout = 0);
uint8_t type;
void setup() {
digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW);
delay(1000); count++; if(count>2) {int count=0;} delay(2);
{
while (1);}
type = fona.type();
switch (type) {
case FONA800L:
break;
case FONA800H:
break;
case FONA808_V1:
break;
case FONA808_V2:
break;
case FONA3G_A:
break;
case FONA3G_E:
break;
default:
break;
}
pinMode(FONA_RI, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
while (1) {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(100);
uint8_t n = fona.getNetworkStatus();
if (n == 0) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>1) {int count=0;} delay(2); //Not registered
if (n == 1) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>2) {int count=0;} delay(2); //Registered (Online)
if (n == 2) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>3) {int count=0;} delay(2); //Not registered (searching)
if (n == 3) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>4) {int count=0;} delay(2); //Denied
if (n == 4) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>5) {int count=0;} delay(2); //Unknown
if (n == 5) digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); count++; if(count>6) {int count=0;} delay(2); //Registered roaming
if (n == 1) break;
}Serial.println("Ready to contact!");
fona.playToolkitTone(1, 100);
delay(500);
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
count++;
if(count>2)//After the third blink
{
Serial.print("Calling Phone");
fona.callPhone(Number);
}
}
Вот простая схема, которую я использую.
Кстати, у меня вся система работает от аккумулятора 3,7 В 1200 мАч.
Вот пример кода, который работает нормально. Система включается и мигает 5 раз, а затем выключается.
int count=0;//This will count how many times we blink before turning off
void setup() {
pinMode(13, OUTPUT);//This is the blinky light
pinMode(6, OUTPUT);//This is the MOSFET gate
digitalWrite(6, HIGH);//Immediately activate the MOSFET gate}
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
count++;
if(count>3)//After the fifth blink
{
digitalWrite(6, LOW);//Shut down the gate cutting off the power.
}
}
Есть несколько проблем, которые я вижу здесь.
1. Из схемы видно, что вы подключаете кнопку к контакту 12, но она не была использована в вашем коде.
2. Вам не нужен MOSFET для того, чтобы вытащить вывод ввода-вывода высоко.
3. Рельсы электропитания должны быть соединены параллельно, так как они не связаны вместе под капотом (буквально).
Не забудьте сообщить нам о вашем прогрессе устранения неполадок!
Других решений пока нет …