PDF de programación - Programando en Python Raspberry Pi

Imágen de pdf Programando en Python Raspberry Pi

Programando en Python Raspberry Pigráfica de visualizaciones

Publicado el 25 de Abril del 2019
3.380 visualizaciones desde el 25 de Abril del 2019
458,2 KB
48 paginas
Creado hace 9a (06/06/2014)
2014/06/06
Juan V. Capella

Contenido

● Objetivo



Introducción
● Operadores
● Tipos de datos
● Funciones
● Excepciones
● Módulos
● E/S y ficheros
● GPIO
● Networking
● GUI

armpower.blogs.upv.es

2

Objetivo



Introducirse en la programación en python con la Raspberry Pi

armpower.blogs.upv.es

3

Introducción

● Creado a finales de los 80 por Guido van Rossum
● El nombre viene de los humoristas británicos Monty Python
● Lenguaje interpretado (script)
● Prototipado y desarrollo rápido de aplicaciones
● Paradigma multiprogramación (orientada a objetos, programación

imperativa y programación funcional)

● Tipado dinámico: la misma variable puede contener valores de

diferentes tipos.
● No es necesario declarar el tipo de dato que va a contener una variable
– éste se determina en tiempo de ejecución según el valor asignado

● Fuertemente tipado

● No se permite tratar a una variable como si fuera de un tipo distinto al que tiene

– Hay que convertir de forma explícita el tipo de la variable

armpower.blogs.upv.es

4

Introducción

● Libre
● Muy alto nivel
● Python standard library (Librería muy completa)



https://docs.python.org/2/library/

● Referencia sobre todas las funciones de librería podemos encontrarlas en la documentación

oficial, disponible en la web..

– Cadenas, listas, tablas hash, pilas, colas
– Cálculo científico
– Serialización, y Persistencia de Objetos
– Programación Concurrente
– Acceso a BD, Ficheros Comprimidos...
– Networking

● CGIs, URLs, HTTP, FTP,
● pop3, IMAP, telnet
● Cookies, Mime, XML, XDR

– Diversos formatos multimedia
– Criptografía

armpower.blogs.upv.es

5

Introducción

● Lenguaje de propósito general
● Sencillo, compacto
● Sintaxis clara



Identación obligatoria:
def factorial(x):

if x == 0:

return 1

else:

return x * factorial (x - 1)

● Un bloque es un conjunto de instrucciones que se ejecutan secuencialmente
● Python utiliza el indentado para reconocer las líneas que forman un bloque de

instrucciones

● http://www.python.org/about/success/

armpower.blogs.upv.es

6

Introducción

● Hola mundo en Python

print ”¡Hola Mundo!” #esto es un comentario

● Hola mundo en C

#include <stdio.h>
int main (void) {
printf(”¡Hola Mundo!”);
return 0;
}

● Hola mundo en Java

public class HolaMundo {
public static void main(String [] args) {
System.out.println(”¡Hola Mundo!”);
}
}



armpower.blogs.upv.es

7

Ejecutando nuestros programas

● python fichero.py

● #!/usr/bin/env python
● chmod +x fichero.py





./fichero.py

IDLE

armpower.blogs.upv.es

8

Funciones built-in

armpower.blogs.upv.es

9

Operadores

● ==
● !=
● >
● <
● <=
● >=
● not
● and
● or

armpower.blogs.upv.es

10

Tipos de datos

● Numéricos: integers, floats, longs, complex …









a = 3 b = 4 a/b int(0.75) pi = 3.14 round(2.8) b = 3L c = 2+1j
a,b = 6,4
a = 3
a + z → Error

a = b = 7

● Cadenas: string stuffing → \











cad = “Hola” ca = 'Hola' ”””

print cad

print “Saludo” + cad

print “Saludo”, cad

print “Saludo %s” %cad

● Print “Saludo %s y %s” % (cad, ca)





cad[0]

upper() lower() strip()

● Subcadenas: “o” in cad

“Hola amigos”.find(“la”) len(“Adios”)



