Archivi autore: admin

10+1 suggerimenti sull’uso dell’iPad

 

Se anche voi avete acquistato di recente un iPad e desiderate pian piano rendere la “tavoletta” lo strumento principale da utilizzare a scuola per gestire la vostra didattica, ho realizzato una lista di 10+1 suggerimenti, i più importanti che ogni utente iPad deve conoscere, vi faranno sicuramente risparmiare tempo.

Se avete poi bisogno di una manuale completo, in italiano su tutto ciò che bisogna conoscere sull’iPad andate alla fine di questo post.

Buona lettura.

  1. Reset – Probabilmente la prima cosa che un nuovo utente di un iPad deve imparare a fare è ripristinarlo nel caso in cui ci fossero dei crash di sistema che “frizzano” il dispositivo. Per fare questo, basta tenere premuto il tasto di accensione e tasto home per qualche secondo e l’iPad si resetta.
  2. Uscita forzata – Questo è veramente semplice da fare. Se un programma viene congelato o se si vuole uscire subito, basta cliccare sul tasto Home per tornare alla schermata principale.
  3. Screen Shot – Una cosa che faccio ogni giorno come insegnate e realizzare screenshot per i miei manuali o per gli articoli di vocescuola. Questo può essere fatto tenendo premuto il tasto di accensione e tasto home per un secondo e poi rilasciandolo. Sentirete un suono che simula lo scatto di una fotocamera e lo schermo diventa bianco per un istante. La schermata verrà memorizzata nel rullino fotografico.
  4. Trasferimenti di file – Probabilmente il modo più semplice per trasferire un file dal iPad è semplicemente quello di fare clic sul pulsante Condividi in alto a destra e poi inviare il file come allegato di una mail.
  5. Copia e Incolla – Basta toccare e tenere premuto sul testo e selezionare copia, andate ad una nuova applicazione, quindi toccare e tenere premuto e fare clic su incolla. Per copiare un intero paragrafo, toccare e tenere premuto su un paragrafo 4 volte per selezionare tutto.
  6. Scorrimento pagina web – Per risparmiare tempo durante la lettura di una pagina web avete la possibilità di tornare immediatamente al top della pagina invece di dover far scorrere il dito su tutta la pagina più e più volte. Basta fare clic di nuovo la barra del titolo per tornare nella parte superiore dello schermo.
  7. Dock – Per gestire le App del Dock fare clic su una applicazione fino a quando non inizia ad oscillare e poi trascinarla sul Dock.
  8. Tastiera wireless – Per facilitare l’inserimento di testi molto lunghi su iPad potrebbe esservi di aiuto una tastiera esterna wireless, una Bluetooth qualsiasi andrà bene.
  9. Eliminare App – State riempendo il vostro iPad di App inutili? Per eliminarle è molto semplice, tenete premuto su una applicazione fino a quando non iniziano ad oscillare e poi premendo sulla x che compare in alto a sinistra potete cancellarle una alla volta.
  10. Smart Cover – Probabilmente la più comoda delle copertine per iPad che oltre ad unirsi ad iPad con un magnete vi permette di mettere in sleep l’iPad quando richiudete la copertina.

10+1. Manuale completo in Italiano: iPad manuale utente, da scaricare direttamente dall’App iBook che trovate sul vostro iPad.

Arduino LilyPad – lezione 05: sensore di luce

In questa lezione vi mostrerò come utilizzare il sensore luminoso: LilyPad Light Sensor acquistato presso SparkFun.

Passo 1

Come per le lezioni precedenti utilizziamo un cartocino di forma circolare per proteggere il circuito e per aumentare la presa dei morsetti a coccodrillo.

Passo 2

Collegate come rappresentato nell’immagine il + del sensore luminoso a al + di LilyPad, il – del sensore luminoso al – di LilyPad e il piedino S del sensore al piedino A0 di LilyPad:

Passo 3

Avviate l’IDE Arduino

Passo 4

Copiate il codice allegato all’interno di una nuova finestra dell’IDE.

/* Arduino LilyPad: lezione 05: sensore di luce
 * Uso del modulo LilyPad Light Sensor
 * Michele Maffucci
 * https://www.maffucci.it/
 * Progetto originale:
 * http://web.media.mit.edu/~leah/LilyPad/08_sensors.html
 */

int ledPin = 13;	// il LED e' collegato al pin digitale 13
int sensorPin = 0;	// il sensore di luce e connesso al piedino analogico 0
int sensorValue;	// variabile per memorizzare il valore rilevato dal sensore

