giovedì 18 dicembre 2014

Campane & suono Argentino

durante una pausa di una sessione lavorativa, di fronte alla macchinette del caffè, com'è come non è si è iniziato a parlare, visto anche il periodo natalizio, di campanellini di suono argentino... e mi è venuto in mente una aneddoto di cui sono venuto a conoscenza qualche tempo addietro...

Qualche tempo fa, in uno dei miei giri guidati per Milano, ci siamo recati prima alla chiesa di Santa Maria alla Fontana (è un santuario Mariano di Milano locato in piazza Santa Maria alla Fontana n.11 Zona MM Zara) e dopo alla vicinissima Fonderia Napoleonica.


Questa fonderia, famosa per le campane, ha avuto anche esperienze artistiche notevoli, come la fusione della Statua equestre per il monumento a Vittorio Emanuele II in piazza Duomo a Milano, o la stessa Portale maggiore del Duomo di Milano;
di recente è diventato un interessante museo (QUI un documento stilato dal FAI nel 2009)

Nella Fonderia si è parlato  dell'accordamento delle campane e delle tecniche di costruzione, del decreto del governo Mussolini del 23 aprile 1942, che comportò la requisizione forzata delle campane su tutto il territorio italiano per convertirle in armi da offesa, e della successiva "restituzione" tramite la fusione di nuove campane che costituì un business formidabile per le fonderie del settore, che tra il 1946 e il 1955 circa lavorarono in modo incessante.

Considerando che la vita media di una campana  in 100-150 anni.. si capisce che il prossimo boom nella produzione campanaria sarà presumibilmente nel ... 2050-2100 da qui anche la vocazione artistica.

vi chiederete, ma cosa centra tutto questo con il suono argentino ?

        1 che ha il timbro limpido e squillante dell’argento percosso: voci argentine (*)


attendete ancora un po...


a quei tempi ogni paese/quartiere aveva la sua chiesetta con il proprio campanile, e nel campanile le proprie Campane.
Come si sa le campane sono sempre state riccamente decorate... ma perché se poi venivano messe a decine di metri di altezza in cima ai campanili e non si sarebbero viste da terra ?
Semplice prima la popolazione si auto tassava per acquistare la campana nuova, poi prima di montarla la portavano in giro durante una festa per mostrarla anche agli altri e si faceva a gara per chi aveva la campana più bella... da li il Campanilismo.

Già il giro di parata era pericoloso (un colpo preso male poteva crepare la campana rovinando completamente il suono) figurarsi il trasposto dalla fabbrica al Campanile, con le strade che c'erano... chi fabbricava le campane, lo faceva spesso a domicilio.
Portava i suoi progetti ed i suoi attrezzi presso la zona del campanile, e li dava disposizione al committente che lo aveva assunto, su come costruire il forno per la colata, su quale e quanto bronzo procurare etc etc.

Finita la fusione, la rifinitura della campana, e finita la Festa, la campana veniva issata sul campanile ed il costruttore di campane tornava a casa con il suo stipendio.
Ma chi erano i committenti ? erano abitanti della zona, agricoltori, allevatori che non avevano grosse disponibilità di denaro... e pagavano il lavoro con beni (vino, olio etc) che veniva poi gestito dal fonditore... che solitamente oltre alla fabbrica aveva anche un negozio per vendere i frutti del "baratto".

Esistevano pero' anche dei fonditori "girovaghi" che andavano di paese in paese a costruire campane.. in questi casi la merce la doveva portare fino al paese successivo sperando che ci fosse un mercato/sagra per vendere le vettovaglie... e nel frattempo ?

Questi girovaghi iniziarono a dire che se si metteva dell'argento nella fusione di bronzo, il suono sarebbe stato migliore più Argentino ... quindi i committenti fornivano monete d'argento per ottenere un suono migliore;
ma in realtà l'argento, in campane grandi, essendo duttile e "morbido" invece di migliorare il suono lo peggiorerebbe... ma nessun problema! le monete d'argento erano intascate prima di finire nella fusione ed usate dal fonditore come integrazione di pagamento!

