Python - ayudadme a resolverlo simulacion detector de movimiento

   
Vista:

ayudadme a resolverlo simulacion detector de movimiento

Publicado por javi (1 intervención) el 30/05/2017 12:30:35
Para realizar la simulación de un detector de movimiento vamos a considerar lo siguiente:

1.- El detector será la entrada de un "1" por teclado

2.- Raspberry solo encenderá el LED en modo de alarma, cuando por teclado se hayan metido tres "1" seguidos.

Ejemplo.-

El programa estará continuamente leyendo por teclado, si la combinación de teclas pulsadas es 1-1-1 se encenderá el LED

Para cualquier otra combinación el LED quedará apagado o se apagará.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo

ayudadme a resolverlo simulacion detector de movimiento

Publicado por Andres Leonardo (38 intervenciones) el 30/05/2017 16:43:54
Algo ais lo haria

Se que los maestros de Python lo haran en menos lineas pero eso mas o menos seria.
1
2
3
4
5
6
7
8
9
10
11
12
i=int(0)
L=[0,0,0]
while (int(i)<=2 and int(i)>=0):
    i=int(input("IngreseMovimiento "))
    L[0]=L[1]
    L[1]=L[2]
    L[2]=i
    print(L)
    if (L[0]==1 and L[1]==1 and L[2]==1):
        print("LED PRENDIDO")
    else:
        print("led apagado")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip

ayudadme a resolverlo simulacion detector de movimiento

Publicado por kip (160 intervenciones) el 30/05/2017 21:25:48
Hola, un consejo, no debes usar varias veces int() ya que una vez que la variable es almacenada a partir del retorno de int() ya sera un entero, ademas cuando declaras una variable y le colocas un entero no es necesario que a este numero le coloques int(), es muy redudante e innecesario ya que Python lo interpretara como tal.

Por ejemplo:

Una variable declarada como entero
1
2
i = 0
print type(i) #Mostara <type 'int'>

Una variable declarada como string y luego convertida a entero
1
2
3
4
i = '0'
print type(i) #Mostara <type 'str'>
i = int(i)
print type(i) #Mostara <type 'int'>

Ten en cuenta aquello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andres Leonardo

ayudadme a resolverlo simulacion detector de movimiento

Publicado por Andres Leonardo (38 intervenciones) el 01/06/2017 16:38:48
Gracias Kip
Cabe indicar que recien estoy aprendiendo python. y hay cosas que estoy <aprendiendo en este lenguaje que es de lo mejor ....
gracias por el consejo.
SAludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

ayudadme a resolverlo simulacion detector de movimiento

Publicado por kip (160 intervenciones) el 30/05/2017 21:42:39
Hola, el codigo que te colocaron mas arriba es muy bueno y válido, pero no se si resuelva del todo tu problema como deberia.

Comentas que solo la combinacion de 1 tres veces seguidas encedera el LED, no ?
Creo entonces que una vez introducida esa combinacion y el LED se encienda, si se ingresa otro 1, la combinacion ya no seria '1-1-1' no ? es decir deberia apagarse o estoy equivocado ?

Segun lo veo yo, deberia apagarse, aqui te dejo un codigo sencillo que quizas te sirva:

1
2
3
4
5
6
7
8
9
sec = 0
while True:
    mov = int(input('Movimiento: '))
    if mov == 1:
        sec = sec + mov if sec < 3 else mov
    else:
        sec = 0
    led = 'ON' if sec == 3 else 'OFF'
    print('LED %s' % led)

Nos cuentas si te sirvieron los codigos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

ayudadme a resolverlo simulacion detector de movimiento

Publicado por kip (160 intervenciones) el 30/05/2017 22:18:44
Si una vez ingresada aquella combinacion '1-1-1' y el LED ya encedido no deba apagarse si se continua ingresando el '1' esto puede servirte tambien:

1
2
3
4
5
6
sec = 0
while True:
    mov = int(input('Movimiento: '))
    sec = sec + mov if mov == 1 else 0
    led = 'ON' if sec >= 3 else 'OFF'
    print('LED %s' % led)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar