Python per Raspberry Introduzione.

Slides:



Advertisements
Presentazioni simili
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Advertisements

Damb Il funzionamento interno e le idee che stanno dietro Damb dalla Traduzione del File in Istruzioni, alle Analisi e le Soluzioni 14/09/2004.
Unità di apprendimento 6 Dal problema al programma.
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Effetti grafici con compiz-fusion Come ottenere un desktop accattivante su UBUNTU.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Programmare “per gioco” SCRATCH Lo programmerò. Programmerò solo per lei.
IL SOFTWARE (FPwin 6.0).
Ambienti di Programmazione per il Software di Base
“Vivere insieme” – Lezione6
Arduino uno Introduzione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
“Vivere insieme” – Lezione6
La firma del verbale L’accesso si fa con matricola e password di Student-Card. La password NON è quella sulla Scratch-card. In fondo alla pagina si trova.
“Vivere insieme” – Lezione4
Per informazioni: I PORTALI ELLY: INTRODUZIONE Per informazioni:
VISUAL BASIC.
GPIO: General Purpose Input Output I parte
Introduzione al linguaggio C
Bootloader arduino nano
Programmazione per la Musica | Adriano Baratè
PROGRAMMAZIONE SHELL -
Pic16f84 Assembly I/O.
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
P. L. C. (Programmable Logic Controller)
Unità di apprendimento 7
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Ambienti di Programmazione per il Software di Base
Unità didattica 1: Introduzione al linguaggio Java
“Vivere insieme” – Lezione3
APACHE2-PHP su Raspberry
LA GESTIONE DEI PACCHETTI
L’AMBIENTE CODE BLOCKS E L’IO
I FILES AD ACCESSO SEQUENZIALE
Qt by Examples LINUX DAY
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
CICLO DO – WHILE LINGUAGGIO C.
SAS® OnDemand for Academics SAS Studio
istalliamo l’ambiente di sviluppo - ide
Global System for Mobile Comunication
mBlock Un modo semplice e innovativo per programmare Arduino
Un editor intelligente!!!
© 2007 SEI-Società Editrice Internazionale, Apogeo
ing. vincenzo lippiello
BootCaT: Bootstrapping Corpora and Terminology
Ambienti di Programmazione per il Software di Base
Costruiamo il nostro primo gioco
Interrupt Arduino.
Sviluppo di un programma
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
Introduzione alla nuova versione di PowerPoint
WORD 28/02/2019 Informatica - WORD.
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Excel 3 - le funzioni.
Lezione Seconda Primi passi di programmazione
Processi decisionali e funzioni di controllo
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Unità 1 Programmi base.
Lezione Terza Primi passi di programmazione
Progettiamo un robot Prof.ri Ponte Vincenzo Ovazza Sergio
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Docente: Sabato Bufano
Algoritmi.
Digitare qui i dettagli dell'evento
Transcript della presentazione:

Python per Raspberry Introduzione

Introduzione Python è un linguaggio interpetato La traduzione in linguaggio macchina viene eseguita riga per riga di comando. Per questo motivo, un programma in python può essere scritto anche in una shell riga per riga. Ciò però non permette di salvare il programma Se il programma viene salvato in un file di estensione .py, una volta salvato e tradotto i bytecode, viene eseguito sempre quel bytecode. Se invece, al file vengono apportate delle modifiche e processato con lo stesso nome, anche il bytecode cambia. Un file python può essere editato in due modi: Dalla shell del sistema opeativo Dalla finestra grafica Se il sistema operativo è ubuntu, un file python viene editato in uno dei seguenti modi: Dalla shell si scrive sudo nano nomfile.py; si apre la schermata nera dove scrivere il codice ; per chiudere il file e salvare bisogna pigiare i tasti ctrl^x Dalla finestra grafica di ubuntu, se è installato python; compare la schermata di python; basta poi scegliere new file. Nella schermata di python, dalla riga di comando, si possono digitare i vari comandi ma ciò non è comodo perché i comandi non vengono salvati Per fare eseguire un programma python si può scrivere Sul propt dei programmi: python nomefile.py Dal menù a tendine: run