da qui "le campane con suono Argentino"






martedì 30 settembre 2014

Arduino & Raspberry Pi




Questa sera ho deciso di mettere nero su bianco I passi che mi hanno permesso di collegare il mio “Raspberry Pi B-” ad uno dei miei “Arduino Uno R3”
Allora voi direte ma perche usare un Arduino ? Perche se devi usare con precisione la temporizzazione, leggere velocemente valori analogici etc etc l'Arduino è perfetto (Open Surce e Progetto Italiano) e come dice il sito ufficiale
Arduino is an open-source electronics platform based on easy-to-use hardware and software. It's intended for anyone making interactive projects.
(per maggiori info su cosa sia esattamente http://www.arduino.cc/)
cos'altro si puo' volrere ?
Collegargo al Raspberry Pi! Perche ? Potrei discutere sul fascino di interfacciare I due sistemi, dell'esplorazione dell'insolito... oppure confessare che il raspberry Pi è l'unico “PC-Fisso” che ho nella stanza Hobby che è un Triangolo Rettangolo Isoscele di lato 1,5 mt … in compenso il monitor è un 17Pollici1280x1024 :o)

cmq bando alle ciance
Aprendo il Terminale si scarica

sudo apt-get install arduino

Rispondete ad eventuali domande, scaricate, attendete .. et voilà comparira un menu con “Arduino IDE”




impostiamo la Board come “Arduino Uno



Dopodiche Carichiamo uno Sketch (è un programma per arduino) il piu semplice possibile...






dove al piedino 13 è collegato un Led (apposta per fare queste prove :) ) che andremo a far lampeggiare;
aggiungiamo, giusto per far lampeggiare il led in maniera particolare, le seg righe di codice alla fine:

digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);

dopodichè verifichiamo il codice








Prima di Fare L'upload sull Arduino
Bisogna collegarlo, in Teoria Bisognerebbe collegarlo NON direttamente al Raspberry Pi ma tramite un hub USB alimentato... ed è cio che vi consiglio.
Io per questi test ho provato il collegamento diretto ed ha funzionato... cmq non mi ritengo responsabile di eventuali Svampate che possano succedervi :D


(da notare che dovrebbe aver riconosciuto la porta USB in autonomia) nel mio caso :

/dev/ttyACM0


ed ora Carichiamo il programma su Arduino








Ed ora Finalmente un led giallo dovrebbe lampeggiare...

Come Fare una Guida usando il Raspbrry Pi

Allora prima di tutto abbiamo bisogno di un qualcosa che catturi lo schermo o una finestra ... cercando un po' in giro (sinceramente non ricordo piu dove) ho trovato questo simpatico strumento  a riga di comando: "scrot"

io uso sempre l'interfaccia grafica di default di Raspberry .. quindi apro un terminale ed installo l'applicazione

sudo apt-get install scrot

finita l'installazione  se uso il comando

scrot -d 10

dopo 10 secondi di delay, viene catturato tutto lo schermo e salvato in un file *.png nella directory dove si è lanciato...

se invece scrivo

scrop -d 10  -u

verrà catturata la finestra attiva allo scadere dei 10 secondi di delay

i file generati da scrot sono del tipo

yyyy-mm-dd-hh24mmss_LarghezzaxAltezza_scrot.png
ovvero per esempio
2014-09-29-220333_1232x992_scrot.png

ma se dovete ritagliare l'immagine o poco piu ? ho cercato in giro qualcosa di veramente easy... ma non ho trovato il tool Finale.

Così per scherzare ho cercato info sul buon vecchio Gimp & Raspberry ed ho trovato che SI! funziona, Lentamente, ma funziona! (qui un overclock dinamico si apprezzerà sensibilemente )

e quindi

sudo apt-get install gimp

a questo punto comparirà il menu "GNU Image Manipolation Program" Sotto Graphics





et Voilà ora avete tutti gli strumenti per catturare le schermate e manipolarle (con pazienza...)


Migior prezzo su AMAZON per RaspBerry Pi: 39 Euro

martedì 8 luglio 2014

