ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

duda gpio python nºpuertos y random

Thu Jan 14, 2016 6:24 pm

pues tengo la rpi primera modelo B

de todos los pines gpio se que estan el de negativos, los de 3 y 5 Volt. y GPIO 17 25... que son los que uso para encender leds, pero en los que son dnc sp10 y demas tambien se pueden poner cables para endender leds? si es así como se pondría en python? xk si quiero encender pongamos tantos leds o mas que pines tiene gpio... como se hace?

lo segundo es que en python como puedo poner, si tengo 6 leds, que cada X sec se encienda uno aleatorio (apagandose el que estaba antes)

mi idea es hacer un lanzador de leds de ruleta, para el twister, de forma que nadie le de a la ruleta sino que se encienda un led en donde sea

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Thu Jan 14, 2016 7:10 pm

Aquí te explica todos los GPIO http://es.pinout.xyz

Para encender LEDs puedes usar los BCM que no tienen nada puesto entre paréntesis.

Hay formas de encender dos LEDs (no simultáneamente) con un mismo GPIO: viewtopic.php?t=71650&p=517462

También se pueden encender muchos LEDs http://www.instructables.com/id/Charlie ... /?ALLSTEPS

Tu duda de Python tienes mil ejemplos en Google de como hacerlo. No sé, si quieres a mí me da igual hacerlo pero me parece mejor que lo intentes y si no te sale pongas el código aquí e intentamos corregirlo.

Con la nueva librería GPIO Zero debe ser muy sencillo encender LEDs, pero no la he usado. Con el método típico tendrías que usar la función random, gpio high para que encienda, time sleep para que esté ese tiempo encendido, gpio low para apagarlo y repetimos todo en bucle.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Thu Jan 14, 2016 7:28 pm

pues soy un manco buscando por que lo de random no lo encuentro (y si que me gustaria hacerlo ami pero con saber como hacer que por ejemplo salga un numero aleatorio del 1 al 10 tengo xk luego busco que si sale 1 encienda x led o lo k sea Xd)

muy util lo de gpio thz

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Thu Jan 14, 2016 8:31 pm

Para random tienes que importarla con:

import random.

Luego puedes crear una lista con los GPIO que vas a usar, por ejemplo para cuatro LEDs.

pines = [5,17,22,23]

Para que elija uno al azar tienes que usar:

random.choice(pines)

Creo que con eso tienes para hacer el código fijándote como se enciende un LED, de lo que si hay muchos ejemplos.

Si tienes más dudas pregunta.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Fri Jan 15, 2016 1:19 pm

tengo así el codigo:

Code: Select all

import RPi.GPIO as GPIO
import time
import random

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
pines = [17,22,25]

