Appunti Raspberry/Python

Esempi di codice Python per Raspberry Pi

Pinout Raspberry Pi 2

blinker.py

import RPi.GPIO as GPIO
import time

led=2

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) 
GPIO.setup(led, GPIO.OUT)

while True: 
    GPIO.output(led, True)
    time.sleep(1)
    GPIO.output(led, False)
    time.sleep(1)

blinker2.py

import RPi.GPIO as GPIO
import time

led=2
switch=3

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(led, GPIO.OUT)
GPIO.setup(switch, GPIO.IN,pull_up_down=GPIO.PUD_UP)

while True: 
    if GPIO.input(switch):
        GPIO.output(led, True)
        time.sleep(1)
        GPIO.output(led, False)
        time.sleep(1)
    else:   
        GPIO.output(led, False)
        time.sleep(0.1)

event.py

import RPi.GPIO as GPIO
import time

led=2
switch=3

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(led, GPIO.OUT)
GPIO.setup(switch, GPIO.IN,pull_up_down=GPIO.PUD_UP)

def my_callback(channel): 
    if GPIO.input(channel):
        print "Rising edge detected"  
    else:
        print "Falling edge detected"  

GPIO.add_event_detect(switch, GPIO.BOTH, callback=my_callback) 

while True: 
    GPIO.output(led, True)
    time.sleep(1)
    GPIO.output(led, False)
    time.sleep(1)

pulse.py

import RPi.GPIO as GPIO
import time

led=2

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(led, GPIO.OUT)

pwm = GPIO.PWM(led, 50)

while True:
    for i in range(100):
        time.sleep(0.01)
        pwm.start(i)    

    for i in range(100,0,-1):
        time.sleep(0.01)
        pwm.start(i)        

webserver.py

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 80

class myHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write("Hello World !")
        return

try:
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print 'Started httpserver on port ' , PORT_NUMBER
    server.serve_forever()

except KeyboardInterrupt:
    server.socket.close()

remote.py

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
import RPi.GPIO as GPIO
import urlparse

PORT_NUMBER = 80

led=2

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(led, GPIO.OUT)

pwm = GPIO.PWM(led, 50)

class myHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = urlparse.urlparse(self.path)

        if parsed_path.path=="/":
            self.send_response(200)
            self.send_header('Content-type','text/html')
            self.end_headers()
            self.wfile.write("""
                <!DOCTYPE html>
                <html>
                    <head>
                        <meta name="viewport" content="width=device-width, initial-scale=1">
                    </head>
                    <body>
                        <h1>Controllo luce</h1>
                        <br/>
                        <input type="range" min="0" max="100" value="0" class="slider" id="myRange">
                        <script>
                            var slider = document.getElementById("myRange");
                            var xhttp = new XMLHttpRequest();

                            slider.oninput = function() {
                                xhttp.open("GET", "/send?value=" + this.value, true);
                                xhttp.send();
                            }           
                        </script>
                    </body>
                </html>

            """)
            return

        if parsed_path.path=="/send":
            value=urlparse.parse_qs(parsed_path.query).get('value',None)
            pwm.start(float(value[0])) 
            self.send_response(200)
            self.send_header('Content-type','text/html')
            self.end_headers()
            self.wfile.write("Ok");
            return

try:
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print 'Started httpserver on port ' , PORT_NUMBER
    server.serve_forever()

except KeyboardInterrupt:
    server.socket.close()

Sergio Tanzilli (Autore - Progettista hw & sw - Imprenditore - Musicista dilettante, classe 1964)
Fondatore di Area SX srl, Acme Systems srl e del TanzoLab, si occupa dal 1974 di elettronica digitale, dal 1978 di microprocessori, dal 1992 di microcontroller, dal 1995 di Linux e pubblicazioni su Web, dal 2005 di progettazione, produzione e commercializzazione di schede Linux Embedded.
http://www.tanzilli.com - http://www.acmesystems.it - https://github.com/tanzilli - sergio@tanzilli.com