Giochiamo con il Sensore HC-SR04


(il data sheet lo potete trovare QUI)

Un  preambolo su questo sensore... per quanto ho potuto appurare su inet le prime versioni non erano molto a buon mercato (sensori ultrasonici per misurare le distanze... poi I prezzi sono scesi e l'altro giorno me ne sono arrivati da Hong Kong due esemplari a 3,4 euro in tutto, spese di spedizione incluse!)

prima nota dolente ho letto che spesso (1 su 10) se ne trovano di difettosi tra le “cinesate” ed uno dei miei due ogni tanto sbarella... ma pazienza l'altro funziona bene

comunque vi consiglio di dare un occhiata anche QUI su AMAZON.

Guardando il manuale del sensore e girando per internet (per esempio qui QUI) ho fatto questo schema di cablaggio




con la solita resistenza da 1Khom per portare il segnale da 5v a 3,3 senza bruciare il Raspberry

L'alimnetazione da 5V l'ho presa direttamente dal Raspberry.

La versione 0 del sorgente lo ammetto l'ho scopiazzata, tanto per testarne il funzionamento e ve la riporto qua con qualche mio commento in piu da cui si capisce come funziona il sensore
(si manda segnale al pin “Trigger” e poi si legge il tempo che il pin “Echo” sta “Alto(1-ON)”
questo tempo è proporzionale alla distanza percorsa da un pacchetto di ultra-suoni a 44 Khz [da non confondere con la qualita di 44Khz dei CD, che è quella di campionamento, Teorema di Shannon insomma i cd riproducono al massimo frequenze di 22Khz perche tanto il nostro orecchio non sente suoni piu acuti (leggi); )

<pre>[Omissis]... </pre>
La seconda versione (v1) riprende la prima e la estende con settaggi di variabili al posto di codici cablati a programma, e per la gestione corretta della struttura (gestione errori etc)

<pre>[Omissis]... </pre>

La terza versione (v3) introduce la gestione di problemi tipo l'interruzione del segnale (magari per rottura del cavetto) tra sensore e raspberry, e la gestione di una distanza massima entro cui ci si aspetta il sensora debba funzionare (questo per evitare di aspettare inutilmente secondi se davanti al sensore non c'e' nulla)
La versione v3 ha avuto un parto travagliato per la gestione delle operazioni di interi in phyton... che restituisce sempre un intero e non un float... cmq la sera dopo, a mente lucida è stato risolto tutto.





import time
import RPi.GPIO as GPIO

# use the values of the GPIO pins, and not the actual pin number
# so if you connect to GPIO 25 which is on pin number 22, the
# reference in this code is 25, which is the number of the GPIO
# port and not the number of the physical pin
GPIO.setmode(GPIO.BCM)

# remember to change the GPIO values below to match your sensors
Trig_pin = 17 # GPIO output = the pin that's connected to "Trig" on the sensor
Echo_pin = 27 # GPIO input = the pin that's connected to "Echo" on the sensor

ON = 1
OFF = 0

#shoudln't need to changed these values unless you have a specific need to do so.
MAX_SENSOR_DISTANCE = float(500) # Maximum sensor distance can be as high as 500cm,
# no reason to wait for ping longer than sound takes
# to travel this distance and back.
US_ROUNDTRIP_IN = 146 # Microseconds (uS) it takes sound to travel round-trip 1 inch (2 inches total),
# uses integer to save compiled code space.
US_ROUNDTRIP_CM = 57 # Microseconds (uS) it takes sound to travel round-trip 1cm (2cm total),
# uses integer to save compiled code space.

#max_cm_distance = float(60)


#_maxEchoTime = (min(max_cm_distance, MAX_SENSOR_DISTANCE) / 17000);
#* US_ROUNDTRIP_CM + (US_ROUNDTRIP_CM / 2) *1000; # Calculate the maximum distance in uS.

#print min(max_cm_distance, MAX_SENSOR_DISTANCE) /17
#print min(max_cm_distance, MAX_SENSOR_DISTANCE) /1700
#print min(max_cm_distance, MAX_SENSOR_DISTANCE) /17000
#print _maxEchoTime*17000

def NewPingConvert(echoTime, conversionFactor):
return (echoTime + conversionFactor / 2) / conversionFactor


def reading(sensor,max_cm_distance):
max_cm_distance=float(max_cm_distance)
_maxEchoTime = (min(max_cm_distance, MAX_SENSOR_DISTANCE) / 17000);

if sensor == 0:
# point the software to the GPIO pins the sensor is using
# change these values to the pins you are using
# GPIO output = the pin that's connected to "Trig" on the sensor
# GPIO input = the pin that's connected to "Echo" on the sensor

GPIO.setup(Trig_pin,GPIO.OUT)
GPIO.setup(Echo_pin,GPIO.IN)
GPIO.output(Trig_pin, GPIO.LOW)

# found that the sensor can crash if there isn't a delay here
# no idea why. If you have odd crashing issues, increase delay
time.sleep(0.3)

# sensor manual says a pulse ength of 10Us will trigger the
# sensor to transmit 8 cycles of ultrasonic burst at 40kHz and
# wait for the reflected ultrasonic burst to be received
# to get a pulse length of 10Us we need to start the pulse, then
# wait for 10 microseconds, then stop the pulse. This will
# result in the pulse length being 10Us.
# start the pulse on the GPIO pin
# change this value to the pin you are using
# GPIO output = the pin that's connected to "Trig" on the sensor
GPIO.output(Trig_pin, ON) #True

# wait 10 micro seconds (this is 0.00001 seconds) so the pulse
# length is 10Us as the sensor expects
time.sleep(0.00001)

# stop the pulse after the time above has passed
# change this value to the pin you are using
# GPIO output = the pin that's connected to "Trig" on the sensor
GPIO.output(Trig_pin, OFF) #False

# listen to the input pin. 0 means nothing is happening. Once a
# signal is received the value will be 1 so the while loop
# stops and has the last recorded time the signal was 0
# change this value to the pin you are using
# GPIO input = the pin that's connected to "Echo" on the sensor
signaloff = time.time()
signal0 = signaloff + _maxEchoTime

while (GPIO.input(Echo_pin) == OFF and signaloff <= signal0):

signaloff = time.time()
if GPIO.input(Echo_pin) == ON:

# listen to the input pin. Once a signal is received, record the
# time the signal came through
# change this value to the pin you are using
# GPIO input = the pin that's connected to "Echo" on the sensor
signalon = signaloff
signal0 = signalon + _maxEchoTime

while (GPIO.input(Echo_pin) == ON and signalon <= signal0):

signalon = time.time()

if GPIO.input(Echo_pin) == OFF:
# work out the difference in the two recorded times above to
# calculate the distance of an object in front of the sensor
timepassed = signalon - signaloff


# we now have our distance but it's not in a useful unit of
# measurement. So now we convert this distance into centimetres
# if you take 340 m/sec (approximate speed of sound through air)
# and convert to cm/sec you get 34000 cm/sec.
# For pulse-echo, the sound travels twice the measured distance so
# you need to divide the conversion factor by 2 so you get 17000 cm/sec.
# When you multiply by the measured time, you get distance from the
# transducer to the object in cm.
# The speeds of sound used in the formulas are approximations.
# The actual speed of sound through air varies with temperature and
# (to a lesser extent) with humidity (and a little due to other factors).
distance = timepassed * 17000

else:
distance = 'Out Of Range'


else:
distance = 'No Start Echo'

# return the distance of an object in front of the sensor in cm
return distance

else:
print "Incorrect usonic() function varible."

def barra_da_num(myNum):
sOut = '#'
n = 1

while (n < myNum and n < 120):
n += 2
sOut += '#'
return sOut
try:

#here you put your main loop or block of code
#print reading(0,80)
myDist = reading(0,80)
while ( myDist > 6):
myDist = reading(0,80)
print '#' + str(myDist) + barra_da_num(myDist)

except KeyboardInterrupt:
# here you put any code you want to run before the program
# exits when you press CTRL+C
#print "\n", counter # print value of counter
print "\nuscito per pressione tasti CTRL+C"

#except:
# this catches ALL other exceptions including errors.
# You won't get any error messages for debugging
# so only use it once your code is working
# print "Other error or exception occurred!"

finally:
# we're no longer using the GPIO, so tell software we're done
GPIO.cleanup() # this ensures a clean exit

domenica 29 giugno 2014

Rapberry Pi & Turbo-Mode

Ho trovato un articolo riguardo il turbo-mode; alticolo un po' vecchio (nel senso che ormai tutte le versioni del Raspberry lo usano.. comunque illuminante)

come al Solito da lxterminal un bel

sudo apt-get update && sudo apt-get upgrade

seguito da

sudo raspi-config



e da questo menu contestuale 

7) Overclock -->    --> Modest 800Mhz -->  --> Reboot

e magicamente abbiamo un raspberry più veloce... i prox giorni testo Frequenze maggiori.. forse

ah 

sulla barra in forndo del desktop classico, premendo con il tasto DX, poi 
"add/remove panel list" --> "Add"  --> "CPUFreq Fronted" 
aiuta a capire che sta facendo l'ARM sotto il cofano

non dimenticatevi di leggere RPi_Overclocking che ne spiega la filosofia e qualche test (a parte Quake :P)


Vi consiglio di applicare dei dissipatori sui chip del RaspBerry Pi, per pochi euro migliorerete il raffreddamento e potreste spingervi anche oltre gli 800Mhz (a vostro rischio).

Miglior prezzo su AMAZON per dissipatori: 3,6 Euro

venerdì 27 giugno 2014

Come far riconoscere e montare automaticamente una chiavetta (o disco) USB al nostro Raspberry Pi

Accenno a mia figlia (6anni) di volerle far vedere una porzione di filmato tratto da "4 bassotti x un Danese", prendo lo spezzone (.avi) e lo metto su una chiavetta USB.
Tutta Gasata seduta in poltrona, la bimba aspetta che il suo papà metta in funzione il "super" decoder DTT con ingresso USB collegato ad un sempre valido CRT MiVar 14".
Dopo un po' di manovre varie tra i telecomandi, trovo il filmato e lo metto in play ... Schermo nero, scritta Bianca "Formato video non supportato!" in compenso avevamo l'audio.
La tristezza si dipinge sul volto della Pargola, guarda sconsolata gli altri spettatori, i suoi 3 pupazzi, e con gli occhietti chiede "perchè ?" Panico

Mi ricordo che in passato avevo avuto a che fare con "VLC" ed il player del Raspberry "omxplayer" e la sua GUI "tboplayer.py"  avevo anche montato un disco multimediale di rete... ma quella è un'altra storia.

Comunque accenno l'intenzione di usare il "computer" per fargli vedere lo spezzone: gli occhietti si illuminano, il sorriso è contagioso, sta pensando "ma si puo' fare anche questo con il miglior gioco del mondo"
N.B. lei ci gioca quando è spendo: Ha molta Fantasia :o) ed un papà che cerca di fare imprinting costrutivo.