armpower.blogs.upv.es

11

Tipos de datos

● Vectores: listas, tuplas

● Puede haber listas de cualquier tipo de elementos (incluso de diferentes tipos),

un elemento de una lista es mutable (se puede modificar)

lista_tiendas=["depor","infor","vest","rest"]
for tienda in lista_tiendas: print tienda

● Acceso a listas:

lista=[3,5+1j,"hola"] lista[0]
len(lista) lista.append(8) lista.insert(7,1) lista.remove(3) del lista[3]
3 in lista 5 not in lista lista.index(3)

● Elevamos al cuadrado todos los números de una lista

a = [1, 5, 3, 7, 6, 3, 2, 4]
[x ** 2 for x in a]
→ [1, 25, 9, 49, 36, 9, 4, 16]

● Y ahora sólo aquellos que son pares

a = [1, 5, 3, 7, 6, 3, 2, 4]
[x ** 2 for x in a if x % 2 == 0]
→ [36, 4, 16] Tachán!!

armpower.blogs.upv.es

12

Tipos de datos

● Vectores: listas, tuplas

● Puede haber listas de cualquier tipo de elementos (incluso de diferentes tipos),

un elemento de una lista es mutable (se puede modificar)

lista_tiendas=["depor","infor","vest","rest"]
for tienda in lista_tiendas: print tienda

● Acceso a listas:

lista=[3,5+1j,"hola"] lista[0]
len(lista) lista.append(8) lista.insert(7,1) lista.remove(3) del lista[3]
3 in lista 5 not in lista lista.index(3)
● Otros: diccionarios (hashes), objetos ..

● Hash, conjunto de pares ordenados {clave:valor}
dic_ej = {'Nombre': 'Jose', 'Eslora': 20, 'Manga': 6};
dict_ej['Eslora'] = 8
print "Eslora: ", dict_ej['Eslora']

armpower.blogs.upv.es

13

Estructuras de control

● Cuando necesitamos modificar el flujo de ejecución del

programa:
● if
● for
● while

armpower.blogs.upv.es

14

if

if 4 < 0:
print “negativo!”
elif 4 == 0:
print “nada!”
else:

print “positivo!”

armpower.blogs.upv.es

15

for



Itera sobre los elementos de una secuencia:
for i in [1, 2, 3]:
print i


● Generando listas:







range(7) → [0,1,2,3,4,5,6]
range(4,7) → [4,5,6]
range(ini, n, step) range(1,11,2) → [1,3,5,7,9]

for i in range(3)

● No se usan condiciones de inicio, parada e incremento, sino

que se especifica claramente qué elementos se utilizan

– Más expresivo

numeros = [2, 4, 5]
for i in range(len(numeros)):

print i

armpower.blogs.upv.es

16

while

while x < 10:
x = x + 1
print x

● continue / break

armpower.blogs.upv.es

17

Funciones

● Se definen con: 'def'

def saludo():

print ”Hola!”

● Parámetros:

def saludo1 (nombre):

print ”Muy buenas D. %s!” % (nombre)

def saludo2 (nombre=”Pepito”):

print ”Muy buenas D. %s!” % (nombre)

● Para devolver valores utilizaremos 'return'

def suma(a,b):
return a+b

armpower.blogs.upv.es

18

Excepciones

● Una excepción se lanza cuando ha ocurrido algún error que Phyton

no ”sabe” como manejar, y termina el programa

● Podemos capturarlas:



try:

division(10,0)

except ZeroDivisionError:

print ”No se puede

except:

print ”Error inesperado”

finally:

print division(10,1)

armpower.blogs.upv.es

19

Módulos y paquetes

● Módulo: Conjunto de funciones, clases y variables guardadas en un fi

chero .py

● Paquete: Colección de módulos situados en un mismo directorio.

● Formas de usarlos:
import pygame



pygame.draw.rect(playSurface,whiteColour,Rect(position[0], position[1], 20, 20))





from socket import *

clientSocket = socket(AF_INET, SOCK_STREAM)