void setup()
{
         pinMode(ledPin, OUTPUT);	// imposta ledPin come pin di output
         Serial.begin(9600);	//inizializza la porta seriale
         digitalWrite(ledPin, HIGH);	// accende il LED
}

void loop()
{
          sensorValue = analogRead(sensorPin);	// legge il valore dal sensore
          Serial.println(sensorValue);	// invia il valore al computer
          delay(100);	// ritardo di 1/10 di secondo
}

Passo 5

Chiarimenti sul codice.

Vi ricordo che con l’istruzione:

Serial.begin(9600);

apriamo la porta seriale USB e la inizializziamo a 9600 bps.

Per una spiegazione esaustiva dell’utilizzo del “Serial monitor” vi invito alla lettura della lezione: Arduino – lezione 04: realizzare un programma che identifica le variazioni di stato

Sempre nella lezione sopra indicata potete trovare dettagli sull’uso di:

Serial.println(sensorValue);

stampa sulla console di uscita il testo o il valore specificato tra parentesi:

Serial.print(78) stampa “78″
Serial.print(1.23456) stampa “1.23″
Serial.print(byte(78)) stampa “N” (il cui valore ASCII e’ 78)
Serial.print(‘N’) stampa “N”
Serial.print(“Hello world.”) stampa “Hello world.”

nel nostro caso “Serial.print(sensorValue);” stamperà sulla console di uscita il valore memorizzato nella variabile “sensorValue“.

Ricordo inoltre, come spiegato nella lezione: Arduino – lezione 02: facciamo lampeggiare un led

delay() è un’istruzione molto semplice che non fa altro che interrompere per un determinato tempo l’esecuzione del programma.
L’istruzione ha un solo argomento numerico che indica il numero di millisecondi di attesa.

Quindi “delay(100)” vuol dire 100 millisecondi,
cioè 100/1000 secondi
ovvero 1/10 di secondo.

Passo 6

Compilate il codice ed effettuate l’upload su LilyPad, aprite la console di uscita:

Non appena il LED si accende su LilyPad, si vedranno i valori del sensore comparire nella console di uscita e l’intervallo di valori oscillerà tra 0 (buio assoluto) a 1024 (luce piena):

Grazie!

Oggi flusso continuo di telefonate, sms e mail di auguri di buon compleanno 🙂

Ringrazio pubblicamente tutti, in primis la mia famiglia e i miei studenti che mi hanno inviato molti messaggi via facebook e poi tutti gli amici e colleghi.

Grazie di cuore
un abbraccio a tutti.

Arduino LilyPad – lezione 04: suono

Per questa lezione ho utilizzato LilyPad Buzzer che ho acquistato su Sparkfun. Si tratta di un piccolo buzzer induttivo con due pin I/O in grado di riprodurre suoni di un livello sufficientemente alto da poter essere sentiti ad esempio se avete il buzzer in tasca, ma non aspettatevi livelli sonori elevatissimi.
Le dimensioni sono di 20 mm di diametro e 0,8 mm di spessore.

Passo 01

Come consigliato nella lezione n. 3 procedete anche per questa piccola scheda alla realizzazione del supporto protettivo in cartocino al fine di evitare scivolamenti dei morsetti a coccodrillo.

Passo 02

Collegate il “+” del buzzer al piedino 9 di LilyPad e il “-” del buzzer al “-” di LiLyPad come rappresentato nell’immagine:

Passo 03

Avviate l’IDE di Arduino e copiate ed incollate il codice che trovate di seguito:

/* Arduino LilyPad: lezione 04: suono
 * Uso del modulo buzzer
 * Michele Maffucci LilyPad Buzzer per realizzare semplici note musicali
 * https://www.maffucci.it/2011/06/30/arduino-lilypa-zione-04-suono/
 * Progetto originale:
 * http://web.media.mit.edu/~leah/LilyPad/07_sound.html
 * per un grafico sulle differenti frequenze delle note:
 * http://www.phy.mtu.edu/~suits/notefreqs.html
 */

int ledPin = 13;	// il LED è connesso al pin digitale 13
int speakerPin = 9;	// il buzzer è connesso al pin digitale 9 (uscita di tipo PWM)

void setup()
{
         pinMode(ledPin, OUTPUT);		// si imposta ledPin come pin di output
         pinMode(speakerPin, OUTPUT);	// si imposta speakerPin come pin di output
}

void loop()	// inizio del loop
{
          scale();		// chiamata della funzione scale()
          delay(1000);	// attesa di 1 secondo
}