Mezzo secondo dopo mi viene in mente che il Raspberry ha Linux, non XP, ed attaccare una chiavetta USB non è poi cosi automatico che la veda...
non posso deludere la prole... cerco un po' in rete e trovo la soluzione (forse non da puristi ma ad ora pare molto pratica) www.instantsupportsite.com

Incominciamo con l'aprire un prompt dei comandi (command prompt); per queste operazioni io di solito uso un "root terminal" (da RaspBian "Avvio"->"Accessories"->"Root Terminal") per non dover fare un sudo ...
Scriviamo

apt-get install usbmount 

inizierà a scaricare ed installare  un po' di pacchetti ... lascitaelo fare rispondendo alle domande

Finita l'installazione proviamo a vedere le statistiche dei dischi del nostro Raspberry Pi con il comando df ("disk filesystem") con il parametro -h ("human readable") (info su df)

df -h

ottenendo qualcosa del tipo

Filesystem      Size  Used Avail Use% Mounted on
rootfs           14G  4.3G  8.3G  35% /
/dev/root        14G  4.3G  8.3G  35% /
devtmpfs        211M     0  211M   0% /dev
tmpfs            44M  264K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            88M   76K   88M   1% /run/shm
/dev/mmcblk0p5   60M   19M   41M  32% /boot
/dev/mmcblk0p3   27M  422K   25M   2% /media/SETTINGS