import Tkinter as tk

tk.mainloop

armpower.blogs.upv.es

20

Listas

● Listas

● elevamos al cuadrado todos los números
>>> a = [1, 5, 3, 7, 6, 3, 2, 4]
>>> [x ** 2 for x in a]
[1, 25, 9, 49, 36, 9, 4, 16]
● Y ahora sólo aquellos que son pares

>>> a = [1, 5, 3, 7, 6, 3, 2, 4]
>>> [x ** 2 for x in a if x % 2 == 0]
[36, 4, 16]
Tachán!!





armpower.blogs.upv.es

21

Acceso a bajo nivel: GPIO

● Biblioteca con básicamente funciones para la GPIO

● Viene ya instalada con python en raspbian
● Ejemplo:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.IN)
GPIO.output(11, False)
input_value = GPIO.input(12)
if input_value == False:



print "Se ha pulsado el boton"

armpower.blogs.upv.es

22

Un caso práctico: montaje

● Material: LED, pulsador, 2 resistencias de 220 Ohms y cables.

armpower.blogs.upv.es

23

Un caso práctico: montaje

● Apagar la RPi, quitar la alimentación, montar con cuidado.

armpower.blogs.upv.es

24

Acceso a bajo nivel: wiringPi

● Biblioteca con funciones para la GPIO, I2C, SPI, que soporta las

placas de extensión más populares: piface, gertboard, …

www.wiringpi.com

$ sudo apt-get update
$ sudo apt-get install python-dev python-pip
$ sudo pip install wiringpi2

armpower.blogs.upv.es

25

E/S y ficheros

● print

● Convierte a strnig lo que le pases y lo saca por la salida estándar:
● print "Python esta chulo", "verdad?"

● Hay dos funciones para leer de la entrada estándar (normalmente el

teclado):



raw_input (siempre devuelve una cadena de texto → podemos necesitar hacer
una conversión al tipo de dato que necesitemos)

str = raw_input("Enter your input: ");
print "Received input is : ", str



input

str = input("Enter your input: ");
print "Received input is : ", str

armpower.blogs.upv.es

26

E/S y ficheros

● Antes de leer o escribir ficheros hay que abrirlos: open()



file object = open(file_name [, access_mode])

● Crea un objeto “file”

● Parámetros:





file_name: nombre del fichero
access_mode: modo debe ser abierto (lectura, escritura, etc.)

● close() vuelva (flush) todas la información no escrita y cierra el

fichero .



fileObject.close();

armpower.blogs.upv.es

27

E/S y ficheros



Leyendo ficheros:

fo = open("foo.txt", "r+")
str = fo.read(10);
print "Cadena ledia : ", str
# posicion actual
position = fo.tell();
print "Posicion actual : ", position
# Vamos al principio de nuevo
position = fo.seek(0, 0);
str = fo.read(10);
print "Cadena leida: ", str
fo.close()

● Escribiendo ficheros:

fo = open("foo.txt", "wb")
fo.write( "Practicando la escritura en ficheros.\n");
fo.close()

armpower.blogs.upv.es

28

Gestionando ficheros

● Renombrando ficheros:

import os
# Renombrando test1.txt a test2.txt
os.rename( "test1.txt", "test2.txt" )

● Borrando ficheros:

import os
# Borrando test2.txt
os.remove("text2.txt")



Llamar a otro programa:

import subprocess
subprocess.call(['miprogram', 'hola'])

armpower.blogs.upv.es

29

Directorios en Python

● Crear directorios:

import os
# Creamos el directorio “test”
os.mkdir("test")

● Borrar directorios:
os.rmdir('test')

● Etc.

armpower.blogs.upv.es

30

E/S y ficheros

● Modos de apertura:

armpower.blogs.upv.es

31

Networking: Un sencillo servidor

import socket # Importamos el módulo socket
s = socket.socket() # Creamos un objeto socket
host = s
  • Links de descarga
http://lwp-l.com/pdf15794

Comentarios de: Programando en Python Raspberry Pi (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad