Al contratio di Arduino Uno sulla Electron ci sono molteplici pin che possono essere settati per ricevere un interrupt. In questo caso e' stato scelto il D2
Per atttivare l'interrupt viene mandata una corrente di 3.3V sul Pin D2 e viene settata una variabile volatile in modo che possa essere intercettata anche fuori dall'interrupt nella funzione loop. La gestione di invio inoltre non puo' essere gestita all'interno della funzione di interrupt
per la compilazione
particle compile electron interrupt.ino --saveTo interrupt.bin
particle flash --usb interrupt.bin
Nel video si osserva la procedura
----------------------------------------------------------------
#include "application.h"
#include "cellular_hal.h"
STARTUP(cellular_credentials_set("TM", "", "", NULL));
const char* phNum = "+3934710xxxxx";
const char* msg = "Interrupt fired";
int ret;
volatile bool invio;
void IN4_ISR() {
invio = true;
}
void setup()
{
invio = false;
pinMode(D7, OUTPUT);
pinMode(D2, INPUT_PULLDOWN); // sets pin as input
attachInterrupt(D2, IN4_ISR, FALLING); //RISING, FALLING, CHANGE
}
void loop()
{
if (invio)
{
digitalWrite(D7, HIGH);
ret = Cellular.command("AT+CMGF=1\r\n");
ret = Cellular.command("AT+CMGS=\"%s%s\",129\r\n",(phNum[0] != '+') ? "+" : "", phNum); //
ret = Cellular.command("%s\x1a", msg);
invio = false;
delay(500);
digitalWrite(D7, LOW);
}
}
Nessun commento:
Posta un commento