xapu escribió:bueno.. voy a liberar este proyecto sin haberlo acabado.. ya que con el bachiller y entrenar no tengo tiempo para hacer todo lo que me gustaria..
me da mucha pena no acabarlo, no lo dejo abandonado del todo y realmente espero que alguien le interese el tema y lo mejore.. se que la manera de la que e establecido la comunicacion entre au3 y arduino podria mejorarse XD.
en navidades me pondre ha hacer un invernadero controlado por autoit via tcp y email si tengo tiempo, pero are funciones especificas para cada cosa..
bueno mucha suerte con esto!
http://filebeam.com/3faedca3250dac1b190feb4f5c9e030d 
Ya le eche un vistazo y está bastante bien, usa el fichero commg.dll que hay que retocar la ruta en los ejemplos, y luego unas funciones de lectura y escritura de datos externos (hasta de temperatura, me imagino que dependiendo de la temperatura, se pone a funcionar o el riego, o se abre alguna compuerta).
Tienes un form sencillo de ejemplo para según en que boton hagas el click, se escriban datos hacia el exterior (un dispositivo, electrónico),
analogwrite($pin,$datos) 
analogeread($pin)
digitalwrite($pin,$datos)
digitalread($pin)
No tengo la placa para probarlo, pero tiene buena pinta, si tienes más ejemplos comentalo. ¿Para que usas los archivos *.pde?
Salu22:)
Código de la librería principal tomada del archivo.rar de Xapu:
Código: Seleccionar todo
#include <CommMG.au3>
_CommSetDllPath("C:\rutadll\commg.dll")
Func conecta($port,$baud)
	If $baud = "" Then $baud = 9600
	Local $sportSetError
	ConsoleWrite(_CommListPorts(0))
	_CommSetPort($port, $sportSetError, 9600, 8, "none",2,1)
	if $sportSetError = '' Then
		Return 1
		ConsoleWrite("using " & _CommGetVersion(1)))
	Else
		ConsoleWrite("error")
		return $sportSetError
	EndIf
 EndFunc
;=====================================================================================
;
; Function Name:  analogwrite($pin,$stat)
; Description:    le da un valor analogico $stat al pin $pin
; Parameters:     $pin : el pin al que se envia el valor
;                 $stat : el valor analogico a enviar al pin
;                                  
; Returns:  on success-  1
;           on failure - @error llamando a la Dll del commMG.au3
;======================================================================================
Func analogwrite($pin,$stat)
	dim $valorx, $valores
	If $pin > 13 Then SetError(1,"pin no existe",-1)
	If $stat < 0 Or $stat > 255 Then SetError(2,"valor mallor que 255 o menor que 0",-2)
	If $pin > 9 Then
		$pin = cambia($pin)
	EndIf
	_CommSendstring("b"&$pin&$stat)
	Return 1
EndFunc
;=====================================================================================
;
; Function Name:  analogread($pin)
; Description:    lee el valor analogico del pin $pin
; Parameters:     $pin : pin del arduino del que se va a leer el valor
; 
; Returns:  
;           on success-  el valor
;           on failure - @error llamando a la dll del commMG.au3
;======================================================================================
Func analogread($pin)
	If $pin > 13 Then SetError(1,"pin no existe",-1)
	If $pin > 9 Then
		$pin = cambia($pin)
	EndIf		
	_CommSendstring("a"&$pin)
	Sleep(100)
	$valu=_CommGetstring()				
	Return $valu	
EndFunc
;=====================================================================================
;
; Function Name:  digitalread($pin,$stat)
; Description:    lee el valor analogico de un pin del arduino 
; Parameters:     $pin: el pin a leer
;               
; Returns:  
;           on success-  el valor analogico del pin 1 o 0
;           on failure - @error set to -2 si el valor de stat no es low o high
;			on failure - @error llamando a la dll del commMG.au3
;======================================================================================
Func digitalread($pin)
	If $pin > 13 Then SetError(1,"pin no existe",-1)
	If $pin > 9 Then
		$pin = cambia($pin)
	EndIf
	_CommSendstring('c'&$pin)
	sleep(125)
	Return _CommGetstring()				
EndFunc
;=====================================================================================
;
; Function Name:  digitalwrite($pin,$stat)
; Description:    activa o desactiva un pin de arduino
; Parameters:     $pin: suma de dos numeros menores que 9 que sumen el numero de tu Ping
; 				  ejemplo: mi pin es el 12 pues $pin sera = a 6+6 o 7+5
;                 $stat- 0:desactiva 1:activa
; Returns:  always 1
;           on success-  1
;           on failure - @error set to -2 si el valor de stat no es low o high
;			on failure - @error llamando a la dll del commMG.au3
;======================================================================================
Func digitalwrite($pin,$stat)
	dim $valorx, $valores
	If $pin > 13 Then SetError(1,"pin no existe",-1)
	If $stat <> 1 Or $stat <> 0 Then SetError(2,"digital write no es HIGH o LOW",-2)
		If $pin > 9 Then
			$pin = cambia($pin)
		EndIf
		$stat = 'd'&$pin&$stat
	_CommSendstring($stat)
	Return 1
EndFunc
;funcion para enviar el numero de pin en un solo bit
Func cambia($let)
	Switch($let)
		Case 10
			Return "a"
		Case 11
			Return "b"
		Case 12
			Return "c"
		Case 13
			Return "d"
	EndSwitch
EndFunc
FORM
Código: Seleccionar todo
#include <arduinx.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("TEST", 169, 83, 184, 125)
$Group1 = GUICtrlCreateGroup("Temperatura", 8, 8, 153, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("24", 24, 24, 124, 38)
GUICtrlSetFont(-1, 24, 800, 0, "Neuropol")
GUISetState(@SW_SHOW)
conecta(3,9600)
Sleep(1000)
Código: Seleccionar todo
While 1
		$temp = analogRead(3)
		If $temp <> '' And $temp > 10 then
			$temp = ((5*$temp)*100)/1024
			GUICtrlSetData($label1,$temp)
		EndIf
WEnd
Enciende el interruptor o salida 2: 			digitalwrite(2,"1")
Apaga el interruptor o salida 2:  			digitalwrite(2,"0")