Arduino + envio de datos por serial con python y comandos shell linux

Hola a Todos!

Estoy realizando un proyecto en el cual tengo que tener comunicacion con Arduino de manera serial, he intentado con python, y con php. Pero me surge un detalle con ambos. Pues primero empezare con el codigo python:

import os
import serial
from time import sleep
leer = os.system("ls /dev | grep 'ttyACM' > /home/peter/Python/Lux")
arch = open("/home/peter/Python/Lux")
dato = arch.read(7)
Conexion = 0
if dato=='':
Conexion = 0
else:
print "Conexion con exito!"
Conexion = 1
Completo = "/dev/" + dato
#print Completo
if Conexion == 1:
serialport = serial.Serial(Completo, 9600)
serialport.setDTR(False) # Drop DTR
sleep(0.022) # Read somewhere that 22ms is what the UI does.
serialport.setDTR(True) # UP the DTR back
while 1:
serialport.write('H')
sleep(1)
serialport.write('L')
sleep(1)
else:
print "Ups! falta conectar el Arduino! Conectalo!"

Este codigo enlaza automaticamente con el puerto ttyACM0 en el cual esta conectado el arduino, en caso contrario manda un mensaje de que no se ha encontrado. En caso de que si este, envia ordenes por puerto serial para un ciclo de prendido y apagado de un led. Todo esta bien en ese codigo, pero al querer quitar la sentencia "while" para que solo prenda o apague el led en una ejecucion, nomas el arduino no hace nada, si parpadea pero no ejecuta la accion. Ahora el codigo del arduino:

const int ledPin = 12; // the pin that the LED is attached to
int lec; // a variable to read incoming serial data into
int Led = 0;
char let;

void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// see if there's incoming serial data:
lec = Serial.read();
if(lec > 0)
{
Serial.println(lec);
let = char(lec);
}
if(let == 'H')
digitalWrite(ledPin,HIGH);
if(let == 'L')
digitalWrite(ledPin,LOW);
}

Ahora, tambien lo he intentado con comando de Shell ejecutados desde PHP, pero iniciemos con el comando Shell como tal: $echo 'H' > /dev/ttyACM0 Una vez ejecutado en la consola, el led de Rx parpadea pero no hace nada. Aqui cabe destacar que solo funciona si abro la terminal serial de la IDE arduino... ¿Por que? y cuando cierro la terminal, aun que vuelva a teclear el comando nomas no funciona.

Ayuda!
 
Atrás
Arriba