try:
 while True:
  random.choice(pines)

   if pines == 22:
    GPIO.output(22, GPIO.HIGH)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    time.sleep(1)

   if pines == 17:
    GPIO.output(22, GPIO.LOW)
    GPIO.output(17, GPIO.HIGH)
    GPIO.output(25, GPIO.LOW)
    time.sleep(1)

   if pines == 25:
    GPIO.output(22, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(25, GPIO.HIGH)
    time.sleep(1)



except KeyboardInterrupt:
    GPIO.cleanup()  #devuelve los pines a su estado inicial
pero me sale error en

Code: Select all

pi@pi ~ $ sudo python aleatorio.py
  File "aleatorio.py", line 16
    if pines == 22:
    ^
IndentationError: unexpected indent

raspdroid
Posts: 1606
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: duda gpio python nºpuertos y random

Fri Jan 15, 2016 3:49 pm

Fíjate que pines es una array, yo de python ni idea, pero prueba así:

Code: Select all

if 22 in pines:
    bla bla bla

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Fri Jan 15, 2016 5:03 pm

Buenas,

Me alegra que le hayas dado caña al código. Ojo, que yo también soy novato en Python (y en todo esto) así que no puedo dar lecciones, lo comento porque creo que es la mejor forma de aprender.

Por partes, el error que te da es de indentación. Busca por ejemplo "indentación Python" y verás lo importante que es.

Como bien comenta raspdroid, no estás usando "pines" de manera correcta. Se trata de una lista, con random.choice eliges un elemento de esa lista, pero "pines" siempre será "pines" por lo que no se van a cumplir tus if. Deberías crear una variable en la que se almacene el resultado de random.choice y luego ya si if variable ==...

Con eso y la indentación corregida pruebas y nos comentas.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 12:05 pm

como creo la variable para que almacene el resultado...
entiendo lo que dices pero no como hacerlo, es decir esta dando numeros aleatorios de la lista, luego tiene k poner en el codigo algo para que almacene el resultado, algo como que si da 22 la variable A sea igual a 22 y luego poner si A == 22: (codigo para que aga algo) no?

SOLUCION:

Code: Select all

import RPi.GPIO as GPIO
import time
import random

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
pines = [17, 22, 25]

try:
 while True:
   pin = random.choice(pines)

   if pin == 22:
    GPIO.output(22, GPIO.HIGH)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    time.sleep(1)

   if pin == 17:
    GPIO.output(22, GPIO.LOW)
    GPIO.output(17, GPIO.HIGH)
    GPIO.output(25, GPIO.LOW)
    time.sleep(1)

   if pin == 25:
    GPIO.output(22, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(25, GPIO.HIGH)
    time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()  #devuelve los pines a su estad$
ya me fufa ^^ thz
Last edited by ebsigma on Sat Jan 16, 2016 12:47 pm, edited 1 time in total.

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 12:35 pm

Buenas,

Dentro del while:

n = random.choice(pines)

if n == ...

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 1:31 pm

sip así lo solucione, el problema era un espacio mal puesto :oops:

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 4:06 pm

Me alegra que te funcione. Igual deberías añadir [Solucionado] en el título, por si le sirve a alguien.

Un saludo.
https://github.com/ikergarcia

raspdroid
Posts: 1606
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 6:09 pm

Sí yo estaba equivocado no me había fijado en el método choice que ya devuelve un pin disculpa.

Saludos

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 10:01 pm

buenas sigo con otra pregunta...

tengo usados todos los pines 14, 15, 18, 23, 24, 25, 8, 7, 11, 9, 10, 22, 27, 17, 4, 3 (uso rpi modelo B v1)
pues el 3 esta siempre el led medio encendido... cual es su funcionamiento? porque no se comporta como los demas...

Code: Select all

try:
 while True:

        GPIO.output(3, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(3, GPIO.LOW)
        time.sleep(1)
si lo dejo asi el led no hace nada... se queda medio encendido

raspdroid
Posts: 1606
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: duda gpio python nºpuertos y random

Sat Jan 16, 2016 11:29 pm

Es el cable de datos para I2c pero también es un gpio así que no debería de ser diferente, eso creo desde mi ignorancia no sé a lo mejor tiene algo que ver.

Pero prueba una cosa, si estás alimentando los leds con la pi que creo que sí, elimina un par de leds y mira si el led que está conectado al pin 3 brilla más.

A saber como son, sin por ejemplo son pth de 3mm que pueden consumir una corriente de entre 15-20mA y dices que estás utilizando 16 y el máximo para todo el gpio header de la raspberry pi son 50mA pues supongo que será por eso.

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 9:21 am

lo que tengo son 16 led en 16 puertos, de distintos colores, todos van bien menos ese... probaré a cambiarlo y tal a ver k tal... hay momentos que tengo que se encienden todos y hacen cosas pero el nº3 siempre esta igual iluminado... ni se apaga ni enciende mas Xd

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 10:10 am

¿De qué voltaje son los LED?

Por ejemplo, un LED rojo de 3 mm y 1.6 V, con una resistencia de 330 Ohm equivale a 5 mA si tienes 16 así te estás plantando en 82 mA, cuando como te dice el compañero raspdroid el límite de la Raspberry Pi es de 50 mA.

Haz los números tú con las resistencias que estés colocando y las especificaciones del LED, pero lo más probable es que te estés pasando.

Eso es lo primero que tienes que revisar si no quieres causar daño, aunque no sea instantáneo, a tu Raspberry Pi.

Por otro lado, vuelvo a hacer referencia al pinout creado por Phil Howard que puse en mi ¿primera? intervención en este tema. El BCM3 incluye una resistencia de 1.8 kOhm por lo que no es útil como salida si no se requiere esa resistencia. Imagino que luce poco porque la resistencia incluída, más la que hayas añadido tú, lo limitan.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 11:03 am

ok tncs el pin 2 tampoco se puede usar? es que tengo que usar 16 luces y como mis conocimientos en programacion y hardware son bastante escasos... lo que hice es una ruleta de leds para el twister para no tener que estar dandole con la mano...

Code: Select all

import RPi.GPIO as GPIO
import time
import random

GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(9, GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
pines = [14, 15, 18, 23, 24, 25, 8, 7, 11, 9, 10, 22, 21, 17, 4, 3]
try:
 while True:
   pin = random.choice(pines)

   GPIO.output(14, GPIO.HIGH)
   time.sleep(0.1)
   GPIO.output(15, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(18, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(23, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(24, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(25, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(8, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(7, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(11, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(9, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(10, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(22, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(21, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(17, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(4, GPIO. HIGH)
   time.sleep(0.1)
   GPIO.output(3, GPIO. HIGH)
   time.sleep(0.1)

   GPIO.output(14, GPIO.LOW)
   time.sleep(0.1)
   GPIO.output(15, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(18, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(23, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(24, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(25, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(8, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(7, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(11, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(9, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(10, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(22, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(21, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(17, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(4, GPIO. LOW)
   time.sleep(0.1)
   GPIO.output(3, GPIO. LOW)
   time.sleep(0.1)

   for i in range(0,8):
    GPIO.output(14, GPIO.HIGH)
    GPIO.output(15, GPIO. HIGH)
    GPIO.output(18, GPIO. HIGH)
    GPIO.output(23, GPIO. HIGH)
    GPIO.output(24, GPIO. HIGH)
    GPIO.output(25, GPIO. HIGH)
    GPIO.output(8, GPIO. HIGH)
    GPIO.output(7, GPIO. HIGH)
    GPIO.output(11, GPIO. HIGH)
    GPIO.output(9, GPIO. HIGH)
    GPIO.output(10, GPIO. HIGH)
    GPIO.output(22, GPIO. HIGH)
    GPIO.output(21, GPIO. HIGH)
    GPIO.output(17, GPIO. HIGH)
    GPIO.output(4, GPIO. HIGH)
    GPIO.output(3, GPIO. HIGH)
    time.sleep(0.3)
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO.LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(0.3)


   if pin == 14:
    GPIO.output(14, GPIO.HIGH)
    GPIO.output(15, GPIO.LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)


   if pin == 15:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. HIGH)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)

   if pin == 18:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.HIGH)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 23:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.HIGH)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 24:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.HIGH)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 25:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.HIGH)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 8:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.HIGH)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 7:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.HIGH)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 11:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.HIGH)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 9:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.HIGH)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 10:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.HIGH)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 22:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.HIGH)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 21:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.HIGH)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 17:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.HIGH)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 4:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.HIGH)
    GPIO.output(3, GPIO.LOW)
    time.sleep(5)
   if pin == 3:
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO. LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)
    GPIO.output(25, GPIO.LOW)
    GPIO.output(8, GPIO.LOW)
    GPIO.output(7, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(21, GPIO.LOW)
    GPIO.output(17, GPIO.LOW)
    GPIO.output(4, GPIO.LOW)
    GPIO.output(3, GPIO.HIGH)
    time.sleep(5)

except KeyboardInterrupt:
    GPIO.cleanup()  #devuelve los pines a su estad$


hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 11:32 am

¿Parpadea o luce débil?

Si parpadea sí puede ser un problema de configuración del pin, al ser I2C. A mi me pasó con un pin que había pasado a input para un sensor de temperatura y, tiempo después, en un HAT que el LED tenía que estar fijo parpadeaba. Sin embargo, creo que por defecto I2C viene desactivado así que apostaría por la otra opción, la de la resistencia.

Con las cuentas que te he puesto antes: (Vfuente-VLED) = I*R, sabiendo que los pines son 3.3V y suponiendo que el LED son 1.8V, sabiendo que la resistencia son 1.8KOhm, nos daría una intensidad de 0.8 mA. Este valor es muy inferior al que te ha comentado raspdroid de lo que necesita habitualmente un LED. Mira las especificaciones de los tuyos a ver cual es la intensidad mínima si es que luce débil, haz las cuentas y seguramente sea esto.

En cuanto a tu pregunta, si miras el pinout (míralo en inglés, que hay más explicaciones) el 2 cuenta con la misma resistencia.

Por otro lado, vuelvo a insistir en que más allá de que no luzcan esos dos me preocuparía estar drenando la Raspberry Pi. A menos que las resistencias que tengas en cada LED sean de un valor suficiente como para que no llegues a los 50 mA totales, aunque en este caso te estarían luciendo débilmente todos...

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 11:46 am

el led en cuestion es uno ultravioleta, el resto de leds y ese no se las caracteristicas ya que son de aliexpress y poco decian..., les puse una resistencia de 220 pero los ultravioleta apenas se encendian por lo que los tengo a pelo... en cuanto al 3 que es el ultravioleta (iva a poner un led azul pero no tengia :P) se enciende siempre con una luminosidad baja pero si le mando a apagarse no se apaga... siempre esta encendido...

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 12:40 pm

Deberías intentar pedir la hoja de datos a ver si te la puede pasar y, cuando compres LEDs, necesitas saber por lo menos la caída de tensión.También estaría bien la intensidad mínima para que no te pases de seguro con la resistencia y no luzca. Cada color, tamaño, etc. tienen unas características distintas y usar la misma resistencia puede dar los problemas que he dicho antes.

Respecto a tu problema, me acabo de dar cuenta de dos cosas:

1) Como no enciendes varios LEDs a la vez nunca vas a llegar a esos 50 mA. Ahora, creo que estábien que lo tengas en cuenta para un futuro.

2) La resistencia del pin en cuestión es de tipo pull-up. Cuando el pin, actuando como input, no tiene nada conectado siempre va a dar un valor HIGH. Por es luce siempre.

Solución: esto no lo tengo claro así que a tu cuenta y riesgo. Ejecuta sudo raspi-config, elige la opción "Advanced options" y en la opción I2C dale para pasar a disable. Si ya está desactivada y sólo te deja enable pues no lo sé... he estado mirando como poder utilizarlos pero ni idea.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 1:30 pm

en este proyecto se encienden todas a la vez pero poco rato... no entiendo como puede afectar que esten todas a la vez puestas pero bueno :P

en cuanto al puerto en cuestion ya lo tenia apagado, lo he activado y vuelto a apagar y nada... seguire cacharreando

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 2:05 pm

Lo de I2C es lo que esperaba, a ver si alguien sabe cómo poder utilizar ese pin.

No entiendo que es lo que no entiendes, valga la redundancia :lol: Los GPIO de la Raspberry Pi están limitados a un máximo total de 50 mA (realmente creo que 51 mA) y un máximo por GPIO de 16 mA. Suponiendo que la caída de tensión de tus LEDs sea 1.8V en todos, con las resistencias de 220 Ohm y teniendo 16 LEDs estás utilizando 110 mA. El doble, con unas cuentas a ojo pero más que 51 mA de cualquier manera. Esto puede causar un daño irreversible a tu Raspberry Pi.

Un saludo.
https://github.com/ikergarcia

ebsigma
Posts: 79
Joined: Sat Aug 11, 2012 10:33 am

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 2:49 pm

si eso lo entiendo, lo k no pillo, es que si tengo todos los pines usandolos, como fuede afectar al rpi, si no llega potencia a los leds vale pero como afecta a la placa...

hoopdreams
Posts: 313
Joined: Mon Mar 23, 2015 7:51 pm

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 3:29 pm

Si no me equivoco, en el peor de los casos quemarías la Raspberry.

Un saludo.
https://github.com/ikergarcia

raspdroid
Posts: 1606
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: duda gpio python nºpuertos y random

Sun Jan 17, 2016 4:17 pm

Yo estaba confundido, no es el pin 3, es el gpio 3, el pin es el 5, está usando GPIO.BCM no me había fijado en eso. Ese es el reloj del I2C.

Pero bueno al fin y al cabo ambos el 3 y el 5 están pullep-up con resistencias de 1.8K para el cable de datos del I2c y el otro para el cable del reloj. Como dice en este artículo viewtopic.php?p=793430#p793430

Prueba a hacer lo que dice hoopdreams porque el fabricante dice que además de ser el reloj del i2c actúa como gpio.

Return to “Español”