Un po’ di sintassi Python è un linguaggio case sensitive I commenti iniziano con il simbolo # Come in ogni linguaggio, anche in python ci sono i tipi di variabili che però non vanno dichiarati. I tipi base sono: interi, float, caratteri Per far comparire una scritta sul monitor basta scrivere il seguente comando: print(“commento”)

Lampeggio di un led

Python e Raspberry: lampeggio di un led 1) import RPi.GPIO as gpio 2) import time 3) gpio.setmode(gpio.BCM) 4) gpio.setup(7,gpio.OUT) 5) gpio.setwarnings(False) 6) while True: 7) gpio.output(7,True) 8) time.sleep(1) 9) gpio.output(7,False) 10) time.sleep(1)

Lampeggio di un led Il programma precedente gestisce il lampeggio di un led fino a che il microprocessore è acceso. import Rpi.GPIO as gpio importa la libreria e crea una istanza import time importa la libreria per gestire il tempo setmode imposta in quale modo si fa riferimento ai pin. gpio.setmode(gpio.BOARD) indica che si vuole accedere ai pin attraverso il loro numero gpio.setmode(gpio.BCM) indica che si utilizzerà il numero di porta GPIO gpio.setup(7, gpio.OUT) imposta la GPIO 7 come output gpio.setwarnings(False) disabilita tutte le porte gpio se erano impegnate in processi precedenti. Questo comando è opzionale. Se non viene utilizzatocomparire il messaggio di canale occupato. while True: inizio del blocco di programma attivo fino a che c’è alimentaxione al microprocessore gpio.output(7,True) il livello logico sul pin 7 è alto e il led è acceso time.sleep(1) si attende un secondo gpio.output(7,False) il livello logico sul pin 7 è basso e il led è spento Se si vuole far comparire sul monitor lo stato del led basta aggiungere dopo la settima riga di comando, il seguente codice: print(“led acceso”) e, dopo la nona riga di comando, il codice: print(“led spento”)

Lampeggio di un led per 10 volte import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.OUT) for i in range(0,10): GPIO.output(7, GPIO.HIGH) time.sleep(2) GPIO.output(7, GPIO.LOW) time.sleep(1) GPIO.cleanup()

Lampeggio di un led per 10 volte Nel programma precedente sono state inserite due nuove righe colorate in giallo: for i in range(0 10):inizia il blocco che fa ripetere 10 volte un insieme di comandi che vengono racchiusi in una indentazione GPIO.cleanup() questo comado è opzionale; è fuori dalla indentazione del for e disabilita tutte le GPIO quando termina il for, libera il pin

Accensione di un led con un pulsante import RPi.GPIO as gpio import time gpio.setmode(gpio.BCM) gpio.setup(18, gpio.OUT) gpio.setup(7,gpio.IN) while True: inva=gpio.input(7) if inva==False: gpio.output(18,False) time.sleep(1) if inva==True: gpio.output(18,True)

Led pilotato da un pulsante

Accensione di un led con un pulsante Per pilotare l’accensione di un led con un pulsante, sono state aggiunte le righe di programma colorate in giallo Bisogna prima settare il pin sul quale è posizionato il pulsante, come input tramite il comando gpio.setup(7, gpio.IN) Nel blocco di comando while True:, compare una riga di programma altri due blocchi di programma: inva=gpio.input(7) if inva==False: gpio.output(12,False) time.sleep(1) if inva==True: gpio.output(12,True) La 1. legge il valore sul pin 7 e lo chiama inva Il blocco 2 verifica che il pulsante non è premuto e allora, il led resta spento Il blocco 3 verifica che il pulsante è premuto e allora, il led si accende