void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)		// funzione che produce il suono
{
          int x;

          // converte il periodo della nota in un intero lungo
          long delayAmount = (long)(1000000/frequencyInHertz);

          long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));

			for (x=0;x<loopTime;x++)
				{
					digitalWrite(speakerPin,HIGH);
					delayMicroseconds(delayAmount);
					digitalWrite(speakerPin,LOW);
					delayMicroseconds(delayAmount);
				}
}

void scale ()
{
			// speakerPin: piedino LilyPad; numero da: 2093 a 4186: frequenza della nota; 500: durata della nota

			digitalWrite(ledPin,HIGH);	//accende il LED
			beep(speakerPin,2093,500);	//C: suona le note C (C7 come da tabella linkata sopra) per 500ms
			beep(speakerPin,2349,500);	//D
			beep(speakerPin,2637,500);	//E
			beep(speakerPin,2793,500);	//F
			beep(speakerPin,3136,500);	//G
			beep(speakerPin,3520,500);	//A
			beep(speakerPin,3951,500);	//B
			beep(speakerPin,4186,500);	//C
			digitalWrite(ledPin,LOW);	//spegne il LED
}

Un long è un tipo intero lungo che può contenere un numero intero positivo o negativo (quindi senza punto decimale) di 32 bit con valori compresi tra 2.147.483.647 a – 2.147.483.648

Analizziamo con molta attenzione la funzione beep.

long delayAmount = (long)(1000000/frequencyInHertz); ?

Domanda: cosa vuol dire 1000000/frequencyInHertz:

Vi ricordo che il periodo di una forma d’onda è:

T =1/f

dove f è la frequenza espressa in Hertz. L’unità di misura del periodo T è il secondo.

quindi la formula:

1000000/frequencyInHertz

può essere scritta come:

1000000 * (1/frequencyInHertz)

ovvero:

1000000 * T

Domanda: perché moltiplichiamo per 1000000?

Perché la variabile delayAmount verrà passata a delayMicroseconds() che è una funzione che mette in pausa il programma per un tempo, espresso in microsecondi, specificato dal parametro.

Domanda: ma in un secondo quanti microsecondi ci sono?

1 milione di microsecondi

Ecco spiegato l’arcano, poichè delayMicroseconds() accetta un parametro in microsecondi bisogna moltiplicare 1/frequencyInHertz per 1000000.

Domanda: cosa vuol dire (long) nell’istruzione:

long delayAmount = (long)(1000000/frequencyInHertz);

Per spiegare questa linea di codice devo parlarvi di Type-casting.
In C è possibile forzare il tipo di una variabile (int, long, float, …) in un altro tipo, utilizzando l’operatore “()

Ad esempio:

int a;
int b=67;
float c=3.14;
float d;
char lettera='M';

/* assegna il valore 3 (solo la parte intera) ad a */
a=(int)c

/* assegna il valore 77 (codice ASCII) ad a */
a=(int)lettera

/* assegna alla variabile d il valore di b, 67.0 (valore float) */
d=(float)b

In alcuni casi il Type-casting viene fatto automaticamente dal compilatore in altri casi bisogna specificarlo. Il Type-casting è una richiesta al compilatore di trasformazione di tipo.

Quando siamo in dubbio è buona norma eseguire il Type-casting.

Il Type-casting risulta utile ad esempio in una divisione:

int x, y;
float w;

w=(float)x/(float)y;

questa operazione assicura che la divisione sia in floating-point.

Tornando alla nostra istruzione:

long delayAmount = (long)(1000000/frequencyInHertz);

quando effettuiamo un passaggio di valore ad una funzione bisogna convertire long in (long , infatti delayAmount viene passata a delayMicroseconds.

Domanda: ma cos’è delayAmount?

è il periodo T della frequenza della nota.

Domanda: a cosa serve loopTime?

loopTime definisce il numero di volte in cui la nota deve essere suonata.

Infatti nel corpo del for:

digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);

si ha:

digitalWrite(speakerPin,HIGH);

viene messo ad alto l’uscita speakerPin (pin 9)

delayMicroseconds(delayAmount);

la nota viene suonata per un tempo delayAmount, periodo della della nota

l’uscita speakerPin (pin 9) viene portata a massa (spento)

digitalWrite(speakerPin,LOW);

per una quantità di tempo pari al periodo:

delayMicroseconds(delayAmount);

La variazione del timbro della nota avviene se utilizzate la modulazione di larghezza di impulso in inglese Pulse Width Modulation, in questo modo se il treno di impulsi è sufficientemente elevato l’orecchio umano non percepirà una sequenza di impulsi ma un suono costante.