dopodichè colleghiamo la nostra chiavetta (o disco) USB al Mirtillo (ho ia scritto in passato che "Lampone" è troppo inflazionato?!?) e riproviamo ancora

df -h

ed ora dovemmo vedere la nostra chiavetta USB sotto /media/usbN!

Filesystem      Size  Used Avail Use% Mounted on
rootfs           14G  4.3G  8.3G  35% /
/dev/root        14G  4.3G  8.3G  35% /
devtmpfs        211M     0  211M   0% /dev
tmpfs            44M  276K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            88M   76K   88M   1% /run/shm
/dev/mmcblk0p5   60M   19M   41M  32% /boot
/dev/mmcblk0p3   27M  422K   25M   2% /media/SETTINGS
/dev/sda1       2.0G  734M  1.2G  38% /media/usb0

Per la cronaca La spezzone è piaciuto parecchio alla figlia, ed il "computer" gli appare al livello di HAL-9000 (no non gliel'ho fatto ancora vedere 2001 Odissea nello spazio)
a Proposito lo sapete che HAL detiva dallo shift della patola IBM (prendendo la lettera precedente I-->H B-->A M-->L) il 9000 non so per cosa stia...

Buona notte 



domenica 1 giugno 2014

Sensore di Temperatura ed umidità DHT11 con RasphBerry pi


Tra le numerose micro spedizioni ricevute in questi ultimi mesi da negozietti sparsi per il mondo, mi sono anche fatto mandare un Sensore DHT11 che misura Temperatura ed Umidità.
(poi ho scoperto che sarebbe stato piu comodo prendere il DHT11 su AMAZON al miglior prezzo)
Guardando il datasheet la misura della temperatura ha una precisione di +o-2gradi.. mi sembra un esagerazione ma costava poco :D e per fare delle prove va benissimo
N.B. il +o-2 gradi significa anche che si passa dai 26 ai 28 nelle misurazioni!
per quanto rigurada l'umidità è comunque abbastanza preciso per i miei scopi.


ho preso spunto dal sito http://www.vitadastudente.it
che a sua volta fa riferimento al sito di AdaFruit...

cmq sia dopo essermi procurato anche una bella resistenza da 4,7Khom ed adoperato il seguente schema

collegando il pin 7 (GPIO 4) al piedino dei dati, ho scaricato i Driver (la gestione pura in Pyton risultava troppo imprecisa per la comunicazione seriale richiesta)
cmq i driver provengono sempre da Adafruit


    $ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
    $ cd Adafruit-Raspberry-Pi-Python-Code

    $ cd Adafruit_DHT_Driver

       e fin qui lo abbiamo solo scaricato ora lanciamo il test
      1. sudo ./Adafruit_DHT 11 4
      dove 11 indica il modello del sensore, ed il 4 indica il PIN GPIO a cui è collegato;
      otteniamo
      1. Using pin #4
      2. Data (40): 0x26 0x0 0x1a 0x0 0x40
      3. Temp = 26 *C, Hum = 38 %

      se poi utilizzando lo spirito scientifico che mi contraddistingue... ci alito sopra ...
      1. Using pin #4
      2. Data (40): 0x28 0x0 0x1c 0x0 0x40
      3. Temp = 28 *C, Hum = 40 %
      noto che qualche variazione la registra...





      lunedì 12 maggio 2014

      RaspBerry Pi - ed il motorino passo passo
       
      Ecco la Seconda Puntata del mio approccio con il Raspberry pi... nulla di eclatante.. un po' di prove di "velocita massima", di passi, mezzi passi nulla di che
      un po' di ottimizzazione del codice di esempio (un bel try-catch fa' sempre bene) e come al solito i commenti sono piu del codice :P


      allego il codice usato:

      import RPi.GPIO as GPIO
      import time
      GPIO.setmode(GPIO.BCM)
      
      enable_pin = 18
      coil_A_1_pin = 4
      coil_A_2_pin = 17
      coil_B_1_pin = 23
      coil_B_2_pin = 24
      
      GPIO.setup(enable_pin, GPIO.OUT)
      GPIO.setup(coil_A_1_pin, GPIO.OUT)
      GPIO.setup(coil_A_2_pin, GPIO.OUT)
      GPIO.setup(coil_B_1_pin, GPIO.OUT)
      GPIO.setup(coil_B_2_pin, GPIO.OUT)
      
      GPIO.output(enable_pin, 1)
      
      def forward(delay, steps):  
      #mezzo passo 
        for i in range(0, steps):
          setStep(1, 0, 0, 1)
          time.sleep(delay)
          setStep(0, 0, 0, 1)
          time.sleep(delay)
          setStep(0, 0, 1, 1)
          time.sleep(delay)
          setStep(0, 0, 1, 0)
          time.sleep(delay)
          setStep(0, 1, 1, 0)
          time.sleep(delay)
          setStep(0, 1, 0 , 0)
          time.sleep(delay)
          setStep(1, 1, 0, 0)
          time.sleep(delay)
          setStep(1, 0, 0, 0)
          time.sleep(delay)
      
      def backwards(delay, steps): 
      #passo intero 
        for i in range(0, steps):
          setStep(1, 0, 0, 0)
          time.sleep(delay)
          setStep(0, 1, 0, 0)
          time.sleep(delay)
          setStep(0, 0, 1, 0)
          time.sleep(delay)
          setStep(0, 0, 0, 1)
          time.sleep(delay)
      
      
      
      def setStep(w1, w2, w3, w4):
        GPIO.output(coil_A_1_pin, w1)
        GPIO.output(coil_A_2_pin, w2)
        GPIO.output(coil_B_1_pin, w3)
        GPIO.output(coil_B_2_pin, w4)
      
      try:
        #here you put your main loop or block of code
        delay = raw_input("Delay between steps (milliseconds)?")
      
        while int(delay) > 0 :
          steps = raw_input("How many steps forward? ")
          forward(int(delay) / 1000.0, int(steps))
          steps = raw_input("How many steps backwards? ")
          backwards(int(delay) / 1000.0, int(steps))
          delay = raw_input("Delay between steps (milliseconds)?")
      
      except KeyboardInterrupt:
        # here you put any code you want to run before the program
        # exits when you press CTRL+C
        #print "\n", counter # print value of counter
        print "\nuscito per pressione tasti CTRL+C"
      
      except:
        # this catches ALL other exceptions including errors.
        # You won't get any error messages for debugging
        # so only use it once your code is working
        print "Other error or exception occurred!"
      
      finally:
        GPIO.cleanup() # this ensures a clean exit
      
      
      

      mercoledì 2 aprile 2014

      RaspBerry Pi - Gli Albori (miei)

      Finalmente Dopo mesi che era li a prendere polvere, dopo ricompilazioni varie ed aver scoperto che l'accellerazione video si ha solo a schermo pieno e non in finestra..

      Seguendo le seg info la-porta-gpio-della-raspberry-pi

      Ho finamente collegato la mia Linux-Box al Trabicolo di legno (compensato pressofuso con colla a caldo qualche intergrato NAND 7400 8 Led ed 8 pulsanti, Marchiato BertZ(TM) 1/9/1995!)
      ed ho acceso 3 led!

      ora non chiedetemi a che serve che divento triste... per ora è un inizio :o)

      ps Facendo una dimostrazione a Mia figlia di 6 anni siamo riusciti a cortocircuitare massa e 3,3V ... a parte un fantasmagorico arcobaleno sul monitor ed un riavvio della macchina... abbiamo ancora la Linux-Box nome in codice Mirtillo (Lampone è troppo inflazionato :D)

      Ciao





      Migior prezzo su AMAZON per RaspBerry Pi: 39 Euro