“L’algoritmo sceglie cosa farci o non farci vedere”, ma solo se lo lasciamo scegliere.
Si ricomincia
(è stato un anno difficile, complicato, pesante, ma sono ancora qui)
micro:bit apertura con password
Per azionare il motore che apre la porta, occorre inserire la password pre-impostata (AABAA) premendo i bottoni A e B del micro:bit. Per confermare la password occorre premere contemporaneamente i bottoni A + B. Se la password è giusta, compare il segno di spunta e la porta si apre; altrimenti compare una X ed è possibile riprovare.
Quando compare il segno di spunta, è possibile inserire una nuova password premendo i bottoni A e B, confermando l’inserimento premendo contemporaneamente A + B. La nuova password viene visualizzata una volta prima di diventare attiva.
Per chiudere la porta, occorre premere insieme A + B senza inserire password.
Ovviamente, ogni volta che si riaccende il micro:bit si riparte dalla password pre-impostata.
Il codice in Python:
def on_button_pressed_a():
global tentativo, nuovapassword
if stato == "inserimento":
tentativo = "" + tentativo + "A"
else:
nuovapassword = "" + nuovapassword + "A"
input.on_button_pressed(Button.A, on_button_pressed_a)
def on_button_pressed_ab():
global nuovapassword, stato, tentativo, password
if stato == "inserimento":
if tentativo == password:
basic.show_icon(IconNames.YES)
pins.servo_write_pin(AnalogPin.P0, 90)
nuovapassword = ""
stato = "modifica"
else:
basic.show_icon(IconNames.NO)
stato = "inserimento"
pins.servo_write_pin(AnalogPin.P0, 0)
basic.pause(500)
basic.clear_screen()
tentativo = ""
else:
password = nuovapassword
basic.show_string("" + (password))
stato = "inserimento"
input.on_button_pressed(Button.AB, on_button_pressed_ab)
def on_button_pressed_b():
global tentativo, nuovapassword
if stato == "inserimento":
tentativo = "" + tentativo + "B"
else:
nuovapassword = "" + nuovapassword + "B"
input.on_button_pressed(Button.B, on_button_pressed_b)
nuovapassword = ""
stato = ""
tentativo = ""
password = ""
password = "AABAA"
tentativo = ""
stato = "inserimento"
nuovapassword = ""
pins.servo_write_pin(AnalogPin.P0, 0)
Scratch: Sparatutto
Tutto bene quel che finisce bene
Primo dramma:
Lunedì scorso avevo un corso di Excel in centro a Milano alle nove. Dato che era la prima volta che visitavo il cliente, volevo arrivare con buon anticipo e ho preso il treno di conseguenza. Arrivato a Milano Cadorna sono sceso in metro e ho trovato le carrozze ferme una folla immensa ad aspettare. Dopo qualche minuto, l’annuncio di “linea interrotta, seguiranno comunicazioni”. Che fare? Ho avvertito del ritardo e mi sono avviato a piedi. Sono arrivato (puf pant) alle nove e venti. Odio arrivare in ritardo. Detesto chi arriva in ritardo.
Secondo dramma:
Entro nella sala riunioni predisposta per la lezione, entrano gli allievi e si siedono attorno al tavolo, tirano fuori i carta e penna, ma non hanno i computer! Rimango sorpreso e chiedo spiegazioni: “e i computer?”. Rimangono sorpresi e chiedono “ah, ma ci vogliono?” (purtroppo non avevano letto le istruzioni). Mantengo la calma e spiego che per imparare bisogna fare (doh!), che il corso è in realtà un laboratorio, e senza PC è inutile. Invece di raffazzonare qualcosa al volo, decido di rimandare il tutto di una settimana.
Già che c’ero, mi son detto “conosciamoci meglio” e mi sono fatto raccontare come usano Excel, che tipo di problemi hanno, e ho fatto vedere alcuni strumenti che potrebbero essere loro utili, promettendo che ci avremmo lavorato durante il corso.
Finale a sorpresa:
Insomma, ho buttato la mattina per niente, dove niente è la mia retribuzione. Ma il cliente è rimasto molto contento, e vuole che tenga lo stesso corso per tutti i membri della sua associazione.
Morale della storia:
Sento dire spesso, e Amazon insegna, che “l’assistenza clienti è il nuovo marketing”. Ebbene, è vero.