Accendere la arduino per posta :-)

Non riuscendo a configurare ne’ Zope ne’ Apache in modo da avviare un’applicazione quando richiedo una pagina web e far accendere un LED… >:( ho deciso di aggirare il problema: ho scritto una macro in Outlook che, attivata da una regola di posta, invia sulla seriale un comando che fa accendere un led sulla Arduino Uno! :slight_smile:

Il listato per Outlook:

Sub test(Item As Outlook.MailItem)
    Call NewOpen
    Sleep (2000)
    Call Accendi
    Sleep (2000)
Call NewClose
End Sub

Sub NewOpen()
    Set MSComm1 = CreateObject("MSCOMMLib.MSComm")
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.CommPort = 4
    MSComm1.InBufferCount = 0
    MSComm1.PortOpen = True
      If Err Then
         MsgBox "COM" & MSComm1.CommPort & ": not opened, Sorry!"
         Exit Sub
      End If
    'MsgBox ("vado?")
    ' Sleep (2000)
    'MSComm1.Output = "A"
    MSComm1.PortOpen = False
End Sub

Sub Accendi()
    MSComm1.Output = "A"
End Sub
Sub Spegni()
    MSComm1.Output = "b"
End Sub

Sub NewClose()
    MSComm1.PortOpen = False
    Set MSComm1 = Nothing
End Sub

Scrivendo in quel modo la macro Test, diventa “individuabile” da una regola di posta, nell’elenco degli script avviabili.

Perche’ il programma funzioni, è necessario che sul sistema (in genere in c:\windows\system32) ci sia il file MSCOMM32.OCX , e bisogna “legarlo” ad outlook aggiungendo manualmente il riferimento dalla finestra VisualBasic di Outlook (ALT+F11, menu strumenti–>riferimenti → Microsoft COMM Control).

Invece sull’arduino ho scritto questo:

void setup() {                
  Serial.begin(9600);
for (int i=5;i<=13;i++){
  pinMode(i, OUTPUT);     
}  

}

void loop() {
  if (Serial.available()) {
    char comando = Serial.read();
    Serial.flush();
    delay(1000);
    if (comando=='A') {
      for (int i=5;i<=13;i++){
        digitalWrite(i,HIGH);
      }
    } 
   if (comando=='0') {
      for (int i=5;i<=13;i++){
         digitalWrite(i,LOW);
      }
    }
  }
}

C’e’ pero’ un problema: funziona tutto… pero’ dopo che ho acceso i led, ogni volta che avvio la macro si rispengono da capo!!

Dove sbaglio?

ciao jumpjack

Accendere la arduino per posta :slight_smile:

Non capisco; scrivi una lettera e il postino accende la luce? permettimi questo scherzetto :wink:

Non hai aggiunto allo sketch come definisci la variabile “comando”.
L’ ultimo valore di una stringa é “zero” che sigifica che la stringa é terminata. Forse per questo Ti si spegne.
Nella Macro prevedi “b” per spegnere.
Prova con un carattere diverso da “0”.

Ciao Uwe

E' definita cosi':
char comando = Serial.read();

Cmq pare dipenda dall'autoreset:
http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

Trovata soluzione SW: basta aggiungere questa riga prima di MSComm1.PortOpen = True:

MSComm1.DTREnable = False