PWM import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) p=GPIO.PWM(12, 70) p.start(0) p.ChangeDutyCycle(30) time.sleep(2) p.ChangeDutyCycle(0) p.stop() GPIO.cleanup()

Pwm Diamo per scontato che si conosca la pwm In azzurro è stato colorato un comando nuovo che non centra con la pwm, GPIO.setmode(GPIO.BOARD); questo comando indica che si terrà conto della numerazione dei pin secondo il pettine e non secondo il nome dato. Il pin PWM è il 12 secondo la numerazione BOARD che coincide con il 18 secondo la numerazione BCM. Si può però generare un segnale PWM su qualsiasi pin di Raspberry, non è come Arduino che ci sono dei pin dedicati In giallo sono colorati i comandi tipici della PWM p=GPIO.PWM(12,70) si da un nome alla inizializzazione della PWM sul pin 12 a 70 Hz, si crea una istanza p.start(0) il duty cycle di partenza è zero p.ChangeDutyCycle(30) porta il duty cycle al 30% p.stop() termina la pwm Il programma successivo cambia solo dei parametri

PWM import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) p = GPIO.PWM(18, 50)     p.start(50)                p.ChangeDutyCycle(90)   p.ChangeFrequency(100)  p.stop()                  GPIO.cleanup()          

PWM, cambiare il duty cycle dalla tastiera import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) lum= GPIO.PWM(18, 500) lum.start(100) while True: duty_s = raw_input(“Inserisci la luminosità (0 to 100):") duty = int(duty_s) lum.ChangeDutyCycle(duty)

PWM, cambiare il duty cycle dalla tastiera Nel programma precedente il duty cycle ciene scelto da tastiera Anche in questo caso i nuovi comandi vengono colorati di giallo raw_input() acquisisce un dato da tastiera e lo chiama duty_s int(duty_s) trasforma un dato che viene visto come carattere, in intero e lo chiama duty Per poter inserire il dato da tastiera, bisogna eseguire il programma dalla shell di ubuntu con il codice nomefile.py; il programma attende un comando e poi esegue le istruzioni

PWM, cambiare il duty cycle dalla tastiera

PWM, cambiare il duty cycle da tastiera su più canali import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) lum= GPIO.PWM(18, 500) GPIO.setup(25, GPIO.OUT) lum1= GPIO.PWM(25, 500) GPIO.setup(8, GPIO.OUT) lum2= GPIO.PWM(8, 500) lum.start(100) lum1.start(100) lum2.start(100) while True: duty_s = raw_input(“Inserisci la luminosità (0 to 100):") duty = int(duty_s) lum.ChangeDutyCycle(duty) lum1.ChangeDutyCycle(duty) lum2.ChangeDutyCycle(duty)

PWM, cambiare il duty cycle da tastiera su più canali con valori differenti import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) lum= GPIO.PWM(18, 500) GPIO.setup(25, GPIO.OUT) lum1= GPIO.PWM(25, 500) GPIO.setup(8, GPIO.OUT) lum2= GPIO.PWM(8, 500) lum.start(100) lum1.start(100) lum2.start(100) while True: duty_s = raw_input(“Inserisci la luminosità del led giallo (0 to 100):") #si creano tre variabili differenti duty = int(duty_s) duty_s1 = raw_input(“Inserisci la luminosità del led rosso (0 to 100):") duty1 = int(duty_s1) duty_s2 = raw_input(“Inserisci la luminosità del led blu (0 to 100):") duty2 = int(duty_s2) lum.ChangeDutyCycle(duty) lum1.ChangeDutyCycle(duty1) lum2.ChangeDutyCycle(duty2)

Frequenza di pwm Frequenza richiesta Frequenza misurata 50 Hz 100 Hz 1 kHz 980 Hz 10 kHz 4.4 Hz Importante notare che all’aumentare della frequenza, diminusce la stabilità