Sensori Intelligenti e loro Applicazioni Guida per lo Studente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sensori Intelligenti e loro Applicazioni Guida per lo Studente"

Transcript

1 Sensori Intelligenti e loro Applicazioni Guida per lo Studente VERSIONE 1.0

2 GARANZIA La Parallax Inc. garantisce i suoi prodotti esenti da difetti nei materiali e nella mano d opera per un periodo di 90 giorni dalla data di ricezione del prodotto. Se riscontrate un difetto, Parallax Inc., a sua scelta, riparerà o sostituirà la merce, o rimborserà il prezzo di acquisto. Prima di rispedire il prodotto alla Parallax, telefonateci per ottenere un numero di Autorizzazione al Rientro della Merce (RMA). Scrivete il numero RMA all esterno della scatola utilizzata per rispedire la merce alla Parallax. Vi preghiamo di accludere assieme alla merce i seguenti dati::il vostro nome, il numero di telefono, l indirizzo di spedizione e una descrizione del problema riscontrato. La Parallax restituirà il vostro prodotto o il prodotto in sostituzione con lo stesso metodo di spedizione utilizzato per inviare il prodotto alla Parallax. GARANZIA DI RIMBORSO DEL DENARO ENTRO 14 GIORNI (Garanzia Soddisfatti o rimborsati) Se, entro 14 giorni dalla data di ricezione del prodotto, trovate che esso non soddisfa le vostre necessità, potete restituirlo per essere totalmente rimborsati. La Parallax Inc. rimborserà il prezzo di acquisto del prodotto, ad eccezione dei costi di spedizione/trattamento. Questa garanzia è nulla se il prodotto è stato modificato o danneggiato. Si veda il precedente capitolo Garanzia qui sopra per le istruzioni sulla restituzione di un prodotto alla Parallax. COPYRIGHT E MARCHI DI FABBRICA Questa documentazione ha il copyright 2006 della Parallax Inc. Scaricando dal sito o utilizzando una copia stampata di questo documento o software acconsentite che esso dovrà essere utilizzato esclusivamente con prodotti Parallax. Qualsiasi altro utilizzo non è consentito e può rappresentare una violazione dei copyright Parallax, punibile legalmente in base al copyright Federale o alle leggi sulla proprietà intellettuale. Qualsiasi duplicazione della documentazione per utilizzi commerciali è espressamente vietata dalla Parallax Inc. La duplicazione per uso didattico è consentita, alle condizioni seguenti: il testo, oppure qualsiasi sua parte, non può essere duplicato per utilizzo commerciale; può essere duplicato soltanto per scopi educativi quando si utilizzi unicamente assieme a prodotti Parallax, e l utente può esigere dallo studente soltanto i costi di riproduzione. Questo testo è disponibile in forma stampata dalla Parallax Inc. Poiché noi stampiamo il testo come volume, il prezzo al consumatore è spesso inferiore alle tariffe al dettaglio ordinarie richieste per la duplicazione. BASIC Stamp, Stamps in Class, Board of Education, Boe-Bot, SumoBot, SX-Key e Toddler sono marchi registrati della Parallax, Inc. HomeWork Board, Propeller, Ping))) Parallax, e il logo Parallax sono marchi di fabbrica della Parallax, Inc. Se decidete di utilizzare i marchi di fabbrica della Parallax Inc. nella vostra pagina web o in materiali stampati, dovrete affermare che "(marchio di fabbrica) è marchio di fabbrica (registrato) della Parallax Inc. fin dalla prima comparsa del nome del marchio di fabbrica in ciascun documento stampato o pagina web. Altri nomi di marche e prodotti sono marchi di fabbrica o marchi di fabbrica registrati dei loro rispettivi proprietari. ISBN SCARICO DI RESPONSABILITA La Parallax Inc. non è responsabile di danni speciali, occasionali o consequenziali che risultino da qualsiasi rottura di garanzia, o sotto qualsiasi tutela legale, compresi perdite di profitto, fermo tecnico, avviamento, danno o sostituzione di apparecchiature o proprietà, o qualsiasi costo di recupero, ri-programmazione, o riproduzione di qualsiasi dato memorizzato in, o utilizzato con, prodotti Parallax. La Parallax Inc. inoltre non è responsabile di qualsiasi danno a

3 persone, compresi i danni di vita e salute, che risultino dall utilizzo di qualsiasi nostro prodotto. Vi assumete la responsabilità completa per la vostra applicazione BASIC Stamp, indipendentemente dal fatto che essa possa essere di minaccia per la vostra vita. 3 RD RISTAMPA FORUM DI DISCUSSIONE SU INTERNET (WEB) Manteniamo in attività sul web forum di discussione per persone interessate a prodotti Parallax. Questi elenchi sono accessibili dal sito ERRATA Propeller chip Questo elenco è di uso specifico dei nostri clienti che usano i chip e i prodotti Propeller (Propulsori, eliche). BASIC Stamp Questo elenco è largamente utilizzato da ingegneri, hobbisti e studenti che condividono i loro progetti BASIC Stamp e pongano domande sull argomento. Stamps in Class Elenco creato per insegnanti e studenti, dove i sottoscrittori discutono l utilizzo del curriculum Stamps in Class curriculum nei loro corsi. L elenco fornisce una opportunità sia agli studenti che agli insegnanti di fare domande e ottenere risposte. Insegnanti Parallax Un forum private riservato esclusivamente agli insegnanti e a coloro che contribuiscono allo sviluppo del Stamps in Class. La Parallax ha creato questo gruppo per ottenere una risposta ai nostri curricula e per fornire un luogo dove gli educatori sviluppino ed ottengano le loro Guide per l Insegnante. Robotica Progettato per I robot Parallax, questo forum vuole essere un dialogo aperto tra gli entusiasti di robotica. Gli argomenti trattati comprendono l asseblaggio, il codice sorgente, gli ampliamenti, e gli aggiornamenti manuali. Qui si discute in dettaglio dei robot Boe-Bot, Toddler (principiante), SumoBot (lottatore di Sumo), HexCrawler (che striscia a esagono) e QuadCrawler (che striscia a quadrato). Microcontrollori SX e codice SX Discussione della programmazione di un microcontrollore SX con il linguaggio assemblatore SX Parallax Strumenti chiave e compilatori di terze parti BASIC e C. Javelin Stamp Discussione su applicazioni e progetti che utilizzano il Javelin Stamp, un modulo Parallax, programmato utilizzando un sottoinsieme del linguaggio di programmazione Java della Sun Microsystems. Anche se si fa un grosso sforzo per assicurare la correttezza dei nostri testi, possono ancora essere riscontrati errori. Se trovate un errore, vi preghiamo di comunicarcelo inviando una all indirizzo Ci sforziamo continuamente di migliorare tutti i nostri materiali e la nostra documentazione didattici, e rivediamo frequentemente i nostri testi. Qualche volta, viene immessa sul nostro sito web, una pagina di errata-corrige con un elenco di errori e correzioni noti per un dato testo. Vi preghiamo di controllare la pagina del download gratuito per il singolo prodotto, per controllare se esiste un file di Errata. We maintain active web-based discussion forums for people interested in Parallax products. These lists are accessible from

4

5 Indice Pagina i Indice Prefazione...iii Introduzione e nota dell autore... iii Panoramica v Prima di iniziare...v La serie didattica dei testi Stamps In Class... vi Traduzioni in altre lingue... vii Contributi speciali... vii Capitolo 1: Il display LCD seriale Parallax...1 Display LCD nei Prodotti... 2 Il display seriale LCD Parallax Il vostro terminale mobile di debug...2 Attività #1: Connessione e prova del LCD...4 Attività #2: Visualizzazione di semplici messaggi...8 Attività #3: Applicazione di Timer...18 Attività #4: Caratteri personalizzati e animazione del LCD Attività #5: Scorrimento di un testo attraverso il display Sommario...36 Capitolo 2: Il sensore ultrasonico di distanze Ping))) Come lavora il sensore Ping)))? Attività #1: Misura del tempo di eco Attività #2: Misure in centimetri Attività #3: Misure in pollici Attività #4: Misure in movimento Attività #5: Effetto della temperatura sulla velocità del suono Sommario...65 Capitolo 3: L accelerometro Memsic a due assi...69 L accelerometro MX2125 Come lavora Attività #1: Connessione e prova di inclinazione del MX Attività #2: Misure in movimento Attività #3: Riduzione in scala (scalatura) e spostamento (rispetto all origine) dei valori di ingresso (offset). 80 Attività #4: Dimensionamento a 1/100 g Attività #5: Misure di rotazione verticale a Attività #6: Misura dell inclinazione dalla posizione orizzontale Sommario Capitolo 4: Il modulo bussola Hitachi HM55B Interpretazione delle misure della bussola...127

6 Pagina ii Sensori intelligenti e loro applicazioni Attività #1: Connessione e prova del modulo bussola Attività #2: Taratura del modulo bussola Attività #3: Prova della taratura Attività #4: Miglioramento delle misure della bussola tramite media dei valori Attività #5: Misure in movimento Sommario Capitolo 5: Fondamenti base di gioco con l accelerometro Attività #1: Visualizzazione di caratteri grafici PBASIC Attività #2: Memorizzazione e suo ripristino con la EEPROM Attività #3: Inclinazione dle grafico a bolle Attività #4: Controllo di gioco Sommario Capitolo 6: Ulteriori progetti con l accelerometro Attività #1: Misura del altezza di edifici, alberi e altro Attività #2: Registrazione e riproduzione Attività #3: Utilizzo della EEPROM per cambiare modo di funzionamento Attività #4: Registrazione a distanza dei dati di accelerazione Attività #5: Studio della accelerazione di un automobile RC (a distanza) Attività #6: Studio del trucco di accelerazione di uno Skate-board Attività #7: Distanza in bicicletta Sommario Capitolo 7: Grafici a barre LCD per distanza e inclinazione Attività #1: Scorrimento di caratteri personalizzati Attività #2: Grafici a barre orizzontali per la distanza nel sensore Ping))) Attività #3: Grafici a barre a due assi per l inclinazione dell accelerometro Sommario Appendice A: Tavola del Codice ASCII Appendice B: Documentazione del LCD seriale Parallax Appendice C: Definizione dei caratteri esadecimali Appendice D: Elenco dei componenti Indice

7 Prefazione Pagina iii Prefazione INTRODUZIONE E NOTA DELL AUTORE La prima volta che ho visto utilizzare il termine "sensori intelligenti" è stato nel testo Applied Sensors di Tracy Allen (noto attualmente col titolo Earth Measurements). Tracy ha applicato attivamente questo termine al termometro digitale DS1620, che incorpora alcuni circuiti elettronici che semplificano le misure di temperatura del microcontrollore. In aggiunta, il termometro può ricordare le impostazioni che riceve da un microcontrollore e persino funzionare autonomamente da controllore di un termostato. In contrasto con i sensori intelligenti, i sensori primitivi sono dispositivi o materiali con alcune proprietà elettriche che cambiano in funzione di un determinato fenomeno fisico. Un esempio di sensore primitivo tratto da What's a Microcontroller? è il fotoresistore al solfuro di cadmio. La sua resistenza cambia al variare dell intensità della luce. Con un circuito e un programma adatti, il microcontrollore può effettuare misure di luce. Altri esempi di sensori primitivi di uso comune sono i sensori di temperature con uscita in corrente/voltaggio, i trasduttori di microfoni, e perfino il potenziometro, che è un sensore di posizione rotativa. All interno di ciascun sensore intelligente sono presenti uno o più sensori primitive e i relativi circuiti di supporto. La cosa che rende intelligente un sensore intelligente è l elettronica aggiunta, incorporata nel sensore. L elettronica rende questi sensori capaci di fare una delle cose elencate qui di seguito: Pre-elaborare i valori delle loro misure in quantità significative Comunicare le loro misure tramite segnali digitali e protocolli di comunicazione Organizzare le azioni di sensori e circuiti primitivi in modo che acquisiscano le misure Prendere decisioni e iniziare azioni basate su condizioni sentite, indipendenti dal microcontrollore Ricordare impostazioni di taratura o di configurazione Durante il mio primo contatto con un sensore intelligente, ho pensato tra me e me, "Uau, un kit completo di questi sensori intelligenti con un libro potrebbe essere REALMENTE interessante! Certamente spero che qualcuno faccia un kit e un libro del genere quanto prima..." Poco sapevo del fatto che "quanto prima" sarebbe finito per essere quasi sei anni più tardi, e che il "qualcuno" sarebbe capitato che fossi io. E se uno dei miei capi mi

8 Pagina iv Sensori intelligenti e loro applicazioni avesse detto prima che il kit doveva contenere un accelerometro, un rilevatore di percorso ad ultrasuoni, una bussola digitale e un LCD seriale per misure in movimento, avrei potuto semplicemente scollarmi. Dal momento che soltanto di recente era stato possibile per noi mettere assieme un gruppotanto imponente di componenti in un singolo kit, avrei dovuto dire che valeva la pena di aspettare. Nel mantenersi all altezza delle rimanenti opere didattiche sullo Stamps in Class, questo libro rappresenta una raccolta di attività (esercitazioni), alcune delle quali riguardano applicazioni di base, altre applicazioni più avanzate e alcune sono applicazioni dimostrative o blocchi costruttivi per vari prodotti e/o invenzioni. La prima metà del libro presenta ciascun sensore, assieme ad alcune misure in movimento visualizzate dal LCD. Successivamente, la seconda metà del libro riporta una quantità di applicazioni che possono essere direttamente sperimentate, come giochi video con inclinazioni, strumenti di misura personalizzati, e dispositivi diagnostici per impieghi in hobby e sport. Il limite di pagine per mantenere questi libri all interno delle nostre scatole di confezionamento è 350, ed è stato davvero difficile mantenere questo valore. Si possono trovare attività aggiuntive sui sensori intelligenti per il robot Boe-Bot nel forum Stamps in Class al sito Mentre questo libro copre i fondamenti di base e dimostra alcune applicazioni di ò fare esempio, esso sfiora abbastanza superficialmente quanto si può fare con questi dispositivi. Lo scopo principale di questo libro è fornire alcuni mattoni e idee per progetti e invenzioni future da fare in classe.. ad esempio, dopo aver completato il capitolo 3, Kris Magri, revisore editoriale del nostro libro, mise la sua Board of Education con l accelerometro e il LCD sul cruscotto della sua auto, e adesso la sua auto ha un misuratore dell accelerazione in pianura oltre al tachimetro. Con poche modifiche al codice del programma, si può rendere questo un sistema di allarme di ribaltamento per un veicolo a 4 ruote motrici. Dopo aver osservato un dispositivo di osservazione meccanico utilizzato per predire il verificarsi di valanghe in aree montagnose basandosi sull inclinazione delle colline, Ken Gracey si mise all opera e costruì la versione digitale in una sola notte con le stesse parti installate sul cruscotto dell auto di Kris. I misuratori di accelerazione e rischio di valanghe da cruscotto sono soltanto due degli esempi romanzeschi del gran numero di applicazioni, progetti e invenzioni che il kit e il testo sui Sensori Intelligenti possono suggerire. Ci piacerebbe vedere cosa fate col vostro kit sul forum Stamps in Class. Non importa se pensate che il vostro progetto risulti semplice, unico, banale o quant altro. Spendete pochi minuti per inviare quello che avete fatto con questi sensori intelligenti al sito

9 Prefazione Pagina v Stamps in Class. Assicuratevi di includere qualche istantanea, una breve descrizione e preferibilmente lo schema e il programma PBASIC. Divertitevi con questo kit e con il libro, e noi aspettiamo di vedere le vostre invenzioni sul forum Stamps in Class. PANORAMICA Il kit di sensori intelligenti contiene quattro dispositivi che, quando si utilizzano con il BASIC Stamp e la scheda Board of Education o la scheda HomeWork, possono essere i mattoni costruttivi di una gran varietà di invenzioni e progetti di studenti. Ecco l elenco dei dispositivi: LCD seriale 2x16 Parallax Rilevatore (sensore) Ultrasonico di distanze Ping))) Accelerometro Memsic 2125 a due assi Modulo bussola Hitachi HM55B Oltre a fornire sia le apparecchiature che le informazioni sui modi di usarle nei progetti degli studenti, questo testo ha evidenziato due argomenti principali che forniscono teoria, esempi, e calcoli richiesti, utilizzabili per effettuare una gran varietà di misure, con fisica/ingegneria e concetti di trigonometria. Questi argomenti evidenziati sono: Tecniche matematiche per convertire i valori grezzi dei sensori in misure che siano significative perché espresse in sistemi di unità di misura usati abitualmente Interpretazione dei campi vettoriali gravitazionale e magnetico su un sistema di assi Cartesiani sensibili. PRIMA DI INIZIARE Per effettuare gli esperimenti presenti in questo testo, vi occorre la vostra scheda (o basetta) Board of Education, o la HomeWork, connessa al vostro computer; inoltre, occorre aver installato il software editore BASIC Stamp, e aver verificato che ci sia comunicazione tra il vostro computer e il vostro BASIC Stamp. Per istruzioni dettagliate, vedere il testo Che cos è un microcontrollore? (What s a Microcontroller?) disponibile per essere scaricato gratuitamente dal sito Avrete anche bisogno dei componenti contenuti nel Kit Componenti dei Sensori Intelligenti. Vedere l appendice D per l elenco completo dei requisiti di sistema, software e hardware.

10 Pagina vi Sensori intelligenti e loro applicazioni LA SERIE DIDATTICA DEI TESTI STAMPS IN CLASS La serie di testi e kit Stamps in Class fornisce risorse affidabili per insegnare elettronica e ingegneria. Tutti i libri elencati sono disponibili per lo scarico gratuito dal sito Le versioni citate qui sotto sono quelle correnti al momento della stampa di questo testo. Vi preghiamo di controllare i nostri siti web o per trovare le ultime revisioni; noi facciamo continuamente ogni sforzo per migliorare il nostro programma didattico. Guide per lo Studente Stamps in Class: Cos è un microcontrollore? (What s a Microcontroller?) è il testo raccomandato come testo introduttivo della serie didattica Stamps In Class. Alcuni studenti partono, invece con Robotica con il Boe-Bot (Robotics with the Boe-Bot), anch esso scritto per i principianti. What s a Microcontroller?, Student Guide, Version 2.2, Parallax Inc., 2004 Robotics with the Boe-Bot, Student Guide, Version 2.2, Parallax Inc., 2004 Robotica con il Boe-Bot, Guida per lo studente, Vers. 2.1, Parallax Inc., 2002 Potete proseguire con altri argomenti del vostro progetto didattico, oppure desiderate esplorare i nostri altri Kit di Robotica. Kit di Progetto didattico: I seguenti testi e kit forniscono una varietà di attività utili per hobbyisti, inventori e progettisti di prodotti interessati a sperimentale una vasta gamma di progetti. Smart Sensors and Applications, Student Guide, Version 1.0, Parallax Inc., 2006 Sensori intelligenti e loro applicazioni, Guida per lo Studente, Versione 1.0, Parallax Inc., 2009 Process Control, Student Guide, Version 1.0, Parallax Inc., 2006 Applied Sensors, Student Guide, Version 1.3, Parallax Inc., 2003 Basic Analog and Digital, Student Guide, Version 1.3, Parallax Inc., 2004 Understanding Signals, Student Guide, Version 1.0, Parallax Inc., 2003

11 Prefazione Pagina vii Kit di Robotica: Per fare esperienza con la robotica, prendete in considerazione di continuare con le seguenti guide per lo studente Stamps in Class, ciascuna delle quali ha un corrispondente kit di robot: IR Remote for the Boe-Bot, Student Guide, Version 1.1, Parallax Inc., 2004 Applied Robotics with the SumoBot, Student Guide, Version 1.0, Parallax Inc., 2005 Advanced Robotics: with the Toddler, Student Guide, Version 1.2, Parallax Inc., 2003 Riferimenti Questo libro è il riferimento essenziale per tutte le Guide per lo Studente Stamps in Class. E accompagnato dalle informazioni sulla serie di moduli microcontrollori BASIC Stamp, il nostro editor BASIC Stamp, e i nostril linguaggi di programmazione PBASIC. Manuale del BASIC Stamp, Versione 2.2, Parallax Inc., 2005 TRADUZIONI IN ALTRE LINGUE I testi didattici Parallax possono essere tradotti in alter lingue con il nostro permesso (scrivere per a Se pianificate di fare qualsiasi traduzione vi preghiamo di prendere contatto con noi, così potremo fornirvi correttamente in formato MS Word documenti, immagini, etc. Abbiamo anche un gruppo di discussione privato per i traduttori Parallax al quale potrete unirvi. Ciò vi assicurerà di essere mantenuto al corrente sulle nostre frequenti revisioni dei testi. CONTRIBUTI SPECIALI La Parallax Inc. è lieta di presentare i membri della sua Squadra Didattica: Direttore di Progetto Aristides Alvarez, Illustratore Tecnico Rich Allred, Progettista Grafico Larissa Crittenden, Revisore Tecnico Kris Magri, e Editor Tecnico Stephanie Lindsay. In aggiunta, si ringrazia il cliente Steve Nicholson per l esecuzione di prova della maggior parte delle attività. Come sempre, ringraziamenti speciali vanno a Ken Gracey, il fondatore del programma educativo Stamps in Class della Parallax Inc..

12 Pagina viii Sensori intelligenti e loro applicazioni

13 Capitolo 1: Il display LCD seriale Parallax Pagina 1 Capitolo 1: Il Display Seriale LCD Parallax Visualizzare in formato leggibile le informazioni che un sensore invia ha molti usi, e in alcune applicazioni, è tutto ciò che conta. Il termometro digitale è un esempio comune che si può trovare in molte famiglie. Dentro ciascun termometro digitale, c è una sonda per la temperatura, un microcontrollore, e un display (visualizzatore) a cristalli liquidi (LCD) per visualizzare le misure. Il microcontrollore BASIC Stamp e il LCD seriale Parallax mostrati in Figura 1-1 possono fornire gli elementi microcontrollore e display per questo tipo di prodotto. Questo allestimento è inoltre molto buono per la visualizzazione di misure in movimento, rendendo possibile scollegare la vostra scheda dal PC e dal Terminale di Debug e collaudare sul campo il vostro sensore intelligente. Figura 1-1: BASIC Stamp, Board of Education, e LCD Seriale Parallax Le attività in questo capitolo introducono alcune caratteristiche di base del LCD Parallax, come la connessione del LCD al BASIC Stamp, la sua accensione e spegnimento, il posizionamento del suo cursore, e la visualizzazione di testo e cifre. I capitoli successivi vi insegneranno a creare ed animare caratteri personalizzati e visualizzare messaggi che scorrono.

14 Pagina 2 Sensori intelligenti e loro applicazioni DISPLAY LCD NEI PRODOTTI I prodotti mostrati nella Figura 1-2 hanno tutti un display a cristalli liquidi. Essi sono di facile lettura, e quelli più piccoli consumano una potenza molto piccola. Pensate a quanti prodotti possedete con display a cristalli liquidi. Pensate anche, mentre eseguite queste attività nei vari progetti BASIC Stamp, ai prototipi e alle invenzioni che avete incontrato nel vostro lavoro, e a come un LCD seriale può enfatizzare o aiutare il completamento di tali progetti. Figura 1-2: Esempi di prodotti con Display LCD In senso orario da sinistra in alto: telefono cellulare, unità GPS portatile, calcolatore, multimetro digitale, orologio da ufficio, notebook, oscilloscopio, telefono da ufficio. IL DISPLAY SERIALE LCD PARALLAX IL VOSTRO TERMINALE MOBILE DI DEBUG Se avete lavorato con uno qualsiasi degli altri testi Stamps in Class, vi sarà probabilmente familiare che strumento di valore possa essere il terminale di Debug. Il terminale di

15 Capitolo 1: Il display LCD seriale Parallax Pagina 3 Debug è una finestra che potete utilizzare per far visualizzare al vostro computer i messaggi che riceve dal BASIC Stamp. E utile in modo particolare per visualizzare i messaggi diagnostici e i valori variabili, e rende agevole isolare le pecche dei programmi. E inoltre uno strumento molto maneggevole per provare i circuiti, i sensori e altro ancora. Il terminale di Debug ha uno svantaggio, cioè la connessione tramite un cavo seriale. Considerate quante volte non sia stato conveniente dover avere la vostra scheda connessa al computer per provare un sensore, oppure cercare cosa sta vedendo il robot Boe-Bot con i suoi rilevatori di oggetti a infrarossi in un altra stanza. Sono tutte situazioni cui si può porre rimedio con il LCD seriale Parallax mostrato in Figura 1-3. Non appena avrete costruito un circuito di controllo di un sensore sulla Board of Education, potrete utilizzare una batteria e il LCD seriale Parallax per prendere le impostazioni lontani quanto vorrete dalla vostra stazione di programmazione, visualizzando nel frattempo le misure del sensore e altre informazioni diagnostiche. Figura 1-3 LCD Seriale Parallax (2 16) Il LCD Seriale Parallax 2 16 ha due righe larghe sedici caratteri per la visualizzazione di messaggi. Il display è controllato dal BASIC Stamp tramite messaggi seriali. Il BASIC Stamp invia questi messaggi da un singolo piedino di I/O pin connesso all ingresso seriale del LCD. Ce ne sono due versioni, standard e retro-illuminato: Versione # di Parte Parallax Standard Retro-illuminato LCD Seriali oppure Paralleli Il tipo più frequente di LCD è il LCD Parallelo. Esso richiede tipicamente un minimo di 6 piedini I/O per il controllo da parte del BASIC Stamp. Inoltre, fin quando non utilizziate un BASIC Stamp 2p, 2pe, o 2px, il codice per controllarli tende ad essere più complesso del codice per il LCD seriale. Il LCD seriale è in realtà soltanto un LCD parallelo con un microcontrollore extra. Il microcontrollore extra sul LCD seriale converte i messaggi seriali dal BASIC Stamp in messaggi paralleli che controllano il LCD parallelo.

16 Pagina 4 Sensori intelligenti e loro applicazioni ATTIVITA #1: CONNESSIONE E PROVA DEL LCD Assieme alle connessioni elettriche e ad alcuni semplici programmi PBASIC di prova per il LCD Seriale Parallax, questa attività vi presenta il comando SEROUT. Essa serve anche a dimostrare come il commando DEBUG sia soltanto un caso particolare di SEROUT. ciò è particolarmente utile per lavorare con il vostro LCD seriale perché potete prendere molti degli argomenti del commando DEBUG e utilizzarli con il comando SEROUT per controllare e preformare le informazioni che il vostro LCD visualizza. Componenti richiesti (1) LCD seriale Parallax 2 16 (3) Cavallotti di filo In aggiunta al LCD seriale Parallax e ai tre fili, sarà particolarmente importante avere la documentazione del LCD seriale Parallax (inclusa in questo testo come Appendice B). Sebbene siano appena poche pagine, essa contiene un lungo elenco di valori che dovrete inviare al vostro LCD per fargli eseguire funzioni simili a quelle che avete utilizzato con il terminale di Debug. Il controllo del cursore, i ritorni carrello, i comandi cancella schermo e così via, hanno tutti i loro codici speciali. In alcuni casi, questi codici sono identici a quelli per il terminale di Debug; in altri casi, sono del tutto differenti. Costruzione del circuito per il LCD seriale Connettere il LCD seriale Parallax al BASIC Stamp è meravigliosamente semplice, come mostra la Figura 1-4. Vi serve di fare soltanto tre connessioni: una per la alimentazione, una per la terra, e una per il segnale. Il piedino RX del LCD è quello del segnale e dovrà essere connesso ad un piedino I/O del BASIC Stamp. In questa attività, utilizzeremo il piedino P14. Il piedino GND (terra) del LCD dovrà essere connesso a Vss sulla Board of Education, e il piedino 5 V del LCD dovrà essere connesso a Vdd. ATTENZIONE: Gli errori di cablaggio possono danneggiare questo LCD. La Rev D e i modelli precedenti di questo LCD avevano cinque piedini. Se avete un modello a 5 piedini, vi preghiamo di vedere la Figura B-1 a pagina 335 per verificare i piedini corretti da utilizzare nei circuiti descritti in questo libro. La versione a cinque piedini NON è compatibile nei piedini con i modelli Scott Edwards o Matrix Orbital. Se avete utilizzato in precedenza altre marche di LCD seriali, state in guardia perché la piedinatura del LCD è diversa. Non fate l errore di utilizzare lo stesso cablaggio utilizzato per gli altri modelli.

17 Capitolo 1: Il display LCD seriale Parallax Pagina 5 Togliete energia alla vostra Board of Education. Connettete lo zoccolo Vss della Board of Education al piedino GND del LCD. Connettete lo zoccolo P14 della Board of Education's al piedino RX del LCD, come mostrato in Figura 1-4. Connettete lo zoccolo Vdd della Board of Education al piedino 5V del LCD Non ridate ancora energia. Figura 1-4: Schema elettrico e Diagramma di cablaggio LCD Parallax

18 Pagina 6 Sensori intelligenti e loro applicazioni Prova del LCD Seriale Il LCD seriale Parallax ha un modo per la prova automatica (auto-prova) che potrete utilizzare per assicurarvi che è in ordine di lavoro e che il suo contrasto è predisposto in modo adeguato. La Figura 1-5 mostra la parte posteriore (inferiore) del modulo LCD. Gli interruttori etichettati SW1 e SW2 servono per il modo auto-prova e per la regolazione della velocità di trasmissione, e inoltre è presente un potenziometro per la regolazione del contrasto, etichettato INCREASE CONTRAST ( AUMENTA CONTRASTO ). Figura 1-5 Moduleo LCD Vista posteriore L alimentazione della vostra scheda deve essere ancora spenta. Trovate SW1 e SW2 sul lato inferiore del modulo LCD mostrato in Figura 1-6. Ponete SW1 off. Ponete SW2 off. Ridate adesso l alimentazione. Figura 1-6 Porre gli interruttori della velocità di trasmissione al modo auto-prova Quando ridate tensione, il LCD deve visualizzare il testo "Parallax, Inc." sulla riga superiore (Riga 0) e "www.parallax.com" sulla riga inferiore (Riga 1), come potrete anche vedere nella Figura 1-3. Se lasciate il LCD in questo modo per un po, apparirà un carattere familiare retaggio dei video giochi del 1980, che mangerà tutto il testo.

19 Capitolo 1: Il display LCD seriale Parallax Pagina 7 Se il display appare scuro o sembra vuoto, c è un potenziometro di regolazione del contrasto mostrato nella Figura 1-7 che potrete girare con un cacciavite. Se il display è già chiaro e tutti i caratteri appaiono bene, probabilmente non dovrete regolarlo. Se i caratteri sono troppo poco visibili, o appaiono in scatole grigie, la regolazione del potenziometro dovrebbe aiutarvi. Se occorre, regolate il potenziometro del contrasto. Figura 1-7 Potenziometro di regolazione del contrasto Regolazione del LCD per ricevere messaggi dal BASIC Stamp La comunicazione seriale comporta una velocità di trasmissione (in baud).questa è il numero di bit per secondo (bps) che colui che invia trasmette, e chi riceve deve essere pronto a ricevere i dati alla stessa velocità in baud. Nelle attività di questo capitolo, il BASIC Stamp sarà programmato per inviare messaggi al LCD a 9600 bps. Potrete regolare gli stessi interruttori che avete utilizzato per la auto-prova del LCD per impostare la velocità di trasmissione. Togliete l alimentazione alla Board of Education. Lasciate lo SW1 in posizione OFF. Ponete lo SW2 in ON come mostrato in Figure 1-8. Adesso ridate l alimentazione. Lo schermo del display rimarrà vuoto fin quando non programmate che il BASIC Stamp 2 controlli il display.

20 Pagina 8 Sensori intelligenti e loro applicazioni Figure 1-8 Interruttori della velocità di trasmissione a 9600 bps La Figura 1-9 mostra la tabella dei modi stampata sulla parte posteriore del LCD seriale Parallax. Se volete inviare un messaggio a velocità diverse da quella prevista, (2400 o bps), utilizzate questa tabella e regolate SW1 e SW2 di conseguenza. Figura 1-9 Predisposizione degli interruttori per la velocità di trasmissione ATTIVITA #2: VISUALIZZAZIONE DI SEMPLICI MESSAGGI Come accennato prima, i comandi che inviano testo, numeri, caratteri di formato e codici di controllo (caratteri di controllo) ad un LCD seriale sono collegati al comando DEBUG. Infatti, il commando DEBUG è soltanto una versione speciale di un comando più generale chiamato SEROUT. Il comando SEROUT ha parecchi usi, alcuni dei quali comprendono l invio di messaggi agli LCD seriali, ad altri moduli BASIC Stamp, e a computer. In questa attività, programmerete il BASIC Stamp per far visualizzare al LCD messaggi di testo e valori numerici. Come primo passo verso le animazioni, modificherete anche i programmi per far lampeggiare testo e numeri on e off. Il comando SEROUT sarà il vostro strumento per effettuare queste operazioni. Utilizzerete il comando SEROUT per inviare al LCD Parallax seriale testo, numeri, codici di controllo e caratteri di formato. Come vedrete presto, il testo, i numeri, e i caratteri di formato sono identici a quelli che avete utilizzato con il comando DEBUG. I codici di controllo sono un po diversi ma, con un pò di pratica, risulteranno altrettanto facili da usare di CR, CLS, HOME, e CRSRXY. (Se non

21 Capitolo 1: Il display LCD seriale Parallax Pagina 9 avete familiarità con CRSRXY, potrete imparare di più su di esso nel Capitolo 5, Attività #1.) La versione minima della sintassi del comando SEROUT appare come questa: SEROUT Piedino, BaudMode, [ Elemento Dati, {Elemento dati,...} ] Nei nostril programmi, l argomento Piedino deve essere 14 visto che il piedino RX (ricevi dato) del LCD è connesso al piedino I/O P14 del BASIC Stamp. L argomento BaudMode è un valore che dice al BASIC Stamp quanto velocemente dovrà mandare i dati seriali, e determina di conseguenza alcune caratteristiche del segnale seriale. Il programma di aiuto dell Editor del BASIC Stamp ha delle tabelle che danno i valori BaudMode per le velocità di trasmissione e i segnali più comuni. Ne segue che 84 è l argomento BaudMode per la velocità di 9600 bits per secondo (bps), 8 bit dati, nessuna parità, segnale vero. Questo è esattamente ciò che il LCD seriale Parallax è progettato per ricevere. Gli argomenti Elemento dati possono essere testo tra virgolette come "Ciao". Possono essere anche caratteri di controllo come CR, CLS, o valori, con o senza caratteri di formato come DEC, BIN, e?. Se essi sono inviati con caratteri di formato, saranno inviati come i caratteri che rappresentano il valore. Se sono inviati senza caratteri di formato, saranno inviati come valori, come 22, 12, e 13. Possiamo inviare valori senza formato come questi al LCD, che li interpreterà come codici di controllo.

22 Pagina 10 Sensori intelligenti e loro applicazioni Ancora sul commando SEROUT Se volete provare ad usare il terminale di Debug con il SEROUT invece del DEBUG, prima di tutto apritelo dalla barra degli strumenti via Run Debug New. Successivamente, scegliere Run Identify per vedere quale porta sta utilizzando il vostro BASIC Stamp. Quindi, nel terminale di Debug, impostate la porta Com perché corrisponda a quella del BASIC Stamp. Notare che potete anche cambiare la velocità di trasmissione del terminale di Debug e gli altri parametri di comunicazione. C è ancora una quantità di cose da apprendere sul comando SEROUT. Sia il Manuale BASIC Stamp Manual che la Guida ala Sintassi PBASIC dell Editor del BASIC Stamp danno una copertura estesa del comando SEROUT. Il manuale BASIC Stamp Manual è disponibile per lo scarico gratuito dal sito Downloads Documentation. Se il vostro Editor BASIC Stamp supporta la versione PBASIC 2.5, probabilmente avrete già la guida della Sintassi PBASIC. Per accedervi, scegliete semplicemente l indice dal menu di aiuto dell Editor BASIC Stamp Editor. Semplici Messaggi di testo e Codici di Controllo Al contrario del terminale di Debug, il LCD seriale dev essere acceso tramite un commando dal BASIC Stamp. Per attivare il suo display (schermo), il LCD deve ricevere il valore 22 dal BASIC Stamp. Ecco il comando PBASIC che invia il valore 22 al LCD seriale: SEROUT 14, 84, [22] Usato in questo modo, 22 è un esempio di un codice di controllo del LCD. Ecco un elenco di alcuni ulteriori codici di controllo di base: 12 cancella lo schermo del display. Nota: va sempre seguito dal commando PAUSE 5 per dare al LCD tempo per cancellare lo schermo. 13 è il ritorno carrello; esso manda il cursore alla riga successiva. 21 spegne il LCD. 22 accende il LCD.

23 Capitolo 1: Il display LCD seriale Parallax Pagina 11 Comandi per accendere e spegnere la retro-illuminazione (solo per il LCD retroilluminato): Alcuni LCD hanno la retro-illuminazione in modo che si possa leggerli al buio. Se avete la versione retro-illuminata del LCD seriale Parallax (numero di componente 27977), potete controllare la retro-illuminazione con questi valori: 17 accende la retro-illuminazione. 18 spegne la retro-illuminazione. In PBASIC, CR è una costante predefinita di valore 13. Ogni volta che si utilizza la costante CR in un comando DEBUG, questo invia il valore 13 al terminale di debug. Il terminale di debug muove il cursore all inizio della riga successive ogni volta che riceve il valore 13. In questo caso, i due comandi qui sotto sono equivalenti: SEROUT 14, 84, ["Vedi il testo?", CR, "Il LCD lavora!"] SEROUT 14, 84, ["Vedi il testo?", 13, "Il LCD lavora!"] Mentre questa equivalenza lavora con CR, non lavora con altre costanti PBASIC predefinite. Ad esempio, CLS, che è una costante predefinita con il numero 0, non cancella lo schermo del LCD. L equivalente di CLS per il LCD seriale Parallax è 12. Analogamente, HOME, costante predefinita con il valore 1, non invia il cursore a inizio pagina home, sul primo carattere in alto a sinistra nel display LCD. Il codice di controllo 128 fa questo per il LCD seriale Parallax. Programma di esempio - ProvaMessaggiLcd.bs2 Digitate, memorizzate, ed eseguite ProvaMessaggiLcd.bs2. Verificate che esso visualizzi il messaggio "Vedi il testo?" sulla Riga 0 e "Il LCD lavora!" sulla Riga 1, come nella Figura ' Sensori Intelligenti e loro Applicazioni - ProvaMessaggiLcd.bs2 ' Visualizza un messaggio di prova sul LCD seriale Parallax. ' {$STAMP BS2} ' Dispositivo scelto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Linguaggio = PBASIC 2.5 SEROUT 14, 84, [22, 12] PAUSE 5 ' Inizializza il LCD SEROUT 14, 84, ["Vedi il testo? Il ", 13, ' Messaggio di testo, rit. carrello " LCD lavora!"] ' altro testo sulla Riga 1. END ' Fine programma

24 Pagina 12 Sensori intelligenti e loro applicazioni Vedi il testo? Il LCD lavora! Figura 1-10 Visualizzazione di testo Se il LCD non visualizza in modo corretto: Controllare almeno due volte il proprio cablaggio, il programma scritto, e le impostazioni degli interruttori nel retro del LCD. Inoltre tentare di scollegare e collegare le batterie della vostra Board of Education. Se necessario, rivedere le istruzioni, marcate con un segno di spunta, che hanno portato a questo programma, e verificare che ciascuna di esse sia stata completata in modo corretto. Il vostro turno Codici di controllo per far lampeggiare il Display Ricordate che 22 accende il display, e 21 lo spegne? Potete usare questi codici di controllo per far lampeggiare il testo (acceso spento). Sostituite il commando END nel ProvaMessaggiLcd.bs2 con questo blocco di codice. DO PAUSE 600 SEROUT 14, 84, [22] PAUSE 400 SEROUT 14, 84, [21] LOOP ' Inizia un blocco DO...LOOP ' ritardo di 6/10 di secondo ' Accende il display ' ritardo di 4/10 di secondo ' Spegne il display ' Ripete il blocco DO...LOOP Eseguite il programma modificato e prendete nota dell effetto. Visualizzazione di numeri con caratteri di formato La maggior parte dei caratteri di formato che hanno lavorato per la visualizzazione di numeri con il terminale di Debug possono essere utilizzati anche con il LCD seriale Parallax. Il carattere di formato DEC è probabilmente il più utile, ma potrete anche usare DIG, REP, ASC, BIN, HEX, SDEC, e gran parte degli altri. Ad esempio, se volete visualizzare il valore decimale di una variabile chiamata contatore, potete usare un comando del tipo:

25 Capitolo 1: Il display LCD seriale Parallax Pagina 13 SEROUT 14, 84, [DEC contatore] Programma esempio ProvaNumeriLcd.bs2 A parte il dimostrare che potete visualizzare valori variabili sul LCD seriale, questo programma mostra anche cosa avviene se il programma invia più di 16 caratteri stampabili sulla Riga 0. Esso va a capo sulla Riga 1. Inoltre, dopo aver stampato altri sedici caratteri e riempito la Riga 1, il testo continua ad andare a capo, tornando sulla Riga 0. Digitate, memorizzate, ed eseguite ProvaNumeriLcd.bs2 ' Sensori intelligenti e loro applicazioni - ProvaNumeriLcd.bs2 ' Visualizza valori numerici con il LCD seriale Parallax. ' {$STAMP BS2} ' Dispositivo scelto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Linguaggio = PBASIC 2.5 contatore VAR Byte ' Indice del ciclo FOR...NEXT SEROUT 14, 84, [22, 12] PAUSE 5 FOR contatore = 0 TO 12 ' Inizializza il LCD ' ritardo di 5 ms per cancellare il ' display ' Conta fino a 12; incrementi di 1/2 s SEROUT 14, 84, [DEC contatore, " "] PAUSE 500 NEXT END ' Fine programma Verificate che il display rassomigli alla Figura 1-11.

26 Pagina 14 Sensori intelligenti e loro applicazioni Figura 1-11 Visualizzazione di numeri Il vostro turno Altri caratteri di formato Provate a sostituire DEC con DEC2 e osservate cosa succede. Ripetere col carattere di formato?. Se necessario, controllare questi comandi sia nel Manuale BASIC Stamp, sia nell aiuto del Editor BASIC Stamp. Provateli anche nel terminale di Debug. Quali somiglianze e quali differenze ci sono tra l uso di questi caratteri di formato nel terminale di Debug e il loro uso nel LCD seriale Parallax? Codici di controllo per posizionare il cursore I codici di controllo del LCD sono diversi dai caratteri di controllo del comando DEBUG. Ad esempio, HOME, e CRSRXY non hanno proprio lo stesso effetto che producono col terminale di Debug. Però, ci sono comandi del cursore del LCD seriale Parallax che potrete usare per controllare le coordinate X e Y del cursore. Potete anche mandare il cursore nella "posizione home" in alto a sinistra. Guardate il capitolo Insieme dei Comandi della documentazione del LCD (Appendice B) che inizia a pagina 341. Esso elenca tutti i comandi di controllo validi per il LCD; dei quali riportiamo qui sotto alcuni esempi presi dall elenco che controllano la posizione del cursore. 8 Cursore a sinistra 9 Cursore a destra 10 Cursore giù (la riga inferiore scorre alla riga superiore) 128 a 143 Posizione del cursore sulla Riga 0, carattere da 0 a a 163 Posizione del cursore sulla Riga 1, carattere da 0 a 15

27 Capitolo 1: Il display LCD seriale Parallax Pagina 15 I valori da 128 a 143 e da 148 a 163 sono particolarmente utili. La Figura 1-12 mostra cove ciascun valore posiziona il cursore. Potete usare i valori da 128 a 143 per posizionare il cursore ai caratteri da 0 a 15 sulla riga superiore del LCD (Riga 0). Analogamente, potete usare i valori da 148 a 163 per posizionare il cursore sui caratteri da 0 a 15 della riga inferiore (Riga 1). Figura 1-12 Visualizzazione di testo Dopo aver posizionato il cursore, il carattere successivo che inviate al LCD sarà visualizzato in quella posizione. Ad esempio, ecco un comando SEROUT con il valore dell argomento opzionale Pace impostato a 200 ms. Questo comando visualizzerà i caratteri "R", "I", "G", "A", "-", e "0", ugualmente spaziati sulla riga superiore, un carattere ogni 200 ms. SEROUT 14, 84, 200, [128, "R", 131, "I", 134, "G", 137, "A", 140, "-", 143, "0"] Se si stanno visualizzando molti caratteri dopo aver dato una posizione iniziale, il LCD farà ancora spostare automaticamente il cursore a destra dopo ciascun carattere. Ad esempio, potete anche posizionare il cursore sul carattere 7 della riga superiore e quindi visualizzare "TUTTO", poi muovere il cursore al carattere 6 della riga superiore e visualizzare "FATTO!" con l istruzione che segue:

28 Pagina 16 Sensori intelligenti e loro applicazioni SEROUT 14, 84, [135, "TUTTO", 154, "FATTO!"] Il seguente blocco di codice farà scorrere il testo "Riga 1" sulla riga inferiore del display, da destra a sinistra. FOR indice = 9 TO 0 ' IMPORTANTE: Lasciare uno spazio dopo 1 in "Riga 1 " SEROUT 14, 84, [148 + indice, "Riga 1 "] PAUSE 100 NEXT Cancellazione di caratteri Potete sempre cancellare un carattere posizionando il cursore dove lo volete e poi inviando un carattere spazio " " per sovrascrivere qualsiasi carattere possa essere là. E per tale motivo che il testo "Riga 1 " ha uno spazio dopo il carattere "1", per cancellare i caratteri alla sua destra man mano che il testo si nuove a sinistra. Programma Esempio - PosizioniCursore.bs2 Questo programma mostra alcuni artifici base per il posizionamento del cursore. Esaminare il programma PosizioniCursore.bs2 e tentare di prevedere quale comportamento il programma produrrà sul display LCD. Tentare anche di prevederne la sequenza e la temporizzazione. Digitare, memorizzare, ed eseguire PosizioniCursore.bs2. Confrontare il comportamento del display LCD con le vostre previsioni. ' Sensori Intelligenti e loro Applicazioni - PosizioniCursore.bs2 ' Visualizza valori numerici sul LCD seriale Parallax. ' {$STAMP BS2} ' Dispositivo scelto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Linguaggio = PBASIC 2.5 indice VAR Nib ' Indice del ciclo FOR...NEXT carattere VAR Byte ' Memoria deposito del carattere offset VAR Byte ' Valore dello spostamento SEROUT 14, 84, [22, 12] PAUSE 500 ' Inizializza il LCD ' Ritardo di 1/2 secondo ' Visualizza caratteri con uguale spaziatura sulla Riga 0 ogni 200 ms. SEROUT 14, 84, 200, [128, "R", 131, "I", 134, "G", 137, "A",

29 Capitolo 1: Il display LCD seriale Parallax Pagina 17 PAUSE , "-", 143, "1"] ' Sposta "Riga 1" sulla Riga 1 da destra a sinistra, quindi da sinistra a ' destra. FOR indice = 9 TO 0 ' IMPORTANTE: Assicurarsi che ci sia uno spazio dopo l 1 in "Riga 1 ". SEROUT 14, 84, [148 + indice, "Riga 1 "] PAUSE 100 NEXT FOR indice = 0 TO 9 ' IMPORTANTE: Assicurarsi che ci sia uno spazio tra le " e il carattere R. SEROUT 14, 84, [148 + indice, " Riga 1"] PAUSE 250 NEXT PAUSE 1000 ' Ritardo di 1 secondo ' Cancella il LCD, quindi visualizza "TUTTO FATTO!" al centro e lampeggia per ' 5 volte SEROUT 14, 84, [12]: PAUSE 5 ' Cancella il LCD SEROUT 14, 84, [135, "TUTTO", 13, 154, "FATTO!"] ' "TUTTO" e "FATTO" sono centrati FOR indice = 1 TO 4 SEROUT 14, 84, 500, [21, 22] NEXT END ' Fa lampeggiare il display 5 volte ' Fine programma Il vostro turno Ulteriori posizionamenti Con i cicli e le tabelle di ricerca si possono ottenere visualizzazioni più elaborate. Il programma che segue è un esempio di visualizzazione della parola "T E S T" in un ciclo e con l aiuto di due comandi LOOKUP. Si noti che si può controllare la posizione del punto in cui ciascun carattere è posto regolando i valori di offset nell elenco dei valori del secondo comando LOOKUP. PAUSE 1000 SEROUT 14, 84, [12]: PAUSE 5 ' Cancella il display SEROUT 14, 84, ["Questo è un", 13] ' Testo e CR FOR indice = 0 TO 3 ' Sequenza di visualizzazione dei ' caratteri PAUSE 600 LOOKUP indice, ["T", "E", "S", "T"], carattere LOOKUP indice, [ 1, 5, 9, 13], offset SEROUT 14, 84, [(148 + offset), carattere]

30 Pagina 18 Sensori intelligenti e loro applicazioni NEXT Provate il programma! ATTIVITÀ #3: APPLICAZIONE DI UN TEMPORIZZATORE Questa attività applica le tecniche presentate nell Attività #2 ed un temporizzatore ore - minuti - secondi. Visualizzazione del tempo trascorso Il programma che segue avvia il LCD, cancella lo schermo, e posiziona alcuni caratteri da visualizzare sul LCD in modo che non saranno cambiati. Il resto del programma può allora visualizzare i valori numerici delle ore, minuti e secondi che cambiano a fianco dei caratteri fermi "h", "m", e "s". SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, ["Tempo...", 13] SEROUT 14, 84, [" h m s"] ' Avvia il LCD & cancella il ' display ' Pausa di 5 ms per cancellare il ' display ' Testo + ritorno carrello ' Testo sulla seconda riga Per questa applicazione, i codici di controllo per il posizionamento del cursore possono rivelarsi particolarmente utili. Ad esempio, il cursore può essere posizionato sulla riga 1, il carattere 0 prima dell invio del valore decimale a due cifre delle ore. Il cursore può successivamente essere spostato sulla riga 1, il carattere 5 per visualizzare i minuti e quindi sulla riga 1, il carattere 10 per visualizzare i secondi. Segue il singolo commando SEROUT che visualizza i valori di tutte e tre le variabili, ciascuno nella posizione corretta: SEROUT 14, 84, [ 148, DEC2 ore, 153, DEC2 minuti, 158, DEC2 secondi ] L esempio successivo applica questo concetto assieme alle peculiarità di temporizzazione del modulo BASIC Stamp. La precisione non promette la qualità di quella di un orologio da polso; ma comunque è abbastanza buona da mostrare come possa lavorare la visualizzazione del tempo con il posizionamento dei caratteri. Se si desidera una precisione maggiore, si può provare ad incorporare il chip di cronometraggio DS1302.

31 Capitolo 1: Il display LCD seriale Parallax Pagina 19 E disponibile sul sito semplicemente digitando DS1302 nel campo per le ricerche. Programma esempio - TimerLcd.bs2 Questo programma esempio visualizza ore, minuti e secondi trascorsi con il LCD seriale Parallax. Premendo il pulsante RESET sulla Board of Education, si potrà far ripartire il timer. Digitare, memorizzare, ed eseguire TimerLcd.bs2. Verificate che il display lavori come indicato. ' Sensori Intelligenti e loro Applicazioni - TimerLcd.bs2 ' Visualizza il tempo trascorso con il BS2 e il LCD seriale Parallax. ' {$STAMP BS2} ' {$PBASIC 2.5} ' direttiva Stamp ' direttiva PBASIC ore VAR Byte ' Memorizza le ore minuti VAR Byte ' Memorizza i minuti secondi VAR Byte ' Memorizza i secondi SEROUT 14, 84, [22, 12] PAUSE 5 ' Avvia il LCD & cancella il display ' Pausa di 5 ms per cancellare il ' display SEROUT 14, 84, ["Tempo trascorso...", 13] ' Testo + ritorno carrello SEROUT 14, 84, [" h m s"] ' Testo sulla seconda riga DO ' Programma principale ' Calcola ore, minuti, secondi IF secondi = 60 THEN secondi = 0: minuti = minuti + 1 IF minuti = 60 THEN minuti = 0: ore = ore + 1 IF ore = 24 THEN ore = 0 ' Visualizza le cifre sulla riga 1 del LCD. I valori 148, 153, 158 ' posizionano il cursore al carattere 0, 5, e 10 per i valori di tempo. SEROUT 14, 84, [148, DEC2 ore, 153, DEC2 minuti, 158, DEC2 secondi ] PAUSE 991 secondi = secondi + 1 LOOP ' Pausa + ritardo di ~ 1 secondo ' Incremento del contatore dei secondi ' Ripete il programma principale

32 Pagina 20 Sensori intelligenti e loro applicazioni Il vostro turno Definire i codici di controllo con le costanti Fino a questo punto, i codici di controllo del LCD sono stati valori decimali. Comunque, se si sta scrivendo o leggendo un programma molto lungo, ricordare tutti questi codici di controllo può essere fastidioso. È meglio dichiarare all inizio del programma una costante per ciascuno dei codici di controllo. Poi, utilizzare i nomi delle costanti invece dei numeri. Si potrà fare la stessa cosa anche con il valore BaudMode, e quindi aggiungere una direttiva PIN per effettuare lo stesso I/O sul piedino P14. Un esempio è il seguente: PinLcd PIN 14 ' Piedino I/O del LCD T9600 CON 84 ' Vera, 8-bit, senza parità, 9600 ClsLcd CON 12 ' Salto pagina -> cancella schermo CrLcd CON 13 ' Ritorno carrello OffLcd CON 21 ' Spegne il display OnLcd CON 22 ' Accende il display Riga0 CON 128 ' Riga 0, carattere 0 Riga1 CON 148 ' Riga 1, carattere 0 Queste dichiarazioni renderanno il proprio codice più facile da comprendere, cosa particolarmente importante quando si deve modificare il programma e non lo si è guardato per parecchi mesi. Ad esempio, il primo comando SEROUT può essere riscritto nel modo seguente: SEROUT PinLcd, T9600, [OnLcd, ClsLcd] Il comando SEROUT nel programma TimerLcd.bs2 che visualizza i numeri sulla riga 1 del LCD si può riscrivere nel modo seguente: SEROUT PinLcd, T9600, [(Riga1 + 0), DEC2 ore, (Riga1 + 5), DEC2 minuti, (Riga1 + 10), DEC2 secondi] Salvate TimerLcd.bs2 sotto altro nome. Aggiungete commenti descrittivi al proprio programma. Sostituite quanti più numeri credete opportuno con nomi di costanti significativi. Eseguite il programma ed eliminate i malfunzionamenti se necessario. ATTIVITÀ #4: CARATTERI PERSONALIZZATI E ANIMAZIONE DEL LCD Anche se non tutte le immagini conservano migliaia di parole, persino quelle che conservano una o due frasi sono utili quando avete a disposizione uno spazio di soli 32 caratteri per lavorare. Un esempio di immagine utile è il cursore a clessidra che lo

33 Capitolo 1: Il display LCD seriale Parallax Pagina 21 schermo del vostro computer utilizza per farvi sapere che il programma è occupato. Questa semplice icona animata lavora molto meglio che un messaggio che appaia in qualche posto dello schermo che dice, "vi preghiamo di attendere, il programma è occupato...". Questa attività usa una clessidra per presentare tecniche di definizione, memorizzazione, visualizzazione e animazione di caratteri personalizzati. Caratteri personalizzati nel LCD Parallax Il LCD seriale Parallax ha spazi contigui per otto caratteri personalizzati mostrati nella Figura Per visualizzare il carattere personalizzato 0, si invii semplicemente al LCD il valore 0 con un comando SEROUT. Analogamente, per visualizzare il carattere personalizzato 1, si invii soltanto un 1, per visualizzare il carattere personalizzato 2, si invii un 2, e così via. Si noti che i caratteri personalizzati 0 e 1 sono pre - configurati per essere la barra rovesciata e la tilde. Un esempio di comando SEROUT che visualizza entrambi questi caratteri: SEROUT 14, 84, [0, 1]. Figura 1-13: Caratteri personalizzati pre definiti: 0 (Barra rovesciata) e 1 (Tilde) Caratteri personalizzati Programma esempio: CaratteriPersonaliPredefiniti.bs2 Questo esempio invia al LCD seriale i due comandi per fargli visualizzare i caratteri personalizzati 0 and 1, la barra rovesciata "\" e la tilde "~". Digitare ed eseguire il programma, e controllare che visualizza la barra rovesciata e la tilde. ' Sensori Intelligenti e loro applicazioni - CaratteriPersonaliPredefiniti.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] PAUSE 5 ' Inizializza il LCD ' ritardo di 5 ms per cancellare il display ' Visualizza i caratteri personalizzati pre definiti: "\" (carattere ' personalizzato 0) and "~" (carattere personalizzato 1). SEROUT 14, 84, [0, 1]

34 Pagina 22 Sensori intelligenti e loro applicazioni Definire (e Ridefinire) caratteri personalizzati I caratteri personalizzati del LCD seriale Parallax sono memorizzati nella sua RAM. Per definire uno dei suoi otto caratteri personalizzati, il proprio commando SEROUT deve dire al LCD quale degli otto caratteri personalizzati si vuole definire e quindi descrivere gli stati acceso/spento di ciascun pixel nel carattere. Ciascun carattere ha 40 pixel, 8 pixel di altezza per 5 pixel di larghezza. La Figura 1-14 mostra i comandi di definizione che si dovranno inviare al LCD per dirgli quale dei caratteri personalizzati state per definire. Si può anche pensare al riguardo in questo modo: dire al LCD quale dei caratteri personalizzati si sta per definire, inviare il valore del carattere personalizzato più 248. Ad esempio, se si vuole definire il carattere personalizzato 0, si invierà 248, se si vuole definire il carattere personalizzato 1, si invierà 249, e così via fino a 255 per il carattere personalizzato 7. Figura 1-14: Comandi per definire un carattere personalizzato Carattere personalizzato Comandi di definizione Dopo aver inviato il codice che dice al LCD quale carattere personalizzato si sta per definire, dovete poi definire ed inviare gli otto byte che descrivono quel carattere. Il LCD usa i cinque bit mano significativi di ciascun byte che riceve per descrivere ciascuna delle righe larghe cinque pixel nel carattere. La Figura 1-15 mostra un esempio di definizione del carattere personalizzato 0 come una clessidra che è stata appena girata a testa in giù.

35 Capitolo 1: Il display LCD seriale Parallax Pagina 23 SEROUT 14, 84, [248, %00000, %11111, %11111, %01110, %00100, %01010, %10001, %11111] Figura 1-15 Ridefinizione del carattere personalizzato 0 Si noti come ciascuno dei valori successivi nel commando SEROUT corrisponde ad una riga di pixel nel carattere personalizzato. Si noti anche che gli 1 corrispondono a pixel neri, e gli 0 corrispondono ai bianchi. Le definizioni di caratteri personalizzati col comando SEROUT non sono permanenti. Ciascuna volta che si dà e si toglie tensione i caratteri personalizzati sono cancellati. Poiché il BASIC Stamp e il LCD condividono la stessa alimentazione elettrica, il programma nel BASIC Stamp viene riavviato quando si dà di nuovo tensione. È buona pratica definire all inizio di ciascun programma i caratteri personalizzati che ci si propone di utilizzare, in modo che il BASIC Stamp può definire i caratteri personalizzati ogni volta che gli viene ridata tensione. Il programma che segue è una nuova definizione del carattere personalizzato clessidra con i suoi quattro pixel di sabbia calati nella sua camera inferiore. Questa definizione utilizza 255 per dire al LCD di renderlo carattere personalizzato 7. Viene anche utilizzata una tecnica per disegnare i caratteri con asterischi nei commenti a destra del comando SEROUT. Si inizi con un comando SEROUT con tutti i valori binari impostati a %00000, e poi si disegni il carattere con asterischi nel commento a destra. Dopo che il disegno è corretto, si utilizzino gli asterischi per dettare quali zeri debbano essere modificati in uno. SEROUT 14, 84, [255, ' Definisce il carattere personalizzato 7 %00000, ' %11111, ' * * * * * %10001, ' * * %01010, ' * * %00100, ' * %01110, ' * * * %11111, ' * * * * * %11111] ' * * * * *

36 Pagina 24 Sensori intelligenti e loro applicazioni La Figura 1-16 mostra come i due comandi SEROUT appena discussi ridefiniscano i caratteri personalizzati del LCD's. Figura 1-16: Dopo la definizione dei caratteri personalizzati 0 e 7 Caratteri personalizzati I caratteri personalizzati sono a volte definiti tramite valori esadecimali. Si potrà vedere questo in programmi esempio disponibili per lo scarico dalle pagine del sito relative al prodotto LCD seriale Parallax. Per informazioni su come lavorino le definizioni tramite caratteri esadecimali, si provi l attività nell Appendice B: Definizioni di caratteri esadecimali (Appendice C, pagina 347). Con queste nuove definizioni di caratteri personalizzati, si potrà scrivere un ciclo per fare in modo che la clessidra passi da vuota a piena, per indicare che l utente dovrà attendere. Il ciclo DO...LOOP riportato qui sotto fa questo, dapprima posizionando il cursore nel LCD sulla riga 0, carattere 5. Quindi visualizza il carattere personalizzato 0, la clessidra appena girata a testa in giù. Dopo un breve comando PAUSE, il programma invia il commando backspace (8, cancella a sinistra) per far tornare il cursore indietro al carattere 5. Poi invia il carattere personalizzato 7, la clessidra con la sabbia precipitata nella base. Se si ripete questa sequenza, sembrerà come se la clessidra venisse girata a testa in giù, svuotata, girata ancora, svuotata ancora, e così via. DO SEROUT 14, 84, [133] ' Cursore -> Riga 0, char SEROUT 14, 84, [0] ' Visualizza carattere personalizzato 0 PAUSE 1250 ' Ritardo di 1.25 secondi SEROUT 14, 84, [8] ' Backspace (cancella a sinistra) SEROUT 14, 84, [7] ' Visualizza carattere personalizzato 7 PAUSE 1500 ' Ritardo di 1.50 secondi LOOP Programma esempio: Clessidra.bs2 Questo programma definisce e visualizza i caratteri personalizzati clessidra appena illustrati.

37 Capitolo 1: Il display LCD seriale Parallax Pagina 25 Digitate, memorizzate ed eseguite il programma. Verificate che esso visualizzi alternativamente i due caratteri clessidra al sesto carattere della riga superiore del LCD. ' -----[ Title ] ' Sensori intelligenti e loro applicazioni - Clessidra.bs2 ' Definisce e visualizza caratteri personalizzati. ' {$STAMP BS2} ' Dispositivo scelto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Linguaggio = PBASIC 2.5 ' -----[ Inizializzazione ] PAUSE 250 ' Toglie l alimentazione elettrica SEROUT 14, 84, [248, ' Definisce il carattere personalizzato 0 %00000, ' %11111, ' * * * * * %11111, ' * * * * * %01110, ' * * * %00100, ' * %01010, ' * * %10001, ' * * %11111] ' * * * * * SEROUT 14, 84, [255, ' Definisce il carattere personalizzato 7 %00000, ' %11111, ' * * * * * %10001, ' * * %01010, ' * * %00100, ' * %01110, ' * * * %11111, ' * * * * * %11111] ' * * * * * SEROUT 14, 84, [22, 12] PAUSE 5 ' Accende il display e lo cancella ' Ritardo di 5 ms per cancellare il display ' -----[ Programma principale ] DO SEROUT 14, 84, [133] ' Cursore -> riga 0, char SEROUT 14, 84, [0] ' Visualizza carattere personalizzato 0 PAUSE 1250 ' Ritardo di 1.25 secondi SEROUT 14, 84, [8] ' Backspace (cancella a sinistra) SEROUT 14, 84, [7] ' Visualizza carattere personalizzato 7 PAUSE 1500 ' Ritardo di 1.50 secondi LOOP

38 Pagina 26 Sensori intelligenti e loro applicazioni Il vostro turno La Figura 1-17 mostra i caratteri personalizzati che rappresentano i granelli di sabbia nella clessidra mentre si muovono dall alto verso il basso. Figura 1-17: Caratteri personalizzati per la clessidra animata Caratteri personalizzati Memorizzare Clessidra.bs2 come VostraClessidra.bs2. Ampliare il programma di inizializzazione in modo che definisca tutti gli otto caratteri personalizzati come mostrati dalla Figura Modificare il programma principale in modo che dia un effetto di clessidra animate come se i granelli di sabbia cadessero dall alto in basso. Qui di seguito è riportato un programma principale che si potrà provare per animare gli otto caratteri personalizzati, una volta che si sarà aggiornata la sezione di inizializzazione: DO ' Posizionare il cursore al carattere 5, e visualizzare il carattere ' personalizzato 0. SEROUT 14, 84, 100, [133, 0] PAUSE 750 ' ritardo di secondi ' Backspace, carattere personalizzato 1, backspace, carattere personalizzato ' 2, etc. ' l argomento opzionale Pace di valore 100 invia ciascun valore ogni 1/10 di ' secondo. SEROUT 14, 84, 100, [8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8] PAUSE 750 LOOP Provate il programma!

39 Capitolo 1: Il display LCD seriale Parallax Pagina 27 Anche se il LCD memorizza soltanto 8 caratteri personalizzati alla volta, il vostro programma può memorizzarne tanti quanti ve ne occorrono. Ricordate, il vostro programma può ridefinire qualsiasi carattere personalizzato in una sola volta. Se alla vostra applicazione occorrono venti caratteri personalizzati, il vostro programma PBASIC puo memorizzare 20 caratteri personalizzati e ridefinirli per il LCD quando occorrono. Potrete visualizzare la clessidra con un solo carattere personalizzato. L intera animazione della clessidra si può fare con un solo carattere personalizzato. Il trucco è ridefinire il carattere personalizzato tra ciascuna coppia di intervalli in cui il display viene aggiornato. ATTIVITÀ #5: SCORRIMENTO DI TESTO TRAMITE IL DISPLAY Se il vostro messaggio è troppo grande per il display a 16 caratteri, far scorrere il testo lungo il display può farlo visualizzare tutto. La Figura 1-18 mostra un esempio. Con lo scorrimento, il messaggio inizia all estremità destra del display. Quindi, il testo scorre attraverso il display una lettera alla volta. Figura 1-18 Scorrimento del testo Il codice di scorrimento presentato in questa attività è del tutto diverso dal programma esempio nella Attività #2 che faceva muovere " Riga 1 " attraverso il display. La ragione principale per cui è diverso è il fatto che il messaggio nell Attività #2 si fermava al carattere più a sinistra. Quando il messaggio è più grande della finestra del display, fermarsi al bordo sinistro del display impedirà al resto del messaggio di diventare visibile.

40 Pagina 28 Sensori intelligenti e loro applicazioni Per ottenere testo che scorra lungo lo schermo esattamente di una riga, il programma deve iniziare con il primo carattere di un messaggio e visualizzarlo nella posizione più a destra. Dopo un breve ritardo, il programma deve muovere il cursore sul secondo carattere da destra, e stampare il primo e il secondo carattere. Deve continuare questo procedimento fino a che il cursore non si trovi a sinistra del display. Allora, il cursore dev essere ripetutamente riposizionato a quella stessa posizione in modo che saranno visualizzate porzioni di messaggio di 16 caratteri, facendo apparire il messaggio come se scorresse da destra a sinistra, un carattere alla volta. La tecnica di programmazione per questa elaborazione è detta a finestra scorrevole. Oltre ad essere utile per il LCD Parallax, la finestra scorrevole è ciò che vedete quando il testo scorre su e giù in programmi come l Editor BASIC Stamp e il vostro browser web. È utilizzata anche in programmi che trasmettono e raccolgono i pacchetti TCP/IP. Così ogni volta che aprite il vostro browser web, c è più di una istanza di codice a finestra scorrevole che lavora sullo sfondo. Un sottoprogramma a scorrimento configurabile Il programma esempio che segue mette in risalto un sottoprogramma comodo per visualizzare una gran varietà di messaggi scorrevoli col minimo lavoro. Tutto ciò che comporta è il posizionare i messaggi in direttive DATA precedute da nomi Symbol, impostando poche variabili, e poi chiamando il sottoprogramma di scorrimento. Ecco alcuni esempi di direttive DATA. Messaggio1 2, "Messaggio " Messaggio2 DATA "ulteriore " Messaggio3 DATA "Messaggio più lungo, che va più veloce " Messaggio4 DATA Il primo messaggio di testo inizia ad un indirizzo della EEPROM uguale al valore del simbolo Messaggio1, che è stato posto a 2 con l argomento della direttiva DATA. L indirizzo dopo la fine del Messaggio1 è l indirizzo 11 della EEPROM. Ciò è evidenziato dall etichetta Messaggio2, che è anche l inizio del secondo messaggio. Dal momento che potete impostare variabili uguali ai valori di Messaggio1 a Messaggio4, questo è un sistema particolarmente flessibile, adatto a una varietà di messaggi. Il programma esempio successivo ha anch esso variabili che potete impostare per configurare diverse posizioni, ampiezze e incrementi della finestra. Dopo aver impostato

41 Capitolo 1: Il display LCD seriale Parallax Pagina 29 i valori di queste variabili, potrete poi richiamare il sottoprogramma Scorri_Messaggio, che fa il resto del lavoro. Ecco un esempio di un blocco di codice che fa visualizzare al sottoprogramma tutti i caratteri tra le etichette Messaggio1 e Messaggio2 nei quattro caratteri centrali della riga superiore del LCD. InizioMessaggio = Messaggio1: FineMessaggio = Messaggio2 FinestraSinist = 134: FinestraDestra = 137 incremento = 1 GOSUB Scorri_Messaggio Gli indirizzi iniziale e finale della EEPROM sono memorizzati nelle variabili InizioMessaggio e FineMessaggio. Gli indirizzi di carattere LCD iniziale e finale che definiscono la finestra sono memorizzati in FinestraSinist e FinestraDestra. Da ultimo, la variabile incremento è impostata al numero di caratteri che il testo muove ogni volta che scorre. Con tutti questi valori impostati, il sottoprogramma Scorri_Messaggio ha tutto quanto gli occorre per svolgere il suo compito. Ci sono tre ulteriori esempi nel sottoprogramma principale del programma che segue. Non tutti gli esempi assegnano valori a tutte le variabili. Alcuni esempi impostano soltanto pochi valori perché questi sono valori che ritornano, ed erano stati assegnati prima della precedente chiamata di sottoprogramma. Ad esempio, il valore della variabile incremento era impostato ad 1 prima della prima chiamata di sottoprogramma. Poiché il sottoprogramma Scorri_Messaggio non apporta alcun cambiamento a quella variabile, a tale variabile non dev essere riassegnato il valore 1 prima che il sottoprogramma Scorri_Messaggio venga chiamato di nuovo. ' Cambia i valori di alcune variabili di configurazione ' e mostra l effetto di ciascun cambiamento sul display. finestrasinist = 131: finestradestra = 140 GOSUB Scorri_Messaggio Ecco l ultimo esempio nel sottoprogramma principale. Si noti che esso prende la parte migliore della seconda riga e fa scorrere due caratteri alla volta: InizioMessaggio = Messaggio3: FineMessaggio = Messaggio4 finestrasinist = 150: finestradestra = 161 incremento = 2 GOSUB Scorri_Messaggio

42 Pagina 30 Sensori intelligenti e loro applicazioni Programma esempio - RoutineScorriTesto.bs2 Rivedere i blocchi di codice nel Sottoprogramma Principale del programma e predire quanto grande dovrà essere la finestra di scorrimento, quale testo sarà visualizzato, e quanti caratteri per volta scorreranno. Digitare, memorizzare, ed eseguire RoutineScorriTesto.bs2. Confrontare le vostre predizioni con quanto si è verificato in realtà e ricomporre tutte le differenze. ' -----[ Titolo ] ' Sensori Intelligenti e loro Applicazioni - RoutineScorriTesto.bs2 ' Fa scorrere nel LCD un messaggio di testo in una finestra larga quattro ' caratteri. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Direttiva BASIC Stamp ' Direttiva PBASIC ' -----[ Direttive DATA] Messaggio1 2, "Messaggio " Messaggio2 DATA "ancora " Messaggio3 DATA "Messaggio più grande, si accelera..." Messaggio4 DATA ' -----[ Definizioni I/O] PinLcd PIN 14 ' Piedino I/O del LCD ' -----[ Costanti ] T9600 CON 84 ' Vera, 8-bit, senza parità, 9600 LcdCls CON 12 ' Salto pagina -> cancella schermo LcdCr CON 13 ' Ritorno Carrello LcdOff CON 21 ' Spegne il display LcdOn CON 22 ' Accende il display Riga0 CON 128 ' Riga 0, carattere 0 Riga1 CON 148 ' Riga 1, carattere 0 TimeOn CON 250 ' Carattere in tempo TimeOff CON 0 ' Carattere perde tempo ' -----[ Variabili ] ' Variabili funzionali per il sottoprogramma Scorri_Messaggio. AvviaCursore VAR Byte ' Posizione del primo carattere testa VAR Byte ' Inizio testo visualizzato coda VAR Byte ' Fine testo visualizzato puntatore VAR Byte ' puntatore indirizzo EEPROM carattere VAR Byte ' memorizza un carattere

43 Capitolo 1: Il display LCD seriale Parallax Pagina 31 ' Variabili di Configurazione per il sottoprogramma Scorri_Messaggio. incremento VAR Nib ' Caratteri da spostare finestradestra VAR Byte ' indirizzo carattere più a destra finestrasinist VAR Byte ' indirizzo carattere più a sinistra InizMessaggio VAR Byte ' Indirizzo EEPROM iniziale FineMessaggio VAR Byte ' Indirizzo EEPROM finale ' -----[ Inizializazione ] SEROUT PinLcd, T9600, [LcdOn, LcdCls] ' Accende & cancella display PAUSE 5 ' Ritarda 5 ms ' -----[ Sottoprogramma principale ] ' Imposta i valori delle variabili di configurazione, poi ' richiama il sottoprogramma Scorri_Messaggio. InizMessaggio = Messaggio1: FineMessaggio = messaggio2 finestrasinist = 134: finestradestra= 137 incremento = 1 GOSUB Scorri_Messaggio ' Cambia i valori di alcune variabili di configurazione e ne mostra ' gli effetti sul display ad ogni cambiamento. finestrasinist = 131: finestradestra = 140 GOSUB Scorri_Messaggio InizMessaggio = Messaggio1: FineMessaggio = messaggio3 GOSUB Scorri_Messaggio InizMessaggio = Messaggio3: FineMessaggio = messaggio4 finestrasinist = 150: finestradestra = 161 incremento = 2 GOSUB Scorri_Messaggio END ' -----[ Subroutine - Scorri_Messaggio ] Scorri_Messaggio: Avviacursore = finestradestra - incremento + 1 ' carattere più a destra ' nella finestra testa = 0 ' Inizializza testa e coda coda = incremento - 1 ' del messaggio ' Ciclo di scorrimento DO WHILE coda<(finemessaggio-inizmessaggio)+(finestradestra-finestrasinist +incremento)

44 Pagina 32 Sensori intelligenti e loro applicazioni SEROUT PinLcd, T9600, [AvvioCursore] ' carattere più a destra nella ' finestra FOR puntatore = testa TO coda ' Cancella i vecchi caratteri. SEROUT PinLcd, T9600, [" "] NEXT PAUSE timeoff ' Fa svanire i caratteri SEROUT PinLcd, T9600, [AvvioCursore] ' carattere più a destra nella ' finestra ' Questo ciclo FOR...NEXT rinfresca il messaggio, sposta ogni volta ' i caratteri a sinistra di incremento, fino alla fine del messaggio ' nella EEPROM. ' Poi, riempie il display con caratteri spazio, mentre il resto del ' messaggio scorre fuori dalla finestra. FOR puntatore = testa TO coda IF (puntatore <= (FineMessaggio - InizMessaggio - 1)) THEN READ puntatore + InizMessaggio, carattere ELSE carattere = " " ENDIF SEROUT PinLcd, T9600, [carattere] NEXT PAUSE timeon ' Dà ai caratteri un certo incremento di ' tempo fino alla sinistra della finestra AvvioCursore = AvvioCursore - incremento MIN finestrasinist coda = coda + incremento ' Incrementa puntatore di coda ' Incrementa puntatore di testa se puntatore coda > larghezza finestra. IF coda > (finestradestra - finestrasinist) THEN testa = testa + incremento ELSE testa = 0 ENDIF LOOP ' Ripete il ciclo di scorrimento RETURN La finestra scorrevole del sottoprogramma Scorri_Messaggio Diciamo subito che la finestra di visualizzazione di testo scorrevole del vostro LCD sulla riga superiore è larga quattro caratteri, poiché occorre visualizzare contemporaneamente altri messaggi sul LCD. Il compito da affrontare è far scorrere il testo in questa finestra più piccola senza sovrascrivere nessuno dei caratteri visualizzati al di fuori di essa.

45 Capitolo 1: Il display LCD seriale Parallax Pagina 33 La Figura 1-19 mostra l impostazione e il Passo 0 di una finestra larga quattro caratteri. Nel passo di impostazione, non viene visualizzato nulla nella finestra. Quindi il passo 0 colloca il cursore nella posizione 137, e visualizza il carattere 0, la "M". Figura 1-19: Testo scorrevole nella finestra, Impostazione e Passo 0 La Figura 1-20 mostra i Passi 1 e 2. Dopo aver atteso un momento perché la "M" diventi visibile, il cursore va collocato nella posizione 136, e quindi possono essere visualizzati i caratteri 0 e 1, "Me",. Poi, si muove il cursore a 135, e saranno visualizzati i caratteri da 0 a 2, "Mes". Figura 1-20: Testo scorrevole nella finestra, Passi 1 e 2

46 Pagina 34 Sensori intelligenti e loro applicazioni La Figura 1-21 mostra i Passi 3 e 4. Si muove il cursore alla posizione 134 e si visualizzano i caratteri da 0 a 3, c è ancora la stessa sequenza"mess", ma quando la "M" lascia la finestra, la sequenza dovrà cambiare. La posizione iniziale del cursore, ovvero il puntatore della testa del messaggio, non può più avanzare a sinistra; deve rimanere nella posizione 134. Inoltre, invece di visualizzare i caratteri da 0 a 3, si dovranno visualizzare i caratteri da 1 a 4, "essa". Figura 1-21: Testo scorrevole nella finestra, Passi 3 e 4 La posizione di partenza del cursore deve rimanere a 134 mentre i caratteri di testa e di coda continuano ad avanzare: da 2 a 5 - "ssag", da 3 a 6 - "sage". La finestra si mantiene scorrevole, e la Figura 1-22 mostra i caratteri dal secondo all - ultimo passo, da 6 a 9 - "e" seguito da tre spazi, e finalmente l ultimo passo, da 7 a 10 quattro caratteri spazio. Figura 1-22: Testo scorrevole nella finestra, Passi 9 e 10

47 Capitolo 1: Il display LCD seriale Parallax Pagina 35 Il programma RoutineScorriTesto.bs2 usa le variabili mostrate nella Figura 1-23 per la finestra scorrevole. La variabile AvviaCursore memorizza la posizione dove il cursore è collocato ogni volta prima che inizi la scrittura dei caratteri del messaggio. Nella figura, AvviaCursore memorizza il valore 135. La successiva volta che il testo scorre a sinistra, memorizzerà 134. Due variabili, testa e coda, memorizzano gli indirizzi iniziale e finale del testo che si adatterà alla finestra di messaggio. Nella figura, testa memorizza 0, e coda memorizza 2. La variabile puntatore sarà utilizzata dal comando READ per ottenere il carattere a destra, e la variabile carattere memorizzerà il carattere che il comando READ reperisce dalla EEPROM. Figura 1-23: Variabili da RoutineScorriTesto.bs2. avviacursore testa coda puntatore Nella Figura 1-23, puntatore sta puntando al carattere 1 nella sequenza, cioè alla "e". Un ciclo FOR...NEXT utilizza la variabile puntatore per leggere ciascuno dei caratteri nella EEPROM, da testa a coda e quindi visualizzare ciascun carattere con il comando SEROUT. Ogni volta che il testo scorre a destra, il nuovo testo deve sovrascrivere il vecchio testo con lo stesso ciclo da testa a coda.

48 Pagina 36 Sensori intelligenti e loro applicazioni SOMMARIO Il display (visualizzatore) a cristalli liquidi (LCD) è utilizzato in una enorme varietà di prodotti. I semplici visualizzatori di caratteri come il LCD seriale Parallax 2X16 possono sostituire le caratteristiche di visualizzazione del terminale di debug, cosa particolarmente utile quando il luogo di prova del vostro progetto non è entro i luoghi raggiungibili da un cavo seriale collegato al PC. Il LCD seriale Parallax ha un potenziometro per la regolazione del contrasto nella parte posteriore, assieme ai due interruttori usabili per scegliere una di tre diverse velocità di trasmissione (velocità in baud) e una modalità di auto prova. Nella parte posteriore del LCD seriale Parallax ci sono tre piedini, visto che sono necessarie soltanto tre connessioni per farlo funzionare: Vdd, RX, e Vss. IL LCD seriale Parallax ha un insieme esteso di comandi, e un elenco completo di questi comandi è incluso nella Documentazione di Prodotto del LCD seriale Parallax (Appendice B). Questo capitolo presenta i comandi per accendere e spegnere il display, cancellarne il contenuto, e quelli per il posizionamento del cursore, il controllo della retro - illuminazione per il modello retro - illuminato, e la visualizzazione di caratteri. La visualizzazione con il LCD seriale Parallax dipende da messaggi seriali provenienti dal BASIC Stamp, programmati al suo interno dal comando PBASIC SEROUT. Molte delle caratteristiche del comando DEBUG possono essere usate anche con il commando SEROUT, compresi i testi racchiusi entro virgolette e i caratteri di formato come DEC, BIN, DIG, e così via. Tutti questi comandi producono nel LCD risultati simili a quelli del terminale di Debug. I codici di controllo del LCD sono diversi e più numerosi di quelli utilizzati con il terminale di Debug. Anziché tentare di utilizzare CR, CLS, CRSRXY, ecc., si possono utilizzare i valori dei codici di controllo elencati nell insieme dei comandi per il LCD. E anche buona idea definire delle costanti per questi valori, come ad esempio ClsLcd CON 12, ClrLcd CON 13, LcdOn CON 22, LcdOff CON 21, e così via. Il LCD seriale Parallax ha otto caratteri personalizzati, da 0 a 7. Potete visualizzare qualsiasi di questi caratteri inviandone il valore al LCD. Ad esempio, il comando SEROUT 14, 84, [3] produce sul LCD la scrittura del Carattere Personalizzato 3. I comandi per definire i caratteri personalizzati vanno da 248 a 255. L invio di 248 dice al LCD di definire il Carattere Personalizzato 0, 249 definisce il Carattere Personalizzato 1, e così via, fino a 255, che definisce il carattere personalizzato 7. Dopo aver inviato un

49 Capitolo 1: Il display LCD seriale Parallax Pagina 37 comando Definisci Carattere Personalizzato, i successivi otto byte sono valori binari, di cui i cinque bit meno significativi definiscono i pixel in una data riga di pixel. Un 1 rende il pixel nero, e uno 0 lo rende bianco. Questo capitolo presenta anche un sottoprogramma per far scorrere il testo da destra a sinistra all interno di una finestra. Questo sottoprogramma (subroutine) cerca gli indirizzi di avvio e arresto corrispondenti alle etichette di indirizzo Symbol che precedono le direttive DATA contenenti il testo da visualizzare. Il modo in cui è visualizzato il testo della subroutine è definito da cinque variabili: InizioMessaggio, FineMessaggio, FinestraSinist, FinestraDestra, e incremento. Le variabili InizioMessaggio e FineMessaggio memorizzano gli indirizzi di inizio e di fine EEPROM del testo che si vuole visualizzare. Le variabili FinestraSinist e FinestraDestra memorizzano gli indirizzi di carattere di inizio e fine LCD che definiscono la finestra, e la variabile incremento memorizza di quanti caratteri per volta il messaggio scorre da destra a sinistra. Domande 1. Fate i nomi di tre dispositivi da voi utilizzati ogni giorno, che visualizzano informazioni tramite LCD. 2. Che cosa indicano il 2 e il 16 nel nome di dispositivo LCD 2x16? 3. Quale comando usate per inviare informazioni al LCD Seriale Parallax? 4. In che cosa differiscono i comandi DEBUG e SEROUT? 5. In quale posizione occorre che siano gli interruttori SW1 e SW2 se volete scrivere un programma che invii messaggi al LCD Seriale Parallax ad una velocità di trasmissione di bps? 6. Quale componente dovete regolare per cambiare il contrasto di visualizzazione del LCD? 7. Quale commando SEROUT cancellerà il display? 8. Quali considerazioni speciali entrano in gioco quando si usano i codici di controllo CR, CLS, e HOME del comando DEBUG con il LCD Seriale Parallax? 9. Quali sono i tre argomenti che occorrono in un comando SEROUT minimo? 10. In che modo potete far lampeggiare il testo visualizzato nel LCD? 11. Quali intervalli di valori potete inviare al LCD per posizionare il cursore? 12. Quale carattere risiede per impostazione nel Carattere Personalizzato 1? 13. In che modo visualizzate un carattere personalizzato dopo che lo avete definito? 14. Quali applicazioni della finestra scorrevole conoscete?

50 Pagina 38 Sensori intelligenti e loro applicazioni Esercizi 1. Far comparire il messaggio Ciao nel Terminale di Debug senza utilizzare il comando DEBUG. 2. Visualizzare il messaggio "Ciao" centrato sulla riga superiore del LCD. 3. Far lampeggiare il messaggio "Ciao" una volta al secondo. 4. Scrivere un comando che faccia apparire il messaggio "Inizia" al principio della riga 0 e il messaggio "Termina" sul lato destro della riga Scrivere un comando SEROUT per inviare i messaggi al LCD quando gli interruttori SW1 e SW2 sono entrambi ON. 6. Scrivere un comando SEROUT per inviare un messaggio al LCD quando SW1 è ON e SW2 è OFF. Progetti 1. Scrivere un programma che visualizzi un messaggio di sei righe. Deve iniziare visualizzando le righe 0 e 1 con una pausa. Quindi deve proseguire con le righe 2 e 3, di nuovo con una pausa. E finalmente, visualizza le righe 4 e Scrivere un programma che stampi tre copie di un carattere personalizzato. Poi, ridefinite il carattere personalizzato. Che cosa accade a tutte e tre le copie del carattere personalizzato?

51 Capitolo 1: Il display LCD seriale Parallax Pagina 39 Soluzioni D1. Orologio da polso, calcolatore, telefono (le risposte possono variare). D2. Due righe di testo, ciascuna riga larga 16 caratteri. D3. Il comando SEROUT. D4. Quando utilizzate il comando SEROUT dovete specificare il numero di pin (piedino) e la velocità di trasmissione. D5. Per avere la velocità di bps, entrambi gli interruttori SW1 e SW2 devono essere in posizione ON. D6. Un potenziometro. D7. Il comando SEROUT 14, 84, [12] cancellerà il display. D8. Le costanti predefinite PBASIC del tipo di CR, CLS, e HOME non debbono essere definite necessariamente in modo corretto per lavorare con il LCD seriale. D9. Il comando SEROUT richiede gli argomenti Pin, Baudmode, e DataItem. D10. Scrivere il testo, quindi far lampeggiare il display con i caratteri di controllo 21 e 22. D11. Da 128 a 143 per la riga 0, e da 148 a 163 per la riga 1. D12. La barra rovesciata. D13. Inviare al LCD il valore del carattere di controllo con il comando SEROUT. Ad esempio, SEROUT 14, 84, [4] visualizzerà il Carattere Personalizzato 4. D14. Gli schermi LCD, perfino quelli grandi che si vedono nelle stazioni ferroviarie, ai cancelli di imbarco degli aeroporti, o negli eventi sportivi, oppure i testi scorrevoli nelle applicazioni Windows e nei pacchetti TCP/IP. E1. Dal file di aiuto del BASIC Stamp Editor: Impostare nel comando SEROUT l argomento Tpin per la porta seriale incorporata a 16. ' Sensori Intelligenti e loro Applicazioni - Eser01_Cap1.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Ciao, sono il comando DEBUG", CR SEROUT 16, 84, ["Ciao Ecco il SEROUT", CR] E2. Soluzione esempio:' Sensori Intelligenti e Applicazioni - Eser02_Cap1.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] ' Accende, cancella schermo ' SEROUT 14, 84, [" Ciao ", CR] ' Centra testo su riga ' superiore

52 Pagina 40 Sensori intelligenti e loro applicazioni E3. Soluzione esempio: ' Sensori Intelligenti e loro Applicazioni - Eser03_Cap1.bs2 ' Fa lampeggiare un messaggio una volta al secondo ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] ' Accende, cancella schermo ' SEROUT 14, 84, [" Ciao ", CR] ' Centra testo su riga sup. DO SEROUT 14, 84, [21] PAUSE 500 SEROUT 14, 84, [22] PAUSE 500 LOOP ' Spenge schermo ' Accende schermo E4. Soluzione esempio: ' Sensori Intelligenti e loro Applicazioni - Eser04_Cap1.bs2 ' Scrive Avvio a inizio riga1, Fine a fine riga2 ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] ' Accende, cancella schermo SEROUT 14, 84, ["Avvio"] ' Scrive su Riga 0 SEROUT 14, 84, [160] ' Riga2, 4 car da bordo dx SEROUT 14, 84, ["Fine"] ' Scrive a bordo dx Riga 1 E5. Soluzione esempio: ' Sensori Intelligenti e loro Applicazioni - Eser05_Cap1.bs2 ' Scrive a baud ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 32, [22, 12] ' Accende, cancella schermo SEROUT 14, 32, ["Uso bps"] ' Scrive su Riga 0 E6. Soluzione esempio: ' Sensori Intelligenti e loro Applicazioni - Eser06_Cap1.bs2 ' Scrive a 2400 baud ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 396, [22, 12] ' Accende, cancella schermo SEROUT 14, 396, ["Uso 2400 bps"] ' Scrive su Riga 0

53 Capitolo 1: Il display LCD seriale Parallax Pagina 41 P1. Soluzione esempio: ' Sensori Intelligenti e loro Applicazioni - Progetto1Cap1.bs2 ' Visualizza un messaggio di 6 righe ' {$STAMP BS2} ' {$PBASIC 2.5} PinLcd PIN 14 T9600 CON 84 PAUSE 250 SEROUT 14, 84, [22, 12] PAUSE 5 ' Accende e cancella il display ' ritarda 5 ms per cancellare il display SEROUT PinLcd, T9600, ["Non ho mai fatto"] SEROUT PinLcd, T9600, ["interferire la "] PAUSE 1500 SEROUT PinLcd, T9600, ["mia istruzione "] SEROUT PinLcd, T9600, ["con l educazione"] PAUSE 1500 SEROUT PinLcd, T9600, [" -Mark Twain"] SEROUT PinLcd, T9600, [" "] END P2. Tutte e tre le copie cambieranno nel carattere appena definito! E come una magia. Qui sotto è mostrato un programma esempio. ' Sensori Intelligenti e loro Applicazioni Progetto2Cap1.bs2 ' Scrive 3 copie del carattere personalizzato, quindi lo ridefinisce. ' {$STAMP BS2} ' Dispositivo scelto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Linguaggio di progr. = PBASIC 2.5 Riga0 CON 128 Riga1 CON 148 copie VAR Nib PAUSE 250 SEROUT 14, 84, [22, 12] PAUSE 5 ' Accende il display e lo cancella ' ritarda 5 ms per cancellare il display SEROUT 14, 84, [248, ' Definisce il Carattere personalizzato 0 %00110, ' * * %00101, ' * * %00100, ' * %11111, ' * * * * * %00100, ' * %01110, ' * * * %10101, ' * * * %00100] ' *

54 Pagina 42 Sensori intelligenti e loro applicazioni FOR copie = 1 TO 3 SEROUT 14, 84, [0] ' Visualizza Carattere personalizzato 0 NEXT PAUSE 1000 ' Pausa per permettere di vedere il car. SEROUT 14, 84, [Riga1, "ora ri-definisco"]' Visualizza mess. su Riga 1 PAUSE 1000 SEROUT 14, 84, [Riga1, " "]' Cancella messaggio SEROUT 14, 84, [248, ' Ri-definisce Carattere personalizzato 0 %00100, ' * %10011, ' * * * %01001, ' * * %00101, ' * * %00001, ' * %00010, ' * %00100, ' * %11000] ' * * END

55 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 43 Capitolo 2: Il sensore Ultrasonico Ping))) di Distanza Il sensore Ping))), interfacciato con un BASIC Stamp, può misurare quanto gli oggetti siano lontani (in altre parole, la loro distanza dal sensore stesso). Con un intervallo di distanze che va da 3 centimetri a 3.3 metri, è una vittoria certa in qualsiasi numero di progetti di robotica e automazione. E anche notevolmente preciso, dato che rileva molto agevolmente la distanza di un oggetto fino ai centimetri. Figura 2-1 Il sensore ultrasonico di distanze Ping))) COME LAVORA IL SENSORE PING)))? La Figura 2-2 mostra come il sensore Ping))) invii un breve pigolio con il suo altoparlante ultrasonico e misuri il tempo di ritorno dell eco al suo microfono ultrasonico. Il BASIC Stamp inizia il processo, inviando al sensore Ping))) un impulso per avviare la misura. Poi, il sensore Ping))) aspetta abbastanza a lungo per consentire al programma del BASIC Stamp di avviare un comando PULSIN. Quindi, contemporaneamente, il sensore Ping))) emette il suo pigolio a 40 khz, ed invia un segnale alto al BASIC Stamp. Quando il sensore ne rileva l eco col suo microfono ultrasonico, cambia quel segnale alto riportandolo di nuovo allo stato basso. Il funzionamento del sensore Ping))) ricorda molto da vicino gli apparati sonar installati a bordo dei sottomarini, che servono a rilevare la presenza di altri scafi metallici e a misurarne la distanza.

56 Pagina 44 Sensori intelligenti e loro applicazioni pigolio Impulso di avvio Eco Impulso del tempo di eco Figura 2-2: Come lavora il sensore Ping))) Il commando BASIC Stamp PULSIN utilizza una variabile per memorizzare quanto lunga sia la durata del segnale a livello alto del sensore Ping))). Questa misura di tempo è la misura di quanto impieghi il suono a viaggiare fino all oggetto e a tornare indietro. Utilizzando la misura e la velocità del suono nell aria, potrete far sì che il vostro programma calcoli la distanza dell oggetto in centimetri, pollici,, piedi, ecc. I pigolii del sensore Ping))) non sono udibili poiché 40 khz è frequenza ultrasonica. Quello che consideriamo suono è la capacità del nostro orecchio interno di rilevare le variazioni di pressione dell aria causate da vibrazione. La velocità di queste variazioni determina quanto il suono sia acuto. Toni di frequenza più alta producono suoni più acuti e toni di frequenza più bassa producono suoni più gravi. La maggior parte delle persone possono sentire toni che vanno da 20 Hz, che è un tono molto basso, a 20 khz, che è un tono molto alto. Subsonico è un suono con frequenze sotto 20 Hz, e ultrasonico è un suono con frequenze sopra 20 khz. Poiché i pigolii del sensore Ping))) sono a 40 khz, essi sono definitivamente ultrasonici, e non udibili dalle persone. ACTIVITÀ #1: MISURA DEL TEMPO DI ECO In questa attività, proverete il sensore Ping))) e verificherete che vi dà le misure del tempo di eco che corrispondono alla distanza di un oggetto. Parti richieste (1) Sensore ultrasonico di distanza Ping)))

57 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 45 (3) Fili per il cablaggio Tutto ciò che vi occorre è un sensore Ping))) e tre fili di cablaggio per farlo lavorare. Il sensore Ping))) ha una protezione incorporata contro gli errori di programmazione (e gli errori di cablaggio), in modo che non c è bisogno di utilizzare una resistenza da 220 Ω tra P15 e il terminale SIG (segnale) del sensore Ping))). Circuito del sensore Ping))) La Figura 2-3 mostra lo schema circuitale e il cablaggio necessari a provare il sensore Ping))). Costruite il circuito. Figura 2-3: Schema circuitale e cablaggio del sensore Ping))) Prova del sensore Ping))) Come ricordato prima, il sensore Ping))) necessita di un impulso di avvio dal BASIC Stamp, impulso che avvia la sua misura. Un impulso su P15 che duri 10 µs (PULSOUT 15, 5) è facilmente rilevato dal sensore Ping))), e il BASIC Stamp impiega pochissimo tempo ad inviarlo. Un comando PULSIN che memorizza la durata dell impulso di eco del sensore Ping))) (PULSIN 15, 1, time) deve seguire immediatamente il comando PULSOUT. In questo esempio, il risultato che il comando PULSIN memorizza nella

58 Pagina 46 Sensori intelligenti e loro applicazioni variabile tempo è esattamente il tempo che il pigolio del sensore Ping))) impiega per raggiungere l oggetto, riflettersi, e ritornare al sensore. Programma esempio ProvaPing.bs2 Potete provare il programma che segue misurando la distanza di alcuni oggetti molto vicini. Per misure ravvicinate (oggetti in primo piano), il sensore Ping))) ha bisogno soltanto di essere da 3 a 4 pollici (approssimativamente da 8 a 10 cm) al di sopra della vostra superficie di lavoro. Comunque, se state misurando oggetti distanti più di mezzo metro, può servire di far salire di altezza il sensore Ping))), per evitare che gli echi del pavimento siano registrati come oggetti rilevati. Ponete la vostra Board of Education con il circuito del sensore Ping))) su qualcosa che la mantenga ad un altezza di almeno 8 cm sopra la superficie del tavolo. Ponete un oggetto (una bottiglia di acqua, una scatola o un bersaglio di carta) a 15 cm dalla parte anteriore del sensore Ping))). Digitate, memorizzate ed eseguite ProvaPing.bs2. Il terminale di debug dovrebbe iniziare a riportare un valore nell intervallo da 400 a 500. Muovete il bersaglio ad una distanza di 30 cm dal sensore Ping))) e verificate che il valore della variabile tempo sia all incirca raddoppiato. Puntate il vostro sensore Ping))) su molti oggetti vicini e lontani, e osservate le misure di tempo. ' Sensori intelligenti e loro applicazioni - ProvaPing.bs2 ' Prova il sensore ultrasonico di distanza Ping))) ' {$STAMP BS2} ' {$PBASIC 2.5} tempo VAR Word DO PULSOUT 15, 5 PULSIN 15, 1, tempo DEBUG HOME, "tempo = ", DEC5 tempo PAUSE 100 LOOP

59 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 47 Il vostro turno Prova di intervallo, angolo e misura di un oggetto In termini di precisione ed utilità complessiva, la rilevazione della distanza è realmente importante, specie se la si confronta con altri sistemi economici di rilevazione di distanze. Ciò non vuol dire che il sensore Ping))) sia capace di misurare "qualsiasi cosa". La Figura 2-4 mostra alcune situazioni per la cui misura Ping))) non è progettato: (a) distanze sopra i 3 metri, (b) angoli molto piccoli, e (c) oggetti di dimensioni minime. Figura 2-4: Il sensore Ping))) non è progettato per queste situazioni θ<45 (circa) oggetti troppo piccoli : a. b. c. In aggiunta, come ha scoperto Ken Gracey della Parallax Inc. durante una dimostrazione in classe nella scuola di suo figlio, alcuni oggetti con superfici morbide, irregolari (come gli animali di peluche) assorbiranno, anziché riflettere, il suono e per questa ragione può essere difficile che il sensore Ping))) li rilevi. Gli oggetti con superfici lisce che riflettono prontamente il suono sono rilevati più facilmente dal sensore. Provate a puntare il sensore Ping))) su vari oggetti a diverse distanze. Qual è il valore più grande che il sensore Ping))) restituisce? Quanto vicino all oggetto dovete mettervi prima che il tempo di misura inizi a diminuire? Provate a stare in piedi a distanza di un metro dalla parete, e puntate il sensore Ping))) contro la parte, e registrate la misura. Poi, provate a puntare il sensore Ping))) sulla parte a diversi angoli, come indica la Figura 2-5. I valori cambiano? A quale angolo il sensore Ping))) smette di rilevare la parete?

60 Pagina 48 Sensori intelligenti e loro applicazioni Figura 2-5 Determinazione del minimo angolo di rilevamento Provare ad appendere vari oggetti al soffitto a circa 1,5 metri dal sensore Ping))). Quanto può essere piccolo l oggetto? La forma o l angolo sono importanti? La richiesta di dimensione cambia a 0,5 metri? Provare a rilevare oggetti di dimensioni analoghe, ma fatti di materiali diversi, come una scatola da scarpe di cartone e una pantofola di pelo, per vedere se avete una distanza effettiva inferiore con oggetti fono-assorbenti. Potete trovare un qualsiasi oggetto invisibile al sensore Ping)))? Che succede con un tampone di palline di cotone, o una reticella di tulle? ATTIVITÀ #2: MISURE IN CENTIMETRI Questa attività mostra come usare la velocità del suono e l operatore PBASIC di Moltiplicazione Alta ( ** ) per calcolare la distanza di un oggetto basandosi sulla misura del tempo di eco dal sensore Ping))). Calcolo della distanza in centimetri con il PBASIC L equazione per il calcolo della distanza percorsa dal suono è S = C aria t, dove S è la distanza, C aria aria è la velocità del suono nell aria, e t è il tempo. Poiché la misura di tempo del sensore Ping))) fornisce il tempo che il suono impiega per raggiungere un oggetto e tornare indietro di rimbalzo, la distanza effettiva, S oggetto, è la metà della distanza totale percorsa dal oggetto aria suono. S = C t S C t S = = 2 2

61 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 49 La velocità del suono in aria è espressa comunemente in termini di metri per secondo (m/s). Però, per il calcolo con il BASIC Stamp, le misure in centimetri (cm) saranno più convenienti per fare i calcoli. Poiché un metro ha 100 centimetri, usiamo S oggetto-cm che è semplicemente 100 volte S oggetto. Le unità di misura dell argomento durata nel commando PULSIN Durata del BASIC Stamp 2 sono di 2/ di secondo (2 µs). Quindi, al posto di t, che deve essere misurato in secondi, useremo t PULSIN-BS2. Se moltiplicato per 2/ , t PULSIN-BS2 dà il numero di secondi. C è una coppia di 2 a numeratore e a denominatore che si cancellano, e 100 a numeratore elimina due degli zeri nel a denominatore. Il risultato di queste sostituzioni e cancellazioni è S ogetto-cm = (C aria t PULSIN-BS2 )/ S S oggetto -cm = 100C 2 100C = aria aria PULSIN-BS2 oggetto -cm t t S oggetto -cm = C aria t PULSIN-BS2 10,000 La velocità del suono in aria a temperatura ambiente di 72 F (22.2 C) è di 344,8 m/s. Dividendo per questo valore, ottieniamo S oggettit-cm = 0,03448 t PULSIN-BS2. S oggetto -cm = 344,8 t PULSIN-BS2 10,000 = 0,03448 t PULSIN-BS2 Il BASIC Stamp può utilizzare l operatore ** per moltiplicare una variabile che memorizza il valore misura della Durata nel comando PULSIN, per un valore frazionario minore di 1. Ad esempio, se il comando PULSIN memorizza la misura di eco nella variabile tempo, questo comando memorizzerà il risultato di distanza in centimetri nella variabile DistanzaCm: DistanzaCm = CostanteCm ** tempo

62 Pagina 50 Sensori intelligenti e loro applicazioni Con l operatore **, la variabile CostanteCm dovrà contenere il valore 2260, che è l equivalente di 0,03448 ottenuto con **. Invece di un denominatore decimale, come (nel caso di 0,03448), l operatore ** ha bisogno di un valore che sarebbe il numeratore di una frazione avente per denominatore Per ottenere quel numeratore, moltiplicate il vostro valore frazionario per Cos tantecm = 0, = 2260 Ora, abbiamo ottenuto il valore che ci serve per modificare ProvaPing.bs2 in modo che misurerà la distanza in centimetri. Aggiungeremo anche una variabile per memorizzare la distanza (DistanzaCm) assieme alla costante che memorizza il valore 2260 (CostanteCm). CostanteCm CON 2260 DistanzaCm VAR Word Quindi, il calcolo eseguito con ** può essere aggiunto al DO...LOOP del ProvaPing.bs2 per calcolare la misura dei centimetri. Il comando DEBUG nel programma può essere modificato perché visualizzi la misura. DistanzaCm = CostanteCm ** tempo DEBUG HOME, DEC3 DistanzaCm, " cm" Programma esempio: MisuraCmPing.bs2 Digitate, memorizzate ed eseguite MisuraCmPing.bs2. Muovete l oggetto bersaglio finché la misura visualizza 20 cm. Allineate il vostro righello con quella misura. La tacca di 0 cm dovrebbe allinearsi in qualche posto con il sensore Ping))), di solito in qualche posto tra il circuito stampato e la parte anteriore dell altoparlante/microfono. Ora, sperimentate con la misura di altre distanze. ' Sensori intelligenti e loro applicazioni - MisuraCmPing.bs2 ' Misura una distanza col sensore Ping))) e la visualizza in centimetri. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Costante di conversione per misure a temperatura ambiente. CostanteCm CON 2260

63 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 51 DistanzaCm VAR Word tempo VAR Word DO PULSOUT 15, 5 PULSIN 15, 1, tempo DistanzaCm = CostanteCm ** tempo DEBUG HOME, DEC3 DistanzaCm, " cm" PAUSE 100 LOOP Il vostro turno - Verifica dei calcoli Verifichiamo che il programma sta calcolando la distanza in modo corretto. Modificate MisuraPingCm.bs2 in modo che visualizzi i valori di entrambe le variabili tempo e distanza. Usate una calcolatrice per verificare che ottenete lo stesso risultato con l equazione della distanza e con il calcolo eseguito dal programma. S = 0,03448 t oggetto-cm PULSIN-BS2 ATTIVITÀ #3: MISURE IN POLLICI La maggior parte dei dispositivi elettronici di misura della distanza offre risultati sia in unità metriche che inglesi. Ad esempio, il calibro mostrato in Figura 2-6 ha un pulsante che potrete premere per scegliere tra mm e pollici. Altri dispositivi di misura offrono iarde o metri, o pollici o centimetri, ecc. Quindi perché il vostro programma possa visualizzare sia centimetri che pollici, questa attività introduce agli usi dell operatore moltiplicazione alta ( ** ) una seconda volta per convertire da centimetri a pollici.

64 Pagina 52 Sensori intelligenti e loro applicazioni Figura 2-6: Calibro con pulsante di commutazione mm/pollici Una costante per ** i pollici The CostanteCm utilizzata nella formula DistanzaCm = tempo ** CostanteCm è una misura della velocità del suono in centimetri per l unità di tempo del comando PULSOUT. In ciascun pollice ci sono 2,54 centimetri. Quindi, la formula di conversione delle distanza da centimetri a pollici (in.) si può scrivere così: Sin = Scm 2,54 Il modo più facile per convertire a pollici è semplicemente dividere il valore di CostanteCm per 2,54, è utilizzare il risultato prodotto in un altre costante, come CostanteIn. Ricordate che le costanti per l operatore ** dovranno essere intere, quindi arrotondate il risultato all intero più vicino. CostantePol = ,54 = 889, Programma esempio: MisuraCmEPolPing.bs2 Digitate, memorizzate ed eseguite MisuraCmEPolPing.bs2. Provate a misurare distanze e verificate che esse siano corrette con entrambi i sistemi di unità.

65 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 53 ' Sensori intelligenti e loro applicazioni - MisuraCmEPolPing.bs2 ' Misura distanze col sensore Ping))) e le visualizza in pollici (in) & cm ' {$STAMP BS2} ' {$PBASIC 2.5} ' Costanti di conversione per misure a temperature ambiente. CostanteCm CON 2260 CostanteIn CON 890 DistanzaCm VAR Word DistanzaIn VAR Word tempo VAR Word DO PULSOUT 15, 5 PULSIN 15, 1, tempo DistanzaCm = CostanteCm ** tempo DistanzaIn = CostanteIn ** tempo DEBUG HOME, DEC3 DistanzaCm, " cm" DEBUG CR, DEC3 DistanzaIn, " pollici" PAUSE 100 LOOP Il vostro turno In 1 piede ci sono 12 pollici. Modificare il programma in modo che visualizzi piedi e pollici. Suggerimento: Dopo aver calcolato DistanzaIn, usare / 12 per calcolare il numero di piedi, e // 12 per trovare il resto in pollici. In un decimetro ci sono 10 centimetri. Ripetere per decimetri e centimetri.

66 Pagina 54 Sensori intelligenti e loro applicazioni ATTIVITÀ #4: MISURE IN MOVIMENTO Questa attività illustra la visualizzazione di misure in centimetri e pollici del sensore Ping))) sul LCD seriale Parallax. Se state utilizzando una batteria come sorgente elettrica, potrete disconnettervi dal vostro computer e prendere le impostazioni in luoghi remoti di vostra scelta. Connessione del sensore Ping))) con un cavo di prolunga Per far spazio al LCD seriale Parallax sulla scheda Board of Education, connetteremo il sensore Ping))) alla scheda con un cavo di prolunga.potrete quindi mantenerlo orientato e puntarlo su vari luoghi, o utilizzare un supporto per montarlo vicino alla vostra Board of Education. Parti richieste (1) Sensore Ultrasonico Ping))) (1) LCD Seriale Parallax (2 16) (1) Cavo di prolunga per il LCD da 14 pollici (3) Fili per il cablaggio Se state lavorando da una scheda BASIC Stamp HomeWork Board o da una Board of Education Rev A or B seriale, vi occorreranno anche: (1) cavallotto a 3-pin (3) Fili di cablaggio aggiuntivi Cablaggi di connessione per Sensore Ping))) e LCD Gli schemi indicati in Figura 2-7 riportata qui sotto sono identici a quelli che abbiamo utilizzato per il sensore Ping))) e il LCD Seriale Parallax fino a questo punto. Cambieremo ora il modo in cui sono fatte queste connessioni elettriche aggiungendo un cavo, in modo che entrambi i dispositivi siano connessi convenientemente alla vostra scheda nello stesso tempo. Sebbene gli schemi siano gli stessi, le connessioni reali tramite cavo varieranno a seconda di quale scheda didattica BASIC Stamp stiate utilizzando.

67 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 55 Figura 2-7 Schema del Sensore Ping))) e del LCD Seriale Parallax LCD Parallax Cablaggi di connessione per la scheda Board of Education Rev C e per la Board of Education USB Queste istruzioni riguardano le schede che hanno le porte dei servo con un cavallotto Vdd/Vss interposto fra esse, come la scheda Board of Education Rev C e la scheda Board of Education USB. Per tutte le altre schede, saltare al paragrafo Visualizzazione di distanze con LCD a pagina 61. Scollegate l alimentazione della vostra scheda (le batterie o l alimentatore). Ponete il cavallotto tra i servo X4 e X5 a Vdd (+5 V) come indicato in Figura 2-8. Il cavallotto deve stare tra i due pin più vicini a Vdd, e il terzo pin vicino a Vin dovrà essere visibile.

68 Pagina 56 Sensori intelligenti e loro applicazioni Figura 2-8 Il cavallotto tra le Porte Servo posizionato su Vdd (+5 V) I posizionamenti del cavallotto su Vdd o Vin determinano quale alimentazione sia connessa alle porte X4 e X5. Quando il cavallotto è posizionato su Vdd, queste porte ricevono 5 V regolati dal regolatore di tensione della Board of Education. Se il cavallotto è posizionato su Vin, la porta riceve tensione direttamente dalla batteria o da un alimentatore. Collegate il LCD seriale Parallax come indicato. E lo stesso collegamento del capitolo precedente. Inserite una estremità del cavo di prolunga nella Porta 15 del connettore X4, assicurandovi che le scritte "Red" ( Rosso ) e "Black" ( Nero ) poste sulla destra della porta X5 siano allineate con i fili rosso e nero del cavo. Verificate che il vostro cavo sia inserito correttamente accertandovi che il filo bianco sia vicino alla parte della scritta 15 e il filo nero sia vicino alla scritta X4.

69 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 57 Figura 2-9 Porta del Servo e connessione del cavallotto per il sensore Ping))) Collegate l altra estremità del cavo in modo che il filo nero sia connesso al piedino (pin) GND del modulo Ping))), il filo rosso sia connesso al pin 5 V, e il filo bianco sia connesso al pin RX. Controllate due volte tutte le vostre connessioni, inclusi i posizionamenti del cavallotto, e accertatevi che siano corrette. ATTENZIONE! Non collegate la tensione alla vostra scheda fin quando non siete certi che i collegamenti siano corretti. Se fate un errore con le connessioni del LCD, il LCD Seriale Parallax potrebbe esser danneggiato permanentemente. Collegate di nuovo l alimentazione alla scheda. Ponete l interruttore a 3 posizioni della scheda Board of Education su 2.

70 Pagina 58 Sensori intelligenti e loro applicazioni Se avete una scheda Board of Education Rev C, saltate a Visualizzazione di distanze con LCD a pagina 61. Potete anche collegare con un cavo il LCD seriale Parallax alla Porta 14. Le istruzioni sono quasi le stesse di quelle per connettere il Ping))). Iniziate scollegando l alimentazione della vostra scheda. Il cavallotto per Vdd e Vin tra le porte servo deve essere posizionato su Vdd. Il cavo deve essere inserito nel connettore X4 in modo che il filo nero sia dalla parte della scritta X4 e il filo bianco sia vicino alla scritta 14. Quando collegate l altra estremità del cavo al LCD Seriale Parallax, assicuratevi che il filo nero sia connesso al pin GND, il filo rosso a 5V, e il filo bianco a RX. Questo capitolo riguarda la connessione del sensore Ping))) e del LCD Seriale Parallax ad una delle seguenti schede didattiche BASIC Stamp: Scheda HomeWork BASIC Stamp Board of Education Rev A (versione seriale) Board of Education Rev B (versione seriale) Scollegate l alimentazione dalla vostra scheda. Costruite i collegamenti sulla breadboard come mostrato in Figura 2-10.

71 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 59 Figura 2-10 Cablaggi della Breadboard per il collegamento del cavo al sensore Ping))) Inserite il LCD Seriale Parallax nella breadboard come mostrato in Figura 2-11 a pagina 60. Inserite una estremità del cavo di prolunga nel connettore a tre pin, assicurandovi che i fili bianco, rosso e nero siano orientati come mostrato. Il filo nero dovrà essere collegato a Vss, il filo rosso a Vdd, e il filo bianco a P15. Collegate l altra estremità del cavo in modo che il filo nero sia connesso al pin GND del Ping))), il filo rosso sia connesso al pin 5 V, e il filo bianco sia connesso al pin RX. Controllate due volte tutte le vostre connessioni, compresa la posizione del cavallotto, e accertatevi che siano corrette. ATTENZIONE! Non collegate l alimentazione alla vostra scheda fin quando non siate certi che i collegamenti siano corretti. Se fate un errore nelle connessioni del LCD, il LCD Seriale Parallax può essere danneggiato permanentemente. Ricollegate l alimentazione alla vostra scheda.

72 Pagina 60 Sensori intelligenti e loro applicazioni Figura 2-11: Connessioni sulla Breadboard per il Sensore Ping))) e il LCD Seriale Parallax

73 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 61 Visualizzazione di distanze con LCD Non occorrono molte modifiche perché il programma MisuraCmEdInPing.bs2 visualizzi le sue misure sul LCD. Prima di tutto, si deve aggiungere una parte ad Inizializzazione in modo che il programma aspetti fin quando la tensione di alimentazione si stabilizza e poi accenda e cancelli il LCD. PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 Quindi si devono convertire i comandi DEBUG in comandi SEROUT. Eccovi i comandi DEBUG dal programma MisuraCmEdInPing.bs2. DEBUG HOME, DEC3 DistanzaCm, " cm" DEBUG CR, DEC3 DistanzaIn, " pollici" I caratteri di controllo del Terminale di Debug (HOME e CR) devono essere cambiati nei codici di controllo che posizionano il cursore del LCD. SEROUT 14, 84, [128, DEC3 DistanzaCm, " cm"] SEROUT 14, 84, [148, DEC3 DistanzaIn, " poll."] Programma esempio: CmEPolPingLcd.bs2 Questo programma è una versione modificata del programma MisuraCmEPolPing.bs2 dell attività precedente. Invece di visualizzare le sue misure nel terminale di Debug, le visualizza nel LCD Seriale Parallax. Collegate la batteria alla vostra scheda. Digitate, memorizzate ed eseguite CmEdInPingLcd.bs2. Scollegate il cavo seriale, e portate la vostra scheda con voi dovunque vogliate per verificare le misure del sensore Ping))). ' Sensori intelligenti e loro applicazioni - MisuraCmEPolPing.bs2 ' Misura distanze col sensore Ping))) e le visualizza in pollici (in) & cm ' {$STAMP BS2} ' {$PBASIC 2.5} ' Costanti di conversione per misure a temperature ambiente. CostanteCm CON 2260 CostanteIn CON 890 DistanzaCm VAR Word

74 Pagina 62 Sensori intelligenti e loro applicazioni DistanzaIn VAR Word tempo VAR Word DO PULSOUT 15, 5 PULSIN 15, 1, tempo DistanzaCm = CostanteCm ** tempo DistanzaIn = CostanteIn ** tempo DEBUG HOME, DEC3 DistanzaCm, " cm" DEBUG CR, DEC3 DistanzaIn, " pollici" PAUSE 100 LOOP Il vostro turno Personalizzazione del Display Le misure sono di solito allineate a sinistra. Provate a centrarle. Provate ad allineare a destra le misure e a visualizzare "Distanza: " prima della misura in cm sulla riga superiore del LCD. Modificate il programma in modo che visualizzi entrambe le misure della distanza sulla riga superiore. Quindi, visualizzate il tempo effettivo di eco sulla riga inferiore. Potrete visualizzarlo in milionesimi di secondo (µs) moltiplicando la variabile tempo per 2 prima di visualizzarla. Assicuratevi che il vostro programma aspetti fino a dopo che ha fatto le sue conversioni di distanza prima di moltiplicare il tempo per 2. ATTIVITÀ #5: EFFETTO DELLA TEMPERATURA SULLA VELOCITÀ DEL SUONO Questa attività indaga sulle variazioni nella velocità del suono prodotti da variazioni della temperatura dell aria. Queste variazioni della velocità del suono possono produrre cambiamenti visibili alle vostre misure di distanza. Velocità del suono in rapporto alla temperatura e misure dell errore percentuale La velocità del suono cambia con la temperatura dell aria, con l umidità, e persino con la qualità dell aria. Né l umidità né la qualità dell aria provocano differenze consistenti, tali da incidere nei calcoli di distanza del sensore Ping))). La temperatura dell aria, d altra parte, può produrre errori di distanza misurabili. La velocità del suono aumenta di 0,6

75 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 63 metri al secondo (m/s) per ogni grado Celsius ( C) di aumento della temperatura. Dal momento che la velocità del suono è di circa 331,5 m/s a 0 C, possiamo utilizzare l equazione seguente per calcolare la velocità del suono a una data temperatura. Caria = 331,5 + ( 0,6 T ) m/s C Conversione da F a C e Viceversa Per convertire una misura di gradi Fahrenheit in Celsius, sottrarre 32 da T F (la misura in Fahrenheit), poi dividere per 1,8. Il risultato sarà T C, l equivalente in Celsius. Per convertire da Celsius a Fahrenheit, moltiplicare T C per 1,8, quindi aggiungere 32. Il risultato sarà T F. T = (T - 32) 1,8 TF = 1,8 TC + 32 C F Qui sotto sono riportati esempi della velocità del suono per due temperature di interni molto accettabili, ma leggermente diverse. Esempio 1: Calcolare la velocità del suono a 22,2 C, che equivale a circa 72 gradi Fahrenheit ( F). ( 22,2 C) = 331,5 + ( 0,6 22,2) m/s) 344,8 m/s C aria = Esempio 2: Calcolare la velocità del suono a 25 C, che equivale a 77 gradi Fahrenheit ( F). ( 25 C) = 331,5 + ( 0,6 25 ) m/s 346,5 m/s C aria = Che differenza produce questa variazione sulle vostre misure di distanza? Possiamo calcolare l errore percentuale che questa variazione propagherà con l equazione dell errore percentuale. effettiva - prevista % errore = 100% prevista

76 Pagina 64 Sensori intelligenti e loro applicazioni Se la temperatura prevista nella stanza è di 72 F (22,2 C), e la temperatura effettiva è di 77 F (25 C), l errore è lo 0,49 per cento. Un errore percentuale di mezzo per cento può costringervi a muovere l oggetto di mezzo centimetro oltre i 100 cm prima che la sua distanza passi da 99 a 100 cm. 346,5-344,8 % errore = 100% 344,8 = 0,49% Il vostro turno Temperatura ambiente in rapporto al gelo Calcolate l errore percentuale della misura che risulterebbe supponendo che la temperatura ambiente stia gelando (32 F, 0 C), ma è in realtà la temperatura della stanza (72 F, 22,2 C). Quanto scarterebbe la misura se l oggetto fosse distante 1 m? Usate la procedura introdotta nell Attività #2 per calcolare la velocità del suono e CostanteCm per la misura a 0 C. Memorizzate MisuraCmPing.bs2 col nome MisuraCmPingTuoTurno.bs2 Eseguite il programma prima di modificarlo e provate la misura della distanza di un oggetto ad 1 m. Modificate la direttiva CostanteCm CON con il valore per 0 C. Provate di nuovo il programma con un oggetto ad 1 m. Quanto è vicino il vostro errore previsto all errore effettivo?

77 CapItolo 2: Il sensore ultrasonico Ping))) Pagina 65 SOMMARIO Il BASIC Stamp richiede una misura al sensore Ping))) inviandogli un breve impulso, che produce dal sensore l emissione di un pigolio a 40 khz. Poi, il Ping))) ascolta se c è un eco di quel pigolio. Il sensore dà conto dell eco restituendo al BASIC Stamp un impulso uguale al tempo che prende il sensore Ping))) per ricevere l eco. Per calcolare la distanza basandosi sulla misura del tempo di eco, la velocità del suono deve essere convertita in unità convenienti per il BASIC Stamp. Questo procedimento comporta la conversione dei metri al secondo in centimetri per unità di misura PULSIN. Anche il valore risultante deve essere convertito in un valore utilizzabile con l operatore moltiplicazione alta ( ** ), moltiplicandolo per La velocità del suono nell aria è c aria = 331,5 + (0,6 T C ) m/s. Poiché la velocità del suono cambia con la temperatura, gli errori di misura che ne risultano sono piccoli, specie a temperatura ambiente. Domande 1. Qual è l intervallo (di sensibilità) del sensore Ping)))? 2. Cosa significa ultrasonico? 3. Quale segnale manda il sensore Ping))) al BASIC Stamp e come questo segnale corrisponde ad una misura di distanza? 4. Quali tre scenari di orientamento sensore-oggetto possono fare in modo che il sensore Ping))) restituisca una misura errata della distanza? 5. Quando si usa un BS2, quali incrementi di tempo vengono restituiti dal commando PULSIN? 6. Qual è la velocità del suono in aria a temperatura ambiente? 7. Come si rapporta la costante CostanteCm alla velocità del suono in aria? 8. Che cosa dovete fare al cavallotto posto tra i connettori dei servo X4 e X5 sulla Board of Education per fornire la tensione di alimentazione corretta a dispositivi come il sensore Ping))) e il LCD seriale Parallax? Cosa potrebbe accadere se questo cavallotto non è posizionato in modo corretto? 9. Quali comandi devono essere modificati se si vuole che il LCD Parallax visualizzi quanto sta visualizzando il Terminale di Debug? 10. Che ruolo gioca la temperature dell aria sulla velocità del suono in aria?

78 Pagina 66 Sensori intelligenti e loro applicazioni Esercizi 1. Calcolare quanti metri è lontano un oggetto se il tempo di eco è di 15 ms, e la temperatura è 22,5 C. 2. Calcolare l equivalente in C di 100 F. 3. Calcolare l equivalente in piedi di 30,48 cm. 4. Calcolare l errore percentuale se CostanteCm è per 37,8 C ma la temperatura effettiva è 0 C. Predire quale sarebbe la distanza misurata se l oggetto fosse posto a 0,5 m. Progetti 1. Aggiungere un circuito LED alla vostra scheda e programmare il BASIC Stamp perché il LED lampeggi quando non c è alcun oggetto nell intervallo (di sensibilità del sensore). 2. Utilizzare un piezo - altoparlante per costruire un allarme che segnali quando una persona attraversa il vano di una porta. Il sensore Ping))) dovrà essere montato vicino al vano della porta, puntando il centro del cammino lungo il quale una persona camminerà quando entra o esce dalla porta.

79 Capitolo 2: Inclinazione con l accelerometro Memsic Pagina 67 Soluzioni Q1. Da 3 centimetri a 3,3 metri. Q2. Un suono con frequenza superiori a 20 khz. Q3. Un impulso alto, la cui durata corrisponde al tempo che impiega il pigolio sonoro a viaggiare fino all oggetto e tornare al sensore. Q4. a) Distanza sopra i 3 metri, b) Angoli stretti, c) Oggetti troppo piccoli. Q5. Incrementi di 2µs. Q6. 344,8 m/s. Q7. CostanteCm è l equivalente, operato da **, della velocità del suono nell aria diviso per 10000, ovvero 0, Q8. Il cavallotto deve essere posto nella posizione Vdd, altrimenti il LCD potrebbe essere danneggiato. Q9. Tutti i comandi DEBUG devono essere modificati, e i caratteri di controllo devono essere modificati nei corrispondenti codici di controllo del LCD. Q10. Un ruolo molto importante, con la velocità del suono che aumenta di 0,6 m/s per ciascun aumento di un grado C nella temperatura dell aria. E1. L oggetto è distante 2,59 m. E F = 37,7 C E3. 30,48 cm = 1,0 ft. E4. % errore = +/- 6,84%; distanza misurata = 0,466 m. P1. La soluzione esempio che segue pone un LED su P13 in stato attivo - alto. ' Sensori intelligenti e loro applicazioni - Cap2_Progetto1.bs2 ' Indica misure fuori-intervallo con un LED che lampeggia. Regola ' DistanzaMax per adattarla. ' {$STAMP BS2} ' {$PBASIC 2.5} LED PIN 13 ' LED rosso attivo alto LCD PIN 14 ' LCD Seriale Parallax Ping PIN 15 ' sensore Ping))) Parallax CostanteCm CON 2260 ' Calcola tempo viaggio del suono CostanteIn CON 890 DistanzaMax CON 361 ' Il massimo che si può misurare ' (empirico) DistanzaCm VAR Word ' Distanza in centimetri tempo VAR Word ' Tempo di eco del viaggio PAUSE 200 SEROUT LCD, 84, [22, 12] PAUSE 5 ' Inizializza LCD DO

80 Pagina 68 Sensori intelligenti e loro applicazioni LOW LED ' LED spento prima di ciascun misura PULSOUT 15, 5 ' Avvia sensore Ping))) PULSIN 15, 1, tempo ' Legge il tempo di eco DistanzaCm = CostanteCm ** tempo ' Calcola distanza da tempo SEROUT LCD, 84, [128, DEC3 DistanzaCm, " cm"] ' Stampa distanza su ' schermo LCD IF DistanzaCm >= DistanzaMax THEN HIGH LED ' Commuta LED se fuori ' dell intervallo PAUSE 100 LOOP P2. Soluzione esempio: ' Sensori intelligenti e loro applicazioni - Progetto2Cap2.bs2 ' Produce un suono quando qualcuno attraversa il vano della porta. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Definizioni I/O] Ping PIN 15 ' Sensore Ping))) Parallax Altoparlante PIN 9 ' Altoparlante opzionale ' -----[ Costanti ] CostanteIn CON 890 MontantePorta CON 35 ' Larghezza vano porta è 35 pollici ' -----[ Variabili ] DistanzaIn VAR Word tempo VAR Word ' Tempo di eco del viaggio contatore VAR Nib ' -----[ Routine principale ] DO GOSUB Legge_Ping GOSUB Calcola_Distanza IF (DistanzaIn < MontantePorta) THEN GOSUB Suona_Allarme ENDIF LOOP ' -----[ Subroutines ] Legge_Ping: PULSOUT 15, 5 ' Avvia sensore Ping))) PULSIN 15, 1, tempo ' Legge tempo di eco RETURN Suona_Allarme: FREQOUT Altoparlante, 300, 3300 ' Bing PAUSE 50 FREQOUT Altoparlante, 450, 2200 ' Bong RETURN RETURN Calcola_Distanza: DistanzaIn = CostanteIn ** tempo ' Ecco tutte le misure

81 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 69 Capitolo 3: L Accelerometro Memsic a due assi L accelerazione è una misura di quanto rapidamente varia la velocità. Così come un tachimetro è uno strumento che misura la velocità, un accelerometro è uno strumento che misura l accelerazione. Potrete utilizzare la capacità di un accelerometro di sentire l accelerazione per fare una gran varietà di misure molto utili in progetti di elettronica e robotica. Ecco alcuni esempi: Accelerazione Inclinazione ed angolo di inclinazione Pendenza Rotazione Vibrazione Collisione Gravità Gli accelerometri sono già utilizzati in moltissimi dispositivi differenti, comprese apparecchiature elettroniche personali, e apparecchiature e macchine specializzate. Ecco qui pochi altri esempi: Robot a bilanciamento automatico Controllori di giochi per il modo inclinato Autopiloti di aeromodelli Sistemi di allarme per automobile Sistemi che fanno uso di rilevatori di urto/ airbag Sistemi di rilevamento del moto umano Strumenti di livellamento Molto tempo fa, gli accelerometri erano strumenti molto grandi, poco efficienti e costosi che non si prestavano a progetti di elettronica e robotica. Tutto questo è cambiato grazie all avvento della tecnologia MEMS, sistemi-microelettronici-meccanici (SMEM). La tecnologia MEMS è responsabile di un numero sempre crescente di dispositivi in precedenza meccanici, ora correttamente progettati all interno di chip di silicio.

82 Pagina 70 Sensori intelligenti e loro applicazioni L accelerometro con cui lavorerete in questa prova è il modulo accelerometro Memsic 2125 a due assi Parallax mostrato in Figura 3-1. Le misure di questo modulo sono inferiori a 1 / 2 1 / 2 1 / 2, e lo stesso chip dell accelerometro è più piccolo di 1 / 4 1 / 4 1 / 8. Figura 3-1: Modulo accelerometro e chip MX2125 Modulo Accelerometro Chip MX2125 Le persone sentono naturalmente l accelerazione su tre assi: avanti/indietro, sinistra/destra e alto/basso (su/giù). Pensate esattamente all ultima volta che stavate sul sedile del passeggero di un automobile su una strada collinosa e piena di curve. L accelerazione avanti/indietro è la sensazione di andar più forte e rallentare. L accelerazione sinistra/destra vi fa pendere quando si fanno le curve, e l accelerazione su giù è quella che avvertite andando sulle colline. A differenza del senso che le persone hanno sui tre assi, l accelerometro MX2125 sente una accelerazione su due assi. L accelerazione che sente dipende da come è posizionato. Mantenendolo in una direzione, può sentire aventi/indietro e sinistra/destra. Se lo tenete in modo diverso, può sentire su/giù e avanti/indietro. Due assi di accelerazione sono sufficienti per molte delle applicazioni elencate prima. Anche se potrete sempre montare e controllare un secondo accelerometro per catturare quel terzo asse, gli accelerometri a tre assi sono anch essi molto comuni. Per un accelerometro a 3 assi, provate il nostro modulo accelerometro a tre assi Hitachi H48C, numero di parte Parallax #28026.

83 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 71 L ACCELEROMETRO MX2125 COME LAVORA Il progetto del MX2125 è meravigliosamente semplice. Ha una camera piena di gas con un elemento riscaldatore al centro e quattro sensori di temperatura intorno al suo bordo. Come l aria calda sale e raffredda i dissipatori di calore, lo stesso vale per i gas bollenti e freddi. Se tenete l accelerometro fermo, tutto ciò che sente è la gravità, e inclinandolo abbiamo un esempio di come senta l accelerazione statica. Quando mantenete livellato un accelerometro, la tasca di gas bollente sale nella parte centrale alta della camera dell accelerometro, e tutti i sensori misureranno la stessa temperatura. A seconda di come inclinerete l accelerometro, il gas bollente si raccoglierà più vicino ad uno o forse due dei sensori di temperatura. Figura 3-2: La tasca di gas riscaldato di un accelerometro Confrontando la temperatura dei sensori, si possono rilevare sia l accelerazione statica (gravità e inclinazione) che l accelerazione dinamica (come nel fare una corsa in automobile). Se prendeste con voi l accelerometro nella corsa in automobile, i gas bollenti e quelli freddi si spargerebbero nella camera in modo simile a quello che accade in un contenitore mezzo pieno di acqua, e i sensori rileverebbero questo comportamento. Nella maggior parte dei casi, portare queste sensazioni in quelle misure è compito semplice grazie all elettronica interna al MX2125. Il MX2125 converte le misure di temperature in segnali (durate di impulso) facili da misurare e decifrare per il microcontrollore BASIC Stamp.

84 Pagina 72 Sensori intelligenti e loro applicazioni ATTIVITÀ #1: CONNETTERE E PROVARE AD INCLINARE IL MX2125 In questa attività, collegherete il modulo accelerometro al BASIC Stamp, eseguirete un programma di prova, e verificherete che si può utilizzare per sentire l inclinazione. Parti richieste (2) Fili di collegamento da 3 pollici (2) Resistenze 220 Ω (1) Accelerometro Memsic MX2125 a due assi Connessioni elettriche e di segnale dell accelerometro La Figura 3-3 mostra come collegare il modulo accelerometro all alimentazione della Board of Education, assieme alle connessioni con i pin I/O del BASIC Stamp che occorre fare per eseguire il programma di prova. Connettete il modulo accelerometro utilizzando la Figura 3-3 come guida. Figura 3-3: Schema e Diagramma di cablaggio dell accelerometro Ascoltare i segnali dell accelerometro con il BASIC Stamp I due assi che il MX2125 utilizza per sentire la gravità e l accelerazione sono etichettati con x e y nella Figura 3-4. Vi sarà di aiuto mantenere in piano la vostra scheda sul tavolo di fronte a voi come mostrato in figura. In questo modo, gli assi x e y puntano nelle stesse direzioni in cui sono orientati molti diagrammi xy.

85 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 73 Figura 3-4: Misure di impulso sull asse dell accelerometro inclinazione asse Y Asse Y Asse X Inclinazione asse X Per la prova a temperatura ambiente, potrete ottenere una indicazione molto esatta dell inclinazione misurando semplicemente con il comando PULSIN le alte durate di impulso inviate ai pin Xout e Yout del MX2125. A seconda di quanto ampiamente e in quale direzione inclinate la scheda BoE, le misure di tempo del PULSIN dovrebbero stare nell intervallo da 1875 a Quando la scheda è a livello (in piano), il comando PULSIN dovrebbe immagazzinare valori prossimi a 2500.

86 Pagina 74 Sensori intelligenti e loro applicazioni Accertatevi che la vostra scheda sia posizionata in piano sul tavolo, orientata con i suoi assi x e y come mostra la Figura 3-4. Digitate ed eseguite il programma InclinaSemplice.bs2. ' Sensori intelligenti e loro applicazioni - InclinaSemplice.bs2 ' Misura l inclinazione a temperatura ambiente. '{$STAMP BS2} '{$PBASIC 2.5} x VAR Word y VAR Word DEBUG CLS DO PULSIN 6, 1, x PULSIN 7, 1, y DEBUG HOME, DEC4? X, DEC4? Y PAUSE 100 LOOP Controllate per assicurarvi che il terminale di Debug riporti il fatto che le variabili x e y memorizzano entrambe valori intorno a 2500 come mostrato in Figura 3-5. Figura 3-5 Uscita del Terminale di Debug

87 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 75 Afferrate il bordo della scheda dove è l etichetta dell asse Y e sollevatela gradualmente verso di voi. Il valore di y dovrebbe aumentare man mano che aumentate l inclinazione. Mantenete la scheda inclinata verso di voi fin quando è esattamente orientata nel verso su/giù. Il terminale di Debug dovrebbe riportare che la variabile y memorizza un valore prossimo a Rimettete la scheda di nuovo in piano. Ripetete questa prova con l asse x. Man mano che inclinate la scheda in alto verso di voi con la vostra mano destra, il valore x dovrebbe aumentare e raggiungere un valore prossimo a 3125 quando la scheda è verticale. Se inclinate la scheda verso l alto con la vostra mano sinistra, il valore x dovrebbe avvicinarsi a Finalmente, mantenete la vostra scheda davanti a voi, dritta in direzione su/giù come il volante di un automobile. Appena ruotate lentamente la vostra scheda, i valori x e y dovrebbero cambiare. Questi valori saranno utilizzati in una attività successiva per determinare l angolo di rotazione in gradi. ATTIVITÀ #2: MISURE IN MOVIMENTO Questa attività visualizzerà le misure dell accelerometro Memsic sul LCD seriale Parallax. Nel caso che usiate una batteria, dopo aver scritto e provato il programma potrete scollegarvi dal vostro computer ed effettuare la messa a punto in un luogo lontano di vostra scelta. Connessione di entrambi i moduli al BASIC Stamp Sia l accelerometro Memsic che il LCD seriale possono essere ospitati contemporaneamente sulla vostra scheda e quindi non vi occorrerà il cavo di estensione, a meno che non scegliate di montare il LCD seriale Parallax vicino alla Board of Education o in una scatola da progetti. Parti richieste (1) Accelerometro Memsic 2125 (1) LCD seriale Parallax (2 16) (5) Fili di cablaggio (2) Resistenze 220 Ω

88 Pagina 76 Sensori intelligenti e loro applicazioni Costruzione dei circuiti dell accelerometro e del LCD Gli schemi mostrati nella Figura 3-6 sono identici a quelli utilizzati per l accelerometro Memsic e il LCD seriale Parallax nelle attività precedenti. Figura 3-6 Schemi dell accelerometro Memsic e del LCD seriale Parallax LCD Parallax I diagrammi di cablaggio per l accelerometro Memsic e il LCD seriale Parallax mostrati in Figura 3-7 e Figure 3-8 sono una combinazione dei due diagrammi di cablaggio precedenti per i singoli moduli. Costruite prima il diagramma di cablaggio mostrato in Figura 3-7.

89 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 77 Figura 3-7 Diagramma di cablaggio per l accelerometro Memsic MX2125 Inserite quindi il LCD seriale Parallax come mostra la Figure 3-8. Figure 3-8: Diagramma di cablaggio del display seriale LCD, aggiunto al MX2125 Display LCD inclinato La modifica di tutti i programmi esempio per l accelerometro riportati in questo capitolo per fare in modo che visualizzino le misure sul LCD è un tipico procedimento a due stadi. Il primo consiste nell aggiungere la routine di Inizializzazione del LCD, e poi sostituire i comandi DEBUG con comandi SEROUT che visualizzeranno le informazioni sul LCD.

90 Pagina 78 Sensori intelligenti e loro applicazioni Ricordare sempre di aggiungere questa Inizializzazione o prima della Routine principale, o, come nei piccoli programmi, prima della prima direttiva DO. Questo eviterà che l inizializzazione venga ripetuta tutte le volte nel ciclo DO...LOOP assieme al resto del programma. Assicuratevi di mantenere la routine fuori dal ciclo principale DO...LOOP poiché essa potrebbe produrre un lampeggiamento del display. ' Inizializza LCD PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 Quindi, dovrete modificare i comandi DEBUG cambiandoli in comandi SEROUT. Eccovi il comando DEBUG dal programma InclinaSemplicet.bs2. DEBUG HOME, DEC4? X, DEC4? Y Il carattere di controllo HOME dovrà essere sostituito da 128, che è il carattere di riposizionamento a sinistra (home) del LCD. La direttiva? visualizza il nome della variabile, seguito da un carattere ritorno carrello (CR). Ricordate dal Capitolo 1 che CR è l unico carattere di controllo che rimane lo stesso tanto per il terminale di Debug che per il LCD seriale Parallax? Per questa ragione, possiamo lasciare la direttiva? nel comando SEROUT anche per il LCD. Ecco un commando SEROUT che effettua la visualizzazione equivalente nel LCD seriale Parallax. SEROUT 14, 84, [128, DEC4? X, DEC4? Y] Programma esempio: InclinaSempliceLcd.bs2 Questo programma è una versione modificata del InclinaSemplice.bs2 dall attività precedente. Invece di visualizzare le sue misure sul terminale di Debug, le visualizzerà sul LCD seriale Parallax. Connettete una batteria alla vostra scheda. Digitate, memorizzate ed eseguite InclinaSempliceLcd.bs2. Scollegate il cavo seriale, e portate con voi la vostra scheda in qualsiasi posto vogliate provare le misure dell accelerometro Memsic. ' Sensori intelligenti e loro applicazioni - InclinaSempliceLcd.bs2 ' Misura l inclinazione a temperatura ambiente e visualizza la misura sul ' LCD seriale Parallax. '{$STAMP BS2} '{$PBASIC 2.5}

91 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 79 x VAR Word y VAR Word ' DEBUG CLS ' Inizializza il LCD PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 DO PULSIN 6, 1, x PULSIN 7, 1, y ' DEBUG HOME, DEC4? X, DEC4? Y SEROUT 14, 84, [128, DEC4? X, DEC4? Y] PAUSE 100 LOOP Il vostro turno Personalizzazione del Display Il ritorno carrello (CR) incorporato nell operatore? rende più difficile visualizzare informazioni dopo i valori della variabile x o y. Potrete riscrivere i comandi DEBUG e SEROUT per eseguire le stesse operazioni come nel comando: DEBUG HOME, "x = ", DEC4 x, CR, "y = ", DEC4 y Questo comando SEROUT visualizza la stessa informazione sul LCD seriale Parallax. Notate che il codice di controllo 128 posiziona il cursore sulla Riga 0, al carattere 0. Invece di un carattere di controllo CR, 148 posiziona il cursore del LCD sulla Riga 1, al carattere 0. SEROUT 14, 84, [128, "x = ", DEC4 x, 148, "y = ", DEC4 y] Con questo commando SEROUT modificato, è più facile visualizzare caratteri dopo ciascun valore. Per esempio, ecco un commando SEROUT che moltiplica ciascuna misura per 2 e visualizza, dopo la misura, la scritta "us". SEROUT 14, 84, [128, "x = ", DEC4 (2 * x), " us", 148, "y = ", DEC4 (2 I y), " us"]

92 Pagina 80 Sensori intelligenti e loro applicazioni Dove "us" non è proprio la stessa cosa di "µs" (microsecondi) poiché stiamo utilizzando una u invece della lettera greca mu, ma la maggior parte delle persone conoscono il suo significato. Potrete anche fabbricare un carattere personalizzato per il carattere mu. Questo comporta il dover aggiungere un comando SEROUT all inizio del programma che definisca un carattere personalizzato. Poi dovrete visualizzare questo carattere personalizzato dove è visualizzata attualmente la "u". ATTIVITÀ #3: RIDUZIONE IN SCALA (SCALATURA) E SPOSTAMENTO (RISPETTO ALL ORIGINE) DEI VALORI DI INGRESSO - OFFSET) Quando si lavora con il MX2125 e il BASIC Stamp 2, le misure di inclinazione variano nell intervallo tra 1875 e Questo intervallo può essere ridotto in scala e spostato quante volte si vuole. Ad esempio, l attività #4 scala questo intervallo ai valori da 100 a 100. L attività #5 lo scala tra 127 e 127. Introdurre un offset (spostamento) in un intervallo di valori è facile, e comporta tipicamente una operazione di somma o sottrazione. La riduzione in scala può essere un pò più complessa, specialmente con un processore come il BASIC Stamp, che effettua tutti i suoi calcoli con matematica a numeri interi. Questa attività introduce il modo più semplice e preciso per ridurre in scala con un programma PBASIC un gran numero di intervalli di valori ad un intervallo più piccolo. La tecnica introdotta qui aiuta ad evitare che si introducano di nascosto errori nelle misure del vostro sensore in ciascuno dei successivi cicli di calcolo PBASIC, e sarà utilizzata e riutilizzata in molte delle attività di questo manuale. Esempio di riduzione in scala (scalatura) e spostamento di valori (offset) In questo primo esempio, acquisiremo un valore qualsiasi tra 1875 e 3125 in ingresso, lo scaleremo e lo sposteremo fino ad un valore corrispondente in uscita che cada nell intervallo tra 127 e 127. La Figura 3-9 mostra come opererà questo procedimento. La posizione del valore nella scala di uscita dovrà essere proporzionale alla posizione del valore nella scala di ingresso. Per esempio, se il valore di ingresso è 2500, che si trova a metà intervallo tra 1875 e 3125, dovremo aspettarci che il valore di uscita sia 0, che è a metà intervallo tra 127 e 127.

93 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 81 Figura 3-9: Esempio di scale di Ingresso e di Uscita Scala di ingresso Scala di uscita Per applicare la riduzione in scala e lo spostamento (offset) in PBASIC, ricordare questi tre passi: 1) Applicare lo spostamento per allineare a zero la scala di ingresso. 2) Applicare la riduzione in scala (o scalatura). 3) Applicare ogni spostamento aggiuntivo necessario alla vostra scala di uscita. La Figura 3-10 mostra come applicare questi tre passi con un unico commando PBASIC che esegua sia la riduzione in scala che lo spostamento. Tenete a mente che i calcoli con il PBASIC sono eseguiti da sinistra a destra, tranne nel caso che questo procedimento sia scavalcato con l uso delle parentesi. Pertanto la prima operazione che questa riduzione in scala effettua è sottrarre 1875 dal valore di ingresso. Il nuovo intervallo è adesso da 0 a 1200 invece che da 1875 a Poi, ** riduce in scala il valore tra 0 e 254. Dopo aver effettuato la riduzione in scala dell intervallo, è sottratto il valore 127 dal valore ottenuto, e ne risulta un valore tra 127 e 127. (1875 a 3125) (0 a 1200) (0 a 1200) (0 a 254) (0 a 254) (-127 a 127) valore = valore ** Figura 3-10: Riduzione in scala della variabile valore

94 Pagina 82 Sensori intelligenti e loro applicazioni Scegliere l operazione Destra ** Costante per la riduzione in scala (scalatura) Il valore utilizzato con la ** per una constante per ridurre in scala l intervallo (0 a 1250) a quello (0 a 254) è stato ottenuto sostituendo entro questa equazione il numero di elementi nelle scale di ingresso e di uscita. Il numero di elementi della scala di uscita è 255, incluso lo 0, e il numero di elementi della scala di ingresso è 1251, incluso anche qui lo 0. Usate questa equazione ogni volta che vi occorra adattare una scala più grande ad una più piccola con l operatore **. elementi scala uscita Cos tantescala = Int elementi scala ingresso 1 Cos tantescala 255 = Int [ ] Cos tantescala = Int ,344 Cos tantescala = Arrotondate sempre il risultato ottenuto per la vostra CostanteScala, anche se il risultato è già un valore intero! Altrimenti, il valore più grande nella vostra scala di ingresso potrebbe essere un valore fuori dall intervallo della scala di uscita. Fissare l Intervallo di valori di Ingresso Il modo migliore per assicurarsi che i valori di uscita non superino l intervallo di uscita è accertarsi che i valori di ingresso non vadano fuori dall intervallo di ingresso. Ad esempio, se non volete che l uscita di questo commando vada fuori dall intervallo da 127 a 127, l approccio più conveniente è quello di accertarsi che i valori di ingresso non vadano sotto 1875 o sopra Ecco una versione modificata di valore = valore ** che evita il problema. valore = (valore MIN 1875 MAX 3125) ** Prima di sottrarre 1875 dalla variabile valore, questo commando utilizza due operatori, MIN 1875 e MAX 3125, per accertarsi che valore memorizzi un numero che cada in

95 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 83 questo intervallo. Se la variabile valore sta memorizzando un numero in questo intervallo, gli operatori MIN e MAX lo lasciano da solo. Se, però, sta memorizzando qualcosa al di sotto di 1875, MIN 1875 cambierà tale valore in Analogamente, se sta memorizzando qualcosa al di sopra di 3125, MAX 3125 lo cambia in Programma esempio: ProvaOffsetScala.bs2 La Figure 3-11 mostra come appare il terminale di Debug quando si prova ad eseguire il programma esempio che segue. Quando digitate i valori di ingresso (separati da virgole) nella finestrella di Trasmissione del Terminale di Debug, il programma visualizza nella finestrella di Ricezione del terminale di Debug il valore equivalente scalato e spostato. Digitate, memorizzate ed eseguite ProvaOffsetScala.bs2. ' Sensori intelligenti e loro applicazioni - ProvaOffsetScala.bs2 ' Prova la riduzione in scala da un intervallo di ingresso da 1875 a 3125 ad ' un intervallo di uscita da -127 a '{$STAMP BS2} '{$PBASIC 2.5} valore VAR Word DEBUG CLS, "Digita valori (da 1875 a 3125)...", CR DO DEBUG ">" DEBUGIN DEC valore valore = (valore MIN 1875 MAX 3125) ** DEBUG ", scalato a ", SDEC valore, CR LOOP

96 Pagina 84 Sensori intelligenti e loro applicazioni Figure 3-11: Prova riduzione in scala Digita valori (da 1875 a 3125) >1875, scalato a -127 >1876, scalato a -127 >1879, scalato a -127 >1880, scalato a -126 >1881, scalato a -126 >2496, scalato a -1 >2497, scalato a -1 >2498, scalato a 0 >2499, scalato a 0 >2500, scalato a 0 >2501, scalato a 0 >2502, scalato a 0 >2503, scalato a 1 >2504, scalato a 1 >3119, scalato a 126 >3120, scalato a 126 >3121, scalato a 127 >3124, scalato a 127 >3125, scalato a 127 > Finestrella di Trasmissione Finestrella di Ricezione Cliccate nella Finestrella di Trasmissione del Terminale di Debug e digitate questa sequenza, incluse le virgole: 1875, 1876, 1879, 1880, 1881, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 3119, 3120, 3121, 3124, Provate vari altri valori nell intervallo da 1875 a 3125, e verificate con una calcolatrice che la posizione del valore di uscita nell intervallo di uscita è proporzionale alla posizione del valore di ingresso nell intervallo di ingresso. Il vostro Turno - PBASIC e i Numeri Negativi L ultimo programma esempio esaminato utilizzava il modificatore SDEC del comando DEBUG per visualizzare la variabile valore come un numero con segno (numero relativo). Ricordate che in PBASIC una variabile dimensionata a parola può contenere

97 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 85 un valore senza segno nell intervallo da 0 a oppure un valore con segno tra e Ciò è dovuto al fatto che il PBASIC utilizza il metodo del complemento a due per i numeri con segno. In questo metodo, tutti i numeri positivi, in binario, iniziano con uno 0 e tutti i numeri negativi, in binario, iniziano con un 1. Utilizzando il complemento a due, i valori tra 0 e sono rappresentati dai loro normali equivalenti binari a 16-bit, ma quelli tra 1 e non lo sono. Invece, quei numeri negativi sono rappresentati dagli equivalenti binari dei numeri tra e Tabella 3-1: Complemento a due di un numero Decimale con segno e Numeri Binari Decimale senza segno Binario a 16-Bit Bit 15 Bit 0 Decimale con segno Scrivi una riga di numeri, come in Figura Da 0 in avanti, i valori tra 0 e sono rappresentati dai loro normali equivalenti binari a 16-bit: il valore 1 è rappresentato dal numero binario 1, e così via, fino a Ma il numero 1 è rappresentato dall equivalente binario di 65535, il più grande valore contenuto in una variabile di tipo word, che è il numero binario composto da tutti 1. Andando avanti nei valori negativi, i numeri binari che li rappresentano diventano più piccoli fino al numero che è rappresentato dal valore binario

98 Pagina 86 Sensori intelligenti e loro applicazioni Figura 3-12: Riga di numeri decimali con segno rappresentati in complemento a due (DEC 32767) (DEC 1) (DEC 65535) (DEC 32768) Lo schema diviene evidente quando vedete un numero decimale non segnato a confronto con il suo valore decimale con segno e i loro equivalenti binari. Provate ad eseguire NumeriConSegno.bs2 con valori differenti per x fin quando lo schema vi diventa chiaro. Provate questi valori per x: 0, 1, 2, -1, -2. Quindi provate 65535, 65534, 32767, 32768, e Vi è chiaro come lavora? ' Sensori intelligenti e loro applicazioni - NumeriConSegno.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} x VAR Word x = '<< Inserire qui i nuovi valori di x, e rieseguire il programma DEBUG "avete inserito il decimale: ", DEC x, CR DEBUG "decimale con segno: ", SDEC x, CR DEBUG "binario a 16-bit: ", BIN16 x, CR In PBASIC, soltanto le variabili di tipo word possono ospitare numeri con segno, quindi tutti i numeri con segno hanno 16 bit. Se guardiamo il bit più a sinistra, Bit 15, possiamo sapere se un numero con segno è negativo o positivo. Potete utilizzare valore.bit15 come una variabile che vi dice se valore è un numero positivo o negativo. Se valore.bit15 è uguale a 0, il numero è positivo. Se è uguale a 1, il numero è negativo. Questo è un suggerimento importante, perché alcuni operatori importanti del PBASIC, come l operatore di divisione "/" e l operatore modulo "//", lavorano soltanto con interi positivi. Quando utilizzate questi operatori, è conveniente memorizzare il segno di un

99 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 87 numero, ed effettuare l operazione con il suo valore assoluto, quindi riapplicare successivamente il segno. In realtà, faremo proprio così più avanti, nel capitolo 4. Il vostro turno Uno sguardo più da vicino alla CostanteScala e all operatore ** Se consideriamo intervalli di ingresso ed uscita piccoli, potremo esaminarli con una calcolatrice, una matita e un foglio di carta. Consideriamo come nostra scala di ingresso i valori da 0 a 10, e come nostra scala di uscita i valori da 0 a 2. Il primo passo è calcolare quale valore dovrebbe avere la costante nell operazione **, utilizzando l equazione della costante di scala. Cos tantescala = Int elementi scala uscita elementi scala ingresso 1 Nella scala di uscita ci sono tre elementi, 0, 1, and 2. Nella scala di ingresso ci sono 11 elementi, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, e 10. Ricordando di arrotondare verso il basso all intero più vicino, il risultato è 19660, e questa è la costante da usare con l operatore **. Cos tantescala Cos tan tescala = Int Cos tantescala = = Int [ ,8 ] Il termine valore = valore ** moltiplica la variabile valore per: ,29999 valore = valore 0,29999 La Tabella 3-2 mostra alcuni esempi di calcoli del BASIC Stamp per ciascuno dei valori nell intervallo di ingresso per valore = valore ** Ricordate che è circa la stessa cosa che moltiplicare valore per 0,29999 con una calcolatrice. Poiché il BASIC Stamp è un processore a matematica intera, esso tronca ogni risultato a un valore intero, arrotondandolo effettivamente verso il basso. Notate come i primi quattro valori di

100 Pagina 88 Sensori intelligenti e loro applicazioni ingresso abbiano risultato in uscita pari a zero. Quindi, quando il valore di ingresso è 4, il risultato è 1,19996, che arrotondato diventa 1. Appena effettuate gli altri calcoli nella tabella, noterete come la scala di uscita di 2 riceve quattro elementi di ingresso. Se il valore -1 non era adoperato al denominatore, si sarebbe ricevuto soltanto un elemento di ingresso. Finite i calcoli nella Tabella 3-2 per i valori di ingresso da 5 a 10. Tabella 3-2: Misure delle tensioni durante il ciclo di carica Valore ** Costante Scala Valore calcolato Risultato Intero del BASIC Stamp 0 x = x = x = x = x = x = 6 x = 7 x = 8 x = 9 x = 10 x = Memorizzate ProvaOffsetScala.bs2 con il nome ProvaOffsetScalaTuoTurno.bs2. Modificate il programma in modo da poter provare la Tabella 3-2 con il BASIC Stamp e il terminale di Debug. Confrontate i risultati sul terminale di Debug con la vostra tabella. ATTIVITÀ #4: RIDUZIONE IN SCALA A 1/100 G La misura standard della gravità sulla superficie terrestre si abbrevia con il simbolo "g." Questa attività dimostra come utilizzare le tecniche presentate nell attività precedente per visualizzare il numero di centesimi di un g che agisce sugli assi x e y dell accelerometro.

101 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 89 Dal comando PULSIN a 1/100 g Vogliamo modificare il programma esempio dell Attività #1 in modo che visualizzi le misure sugli assi x- e y- in termini di 1/100 g invece che in unità di 2 µs. E un altro caso di riduzione in scala ed offset, ma questa volta, vogliamo riportare la scala di ingresso tra 1875 e 3125 alla scala di uscita tra 100 e 100 come mostrato nel la Figura Figura 3-13: Riduzione in scala e Offset per 1/100 g. Scala di ingresso Scala di uscita Il vostro turno Sviluppo del programma La meta, in questo caso, è utilizzare la tecnica di riduzione di scala dalla Attività #3 per modificare il programma presente nell Attività #1 in modo che visualizzi le misure degli assi x e y in termini di 1/100 g. La Figura 3-14 mostra le letture approssimate che dovreste aspettarvi dopo le vostre modifiche

102 Pagina 90 Sensori intelligenti e loro applicazioni Figura 3-14: Lettura campione per vari orientamenti (inizia in alto a sinistra, ruota in senso orario) a. x = y = b. x = y = d. x = y = c. x = y = Aprite InclinaSemplice.bs2 dalla Attività #1 e memorizzatelo come InclinaCentiGravità.bs2 Seguite i passi per la riduzione in scala dalla Attività #3 e determinate le costanti di scala per l operazione **. Aggiungete al programma le righe di codice che riducono i valori sugli assi x e y a g/100. Modificate la visualizzazione in modo che appaia nel Terminale di Debug. Provatelo in accordo con la Figura 3-14 e togliete gli errori se occorre. ATTIVITÀ #5: MISURA DELLA ROTAZIONE VERTICALE DI 360 Il MX2125 ha una caratteristica incorporata che permette di utilizzare le misure di inclinazione su entrambi gli assi x e y per calcolare l angolo di rotazione

103 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 91 dell accelerometro nel piano verticale, come mostra la Figura L inclinazione verticale è utile in un gran numero di applicazioni, compresa la sterzata virtuale delle ruote per i video giochi e il conteggio dei giri delle ruote di una bicicletta. Questa attività dimostra come calcolare l inclinazione sul piano verticale con l operatore PBASIC ATN. Figura 3-15 Inclinazione sul piano verticale Calcolo dell arcotangente con il PBASIC La tangente di un angolo teta (θ) in un triangolo rettangolo è il rapporto tra il lato (y) del triangolo rettangolo opposto a teta diviso per il lato adiacente (x). Se conoscete i valori di x e y, potete usare la tangente inversa o arcotangente per calcolare l angolo θ. Le notazioni più comuni per l arcotangente sono tan 1 e arctan. y tanθ = x 1 y θ = tan x Figura 3-16 Tangente e Arcotangente La funzione arcotangente può essere utilizzata per determinare l angolo di rotazione dell accelerometro tramite le sue misure x e y. Il PBASIC ha un operatore chiamato ATN che potete usare per calcolare la tan 1 (y/x). Per calcolare l arcotangente di y/x e memorizzarla in una variabile chiamata angolo, usate l istruzione angolo = x ATN y.

104 Pagina 92 Sensori intelligenti e loro applicazioni θ = tan 1 y angolo = x x atn y La Figura 3-17 è ricavata dal file di aiuto dell Editor BASIC Stamp, e mostra come lavora l operatore ATN. Entrambe le variabili x e y devono essere ridotte in scala a valori compresi tra 127 e 127. Il risultato dell operatore ATN è il valore dell angolo in radianti binarie, abbreviato in brad. Con brad, un cerchio è suddiviso in 256 segmenti nello stesso modo in cui i gradi dividono il cerchio in 360 segmenti. Figura 3-17 Cerchio Unitario in Gradi e Radianti Binarie Conversione da Brad a Gradi con */ Nell attività precedente, abbiamo usato l operatore ** per ridurre in scala valori da un intervallo più grande ad uno più piccolo. La conversione da brad a gradi comporta l aumento di una scala più piccola da 0 a 255 a una scala più grande da 0 a 359. Per fare questo lavoro esiste in PBASIC l operatore */. Quando utilizzate una istruzione come valore = CostanteScala */ valore, il termine CostanteScala è il numero di 256-esimi per il quale volete moltiplicare la variabile valore. Ad esempio, diciamo che volete moltiplicare valore per 2,5. Moltiplicate 2,5 per 256 ed otterrete come risultato 640. Adesso, se valore ha il valore iniziale di 10, il risultato della istruzione valore = 640 */ valore sarà 25. Se vogliamo che valore sia uguale a 2,5 volte valore:

105 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 93 Cos tantescala = 2,5 256 = 640 valore = 640 */valore 'moltiplicazione per 2,5 Ricorda L operatore ** moltiplica per un numero di esimi. L operatore */ moltiplica per un numero di 256-esimi. Le regole della matematica intera per fare una scalatura da una scala all altra sono ancora valide, anche se stiamo convertendo da una scala più piccola ad una più grande. L unica cosa che cambierà è la costante di scala, che è il numeratore di 256 per */, e invece di per **. */ elementi della scalain uscita CostanteScala= Int 256 elementi della scalain ingresso 1 La scala di ingresso va da 0 a 255, ed ha 256 elementi, e quella di uscita va da 0 a 359, ed ha 360 elementi. Il risultato dopo la sostituzione di questi valori nella equazione */ costante di scala è 361. */ 360 CostanteScala = Int */ Cos tan tescala = Int[ 361,412 ] */ CostanteScala = 361 Questo calcolo dimostra che se la variabile angolo memorizza una misura in brad, e volete memorizzare invece una misura in gradi, usate questa istruzione: angolo = 361 */ angolo

106 Pagina 94 Sensori intelligenti e loro applicazioni La maggior parte dei documenti raccomanda angolo = 360 */ angolo. Però, utilizzare una */ costante di scala di 361 è leggermente più preciso per gli intervalli di input/output. Provate a confrontare i risultati di questa operazione fatta con un BASIC Stamp con quelli ottenuti con un foglio elettronico (es. EXCEL). angolo gradi= (360/256) angolo brad Arrotondate il risultato di angolo gradi all intero più vicino. Se il risultato ha una parte decimale di 0,5 o superiore, arrotondatelo verso l alto. Altrimenti, arrotondatelo verso il basso. Quindi confrontatelo con le 256 possibili uscite del Terminale di Debug prima con 360 */ angolo, poi ripetete il confronto con 361 */ angolo. E utile impiegare un foglio elettronico per questo confronto. Se provate a farlo, vedrete che la velocità con cui si approssima il valore intero è molto maggiore con 361 */ angolo. Programma Esempio: ProvaAtn.bs2 Questo programma esempio calcola gli angoli basandosi sui valori di y ed x che digitate nella finestra di Trasmissione del Terminale di Debug. Inserisci y: 90 Inserisci x: 90 angolo in brad = 32 angolo in gradi = 45 Inserisci y: 0 Inserisci x: -127 angolo in brad = 128 angolo in gradi = 180 Figura 3-18 Tangente e Arcotangente Inserisci y: -71

107 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 95 Per calcolare i valori x ed y da inserire nel Terminale di Debug, utilizzate queste equazioni: y= h sinθ x = h cosθ Figura 3-19 Tangente ed Arcotangente Per esempio, diciamo che h = 127 e θ = 45, e allora i valori di x ed y da inserire nel terminale di Debug sono entrambi 90. Se h = 100 e θ = 315, il valore di y da inserire nel terminale di Debug sarà 71, e il valore di x sarà 71. Se h = 100 e θ = 180, y sarà 0 ed x sarà 127. Per h = 127 e θ = 45 y = 127 sin45 = x = 127 cos 45 = Per h = 100 e θ = 315 y = 100 sin 315 = 71 x = 100 cos 315 = 71 Per h = 127 e θ = 180 y = 127 sin 180 = 0 x = 127 cos 180 = 127 Digitate, memorizzate ed eseguite ProvaAtn.bs2 Cliccate sulla finestrella di trasmissione del terminale di Debug. Quando vi si chiederà il valore di x, digitate 90 e premete il tasto Invio. Quando vi si chiederà y, digitate 90 e di nuovo il tasto Invio. Verificate che il risultato sia 32 brad = 45. Ripetete per gli altri valori di x ed y appena discussi. Usate la vostra calcolatrice per determinare i valori di x ed y che corrispondono a vari valori di h e θ. Confrontate i risultati che avete calcolato con i risultati riportati dal terminale di Debug.

108 Pagina 96 Sensori intelligenti e loro applicazioni Alcuni valori saranno inferiori a quelli che avrete previsto. Ad esempio, quando h = 100 e θ = 30, y = 50 e x = 87. Il terminale di Debug visualizzerà 21 come valore dell angolo in brad, che è corretto, ma 29 come valore in gradi dell angolo non è corretto. Dovrebbe essere 30. Questo succede occasionalmente quando si passa in scala da un intervallo più piccolo ad uno più grande. La misura di 21 brad corrisponde a 29 e 22 brad corrisponde a 31. ' Sensori intelligenti e loro applicazioni - ProvaAtn.bs2 ' Prova i calcoli di arcotangente del BASIC Stamp. '{$STAMP BS2} '{$PBASIC 2.5} angolo VAR Word x VAR Word y VAR Word DO DEBUG "Inserisci y: " DEBUGIN SDEC y DEBUG "Inserisci x: " DEBUGIN SDEC x angolo = x ATN y DEBUG "brad ", SDEC? angolo angolo = angolo */ 361 DEBUG "gradi ", SDEC? angolo, CR LOOP Il vostro turno Prova della conversione da Brad a Gradi Com è stato ricordato prima, il risultato intero ideale viene dal calcolo di angolo gradi = (360/256) x angolo brad e poi dall arrotondamento all intero superiore se il valore a destra della virgola è tra 5 e 9 o a quello inferiore se è tra 1 e 4. Con questo programma potrete generare un elenco di tutte le 256 conversioni da brad a gradi. ' Sensori intelligenti e loro applicazioni - BradAGradi.bs2 ' Visualizza le conversioni da brad a gradi per */ 360 e */ 361. '{$STAMP BS2} '{$PBASIC 2.5}

109 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 97 angolo VAR Word brad VAR Word DEBUG CLS, "brad */ 360 */ 361", CR FOR brad = 0 TO 255 DEBUG DEC3 brad angolo = brad */ 360 DEBUG " ", DEC3 angolo angolo = brad */ 361 DEBUG " ", DEC3 angolo, CR NEXT END Digitate, memorizzate ed eseguite BradAGradi.bs2. Usate un foglio elettronico (EXCEL) o una calcolatrice per generare un elenco con questa formula. gradi ( ) angolobrad angolo = Ricordate di arrotondare per eccesso se il valore a destra della virgola è tra 5 e 9 o per difetto se è tra 1 e 4. Confrontate i vostri risultati con quanto visualizzato dal Terminale di Debug. Quanti risultati coincidono con la formula */ 360? Quanti invece con */ 361?

110 Pagina 98 Sensori intelligenti e loro applicazioni Misura dell angolo di inclinazione sul piano verticale L angolo di rotazione in senso orario della vostra scheda nel piano verticale (θ) è l arcotangente dell effetto della gravità sull asse y del MX2125 (A y ) diviso per l effetto sul suo asse x (A x ), come mostrato nella Figura Figura 3-20 Rotazione verticale in senso orario θ = tan 1 A A Y X Ecco alcuni esempi di ciò che l accelerometro rileva e di come questo sia correlato all arcotangente del rapporto di A y con A x. La Figura 3-21 mostra quello che l accelerometro avverte ( sente ) quando l angolo è 0. Se θ è 0, allora A y sente gravità 0 (g), e A x sente 1 g, l arcotangente di 0/1 è 0. Figura 3-21: Accelerometro ruotato di 0 0 tan 1 = 0 1 Quando l accelerometro è ruotato di 30 in senso orario, come mostrato in Figura 3-22, la componente della gravità che agisce sull asse x dell accelerometro è circa 3/2 g. La

111 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 99 componente della gravità che agisce sull asse y è 1/2 g, e l arcotangente di 3/2 1/2 è 30. Figura 3-22: Accelerometro ruotato di 30 in senso orario tan = Quando l accelerometro è ruotato di 135 in senso orario, come mostrato in Figura 3-22, la componente della gravità che agisce sull asse x dell accelerometro è A x = -1/2 g, e la componente della gravità che agisce sull asse y è 1/2 g. L arcotangente di 1/2 ( 1/2) è 135. Figura 3-23: Accelerometro ruotato di 135 in senso orario 1 2 tan 1 =

112 Pagina 100 Sensori intelligenti e loro applicazioni Il caso generale L angolo di rotazione (θ) è la funzione inversa della tangente o arcotangente della componente della gravità che agisce sull asse sensibile Y del Memsic 2125 (A Y) divisa per la componente della gravità che agisce sull asse sensibile X (A X). La figura qui sotto mostra il MX2125 inclinato ad un angolo θ, che ruota entrambi gli assi sensibili di θ. Applicando due identità geometriche, θ è anche entro due triangoli che mostrano le componenti della gravità agire su ciascuno degli assi sensibili dell accelerometro (x m e y m). La componente della gravità che agisce su x m è A X = g cosθ, e la componente che agisce su y m è A Y = g sinθ. Dopo aver applicato le identità trigonometriche mostrate a destra, ciò dimostra che l angolo di rotazione θ è in realtà l arcotangente di A Y/A X. A A Y X A tanθ = A tan θ = tan g sinθ = = tanθ g cosθ ( tanθ) 1 Y X = tan 1 1 A A Y X A A Y X

113 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 101 Programma esempio: RotazioneVertRuota.bs2 Questo programma visualizza l angolo di rotazione della vostra scheda come mostrato nella Figura 3-20 all inizio di questa attività, a pagina 98. Digitate, memorizzate, ed eseguite RotazioneVertRuota.bs2. Mantenete la scheda in verticale davanti a voi come fosse un volante di auto. Ruotate la scheda in senso orario, e osservate come l angolo di misura cresca. Verificate che l angolo di visualizzazione vari tra 0 e 359. ' Sensori intelligenti e loro applicazioni - RotazioneVertRuota.bs2 ' Montare l accelerometro come una ruota verticale e misurare ' l angolo di rotazione. '{$STAMP BS2} '{$PBASIC 2.5} angolo VAR Word x VAR Word y VAR Word DO PULSIN 6, 1, x PULSIN 7, 1, y x = (x MIN 1875 MAX 3125) ** y = (y MIN 1875 MAX 3125) ** angolo = x ATN y angolo = angolo */ 361 DEBUG HOME, CLREOL, SDEC? x, CLREOL, SDEC? y, "angolo = ", CLREOL, DEC angolo, 176 ' ASCII 176 è il simbolo del grado PAUSE 100 LOOP Il vostro turno Comportamento del Terminale di Debug Il comando DEBUG qui di seguito visualizza valori con segno delle variabili x e y seguiti dall angolo e dal simbolo di grado (che è il codice ASCII 176). Il motivo per cui c è

114 Pagina 102 Sensori intelligenti e loro applicazioni CLREOL davanti a ciascun numero è prevenire il fatto che i caratteri non scompaiano a destra di alcune misure. Ad esempio, se una misura è 105, e la misura successiva è 076, sarà visualizzata come 0765 se l istruzione CLREOL non cancellasse il valore precedente prima di visualizzare il nuovo valore. Sebbene questo problema possa essere risolto anche da CLS, lo sfarfallio del Terminale di Debug che ne risulterebbe non sarebbe piacevole da osservare per qualsiasi durata. Il comando CLREOL cancella a destra del cursore su una determinata riga. Mentre anch esso causa un piccolo sfarfallamento in ciascuno dei valori, sarete probabilmente d accordo che è molto più facile osservarli così piuttosto che nella versione con il CLS. DEBUG HOME, CLREOL, SDEC? x, CLREOL, SDEC? y, "angolo = ", DEC3 angolo, 176 ' ASCII 176 è il simbolo di grado Memorizzate RotazioneVertRuota.bs2 come ProvaDisplayVertRuota.bs2. Sostituite HOME con CLS nel comando DEBUG ed eseguite il programma. Modificate di nuovo CLS riportandolo a HOME ed eseguite ancora il programma. Avete trovato un miglioramento nella visualizzazione? Togliete i caratteri di controllo CLREOL e notate l effetto sul display quando ruotate la scheda. Alla fine dei valori non negativi appariranno ulteriori cifre. Rimettete ancora i caratteri di controllo CLREOL ed eseguite di nuovo il programma. Queste sgradevoli ulteriori cifre che prima non sparivano ora non dovrebbero esserci più. Il vostro turno - Display LCD Il comando DEBUG ha tre righe di visualizzazione, e il simbolo di grado ha bisogno di un carattere personalizzato. Ecco un comando di inizializzazione del LCD che fa tre cose: (1) avvia il LCD, (2) visualizza testo che non cambia, e (3) definisce il carattere personalizzato 7 come il simbolo di grado " ". ' Inizializza il LCD PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, [ 130, "angolo = ", DEC angolo, 7, 150, "x=", SDEC x, 157, "y=", SDEC y ] SEROUT 14, 84, [255, ' Definisce il Carattere Personalizzato 7 %01000, ' *

115 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 103 %10100, ' * * %01000, ' * %00000, ' %00000, ' %00000, ' %00000, ' %00000] ' Definizioni di caratteri personalizzati Ricordate, 248 definisce il Carattere Personalizzato definisce il Carattere Personalizzato definisce il Carattere Personalizzato 2, e così via, fino a 255, che definisce il Carattere Personalizzato 7. Il comando DEBUG, che il comando SEROUT deve sostituire, utilizza tre righe nel terminale di Debug. Il comando SEROUT riportato qui sotto ne usa soltanto due. Per minimizzare lo sfarfallio del display LCD, le cifre vengono cancellate soltanto prima di visualizzare le nuove. Il SEROUT posiziona il cursore a 138 (Linea 0, carattere 10), quindi sovrascrive la misura precedente con cinque spazi. Poi, posiziona il cursore di nuovo a 138 e visualizza la nuova misura dei gradi con DEC angolo. Finalmente, stampa il simbolo di grado con il Carattere Personalizzato 7. Questo procedimento viene ripetuto per le misure di x e y, ma occorrono soltanto quattro spazi tra virgolette che seguono le posizioni del cursore 152 e 159. ' Routine di visualizzazione LCD SEROUT 14, 84, [ 138, " ", 138, DEC angolo, 7, 152, " ", 152, SDEC x, 159, " ", 159, SDEC y ] Memorizzate RotazioneVertRuota.bs2 come RotazioneVertRuotaLcd.bs2. Inserite la routine di inizializzazione del LCD tra la dichiarazione delle variabili e la parola chiave DO. Sostituite il comando DEBUG nel ciclo DO...LOOP con la Routine di visualizzazione LCD. Cambiate PAUSE 100 in PAUSE 350. Eseguite il programma e provate la rotazione del vostro display LCD. Il vostro turno - Rotazione nella direzione opposta Diagrammi che mostrino l angolo di rotazione che aumenta quando l oggetto ruota in senso anti-orario, come la Figura 3-24, sono un po più comuni del diagramma in senso orario che abbiamo utilizzato precedentemente.

116 Pagina 104 Sensori intelligenti e loro applicazioni Figura 3-24 Misura dell angolo con rotazione in senso anti-orario Per rovesciare l angolo di rotazione che il programma visualizza, tutto quello che dovete fare è usare A y invece di A y. Date un occhiata alla Figura Se ruotate l accelerometro in senso antiorario, A y è 1/2, e l arcotangente diventa 330. Prendendo l arcotangente di A y /A x, il risultato è 30. Figura 3-25: Rovesciare la direzione di rotazione con -A y tan tan 1 1 A AX Y = tan Ay tan Ax = = = Questa modifica è facile da fare nel programma. negativo prima della y in angolo = x ATN y. Inserite semplicemente un segno Memorizzate RotazioneVertRuota.bs2 come RotazioneVertRuotaAntior.bs2 Cambiate angolo = x ATN y in angolo = x ATN y. Eseguite il programma e verificate che l angolo di rotazione ora aumenta quando ruotate la scheda in senso antiorario.

117 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 105 ATTIVITÀ #6: MISURA DELL INCLINAZIONE DAL PIANO ORIZZONTALE Questa attività misura quanto la Board of Education sia inclinata rispetto al piano orizzontale. La Figura 3-26 mostra la Board of Education con l accelerometro Memsic sulla breadboard. Gli assi dell accelerometro che sentono l accelerazione (x m e y m ) puntano verso l alto e verso sinistra della Board of Education. Questa attività sviluppa un programma che visualizza l angolo di inclinazione per ciascun asse. Quando la scheda si mantiene a livello, l angolo di inclinazione è 0 per entrambi gli assi x m e y m. Se inclinate la scheda in modo che y m punti verso l alto, il programma riporterà un angolo di inclinazione positivo per l asse y. Se la inclinate in modo che y m punti verso il basso, riporterà un angolo di inclinazione negativo. La stessa cosa si applica all asse x m ; puntatelo verso l alto per avere un angolo di inclinazione positivo o verso il basso per un angolo di inclinazione negativo. Se inclinate la scheda verso uno dei suoi angoli, il programma vi riporterà inclinazione per entrambi gli assi x m e y m. Figura 3-26: Inclinazione degli assi della Board of Education

118 Pagina 106 Sensori intelligenti e loro applicazioni Seno e Coseno La Figura 3-27 mostra la relazione tra i lati di un triangolo rettangolo e le funzioni seno e coseno. Il seno di un angolo è il lato del triangolo (y) opposto a quell angolo diviso per l ipotenusa (h). Se conoscete h ed y, e volete sapere l angolo (θ), usate l arcoseno (sin 1 ). Il coseno di un angolo è il lato adiacente (x) diviso per h. Se volete sapere l angolo dati x ed h, usate l arcocoseno (cos 1 ). y sinθ = h x cosθ = h Figura 3-27 Seno e Coseno Notate dalle equazioni nella Figura 3-27 che il valore x può essere al massimo uguale ad h quando θ = 0. Analogamente, il valore y può essere al massimo h quando θ = 90. Per angoli tra 0 e 90, i rapporti x/h ed y/h sono entrambi minori di 1. Non importa quanto sia grande il triangolo, il rapporto sarà sempre compreso tra 1 e 0. Il cerchio unitario è un artificio comune per descrivere le funzioni seno e coseno. L ipotenusa diventa il raggio del cerchio. Il cerchio unitario è detto così perché la lunghezza dell ipotenusa è fatta uguale ad 1 (una unità). Quando l ipotenusa è ruotata in senso antiorario, l angolo θ diventa più grande, o più piccolo se è ruotato in senso orario. Il coseno è determinato disegnando una linea verticale dal punto dove l ipotenusa incontra in basso il cerchio (o in alto se l ipotenusa è sotto) all asse x. Qualunque sia il valore di x, quel valore è il coseno. Il seno dell angolo è determinato disegnando una linea dalla fine del raggio orizzontalmente verso l asse y.

119 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 107 Figura 3-28: Esempi di Seno e Coseno nel cerchio unitario a. b. c. L intervallo tra 0 e 90 è il Quadrante 1 del cerchio unitario. Quando θ è nel Quadrante 1, sia il coseno che il seno dell angolo saranno numeri positivi. Quando θ è tra 90 e 180 (Quadrante 2), il coseno diventa negativo ma il seno è ancora positivo. Nel Quadrante 3, sia il seno che il coseno sono negativi, e nel Quadrante 4, il seno è ancora negativo ma il coseno è di nuovo positivo. Notate in Figura 3-28 (c) che un valore negativo di θ (tra 0 e 90) può essere nel Quadrante 4 proprio come un valore tra 270 e 360. Un altra cosa da tenere a mente qui è che il valore minimo sia per il seno che per il coseno è 1, e il valore massimo è 1. Per esempio, quando θ = 0, cos θ = 1, e sin θ = 0. Se θ = 90, sin θ = 1 e cos θ = 0. Per θ = 180, cos θ = 1 e sin θ = 0. La Figura 3-29 mostra la versione BASIC Stamp di un cerchio unitario per i suoi operatori SIN e COS. Invece dei risultati che sono nell intervallo da 1 ad 1, I risultati di SIN e COS variano da 127 a 127. Gli angoli per gli operatori SIN e COS sono misurati in brad. Così, invece di 45, usate 32 brad. Invece di 90, usate 64 brad, e così via. Per convertire da brad a gradi con una calcolatrice, moltiplicate il numero di brad per 360/256. Per convertire da gradi a brad, usate 256/360.

120 Pagina 108 Sensori intelligenti e loro applicazioni Figura 3-29 Operatori Seno e Coseno del Cerchio unitario nel BASIC Stamp Programma esempio: SenoCoseno.bs2 Questo programma esempio visualizza i calcoli interi di seno e coseno nel BASIC Stamp. Potete dividere questi valori per 127 per ottenere una approssimazione dei veri valori di seno o coseno. BASIC Stamp converte i gradi in brad con ** 46733, che è stata ricavata tramite la equazione CostanteScala dalla Attività #3. Digitate, memorizzate ed eseguite SenoCoseno.bs2 Confrontate i risultati (divisi per 127) con i valori calcolati di seno e coseno. ' Sensori intelligenti e loro applicazioni - SenoCoseno.bs2 ' Visualizza i valori seno e coseno del BASIC Stamp. ' {$STAMP BS2} ' {$PBASIC 2.5} gradi VAR Word brad VAR Word seno VAR Word coseno VAR Word DEBUG "Gradi Brad Coseno Seno", CR FOR gradi = 0 TO 359 STEP 15 brad = gradi ** seno = SIN brad coseno = COS brad

121 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 109 DEBUG " ", SDEC3 gradi, " ", SDEC3 brad, " ", SDEC3 coseno, " ", SDEC3 seno, CR NEXT END Il vostro turno Modifiche al programma Provate a modificare l argomento STEP del ciclo FOR...NEXT per ottenere diversi valori. Provate a modificare il programma in modo che vi chieda un valore in gradi con il comando DEBUGIN e poi visualizzi il risultato. Subroutine Arcoseno e Arcocoseno Mentre il seno è il rapporto di y/h per un dato angolo, l arcoseno (sin 1 ) è il suo inverso, come è mostrato nella Figura Dato il rapporto y/h, l arcoseno vi fornisce l angolo. Analogamente, il coseno è il rapporto x/h per un dato angolo, e l arcocoseno (cos 1 ) è l angolo corrispondente ad un dato rapporto x/h. y sinθ = h cosθ = x h θ = sin 1 θ = cos y h 1 x h Figura 3-30 Seno, Arcoseno, Coseno, e Arcocoseno Visto che il BASIC Stamp non ha gli operatori ASIN e ACOS, Tracy Allen, autrice del testo Stamps in Class Applied Sensors, ha pubblicato sul suo sito web alcune subroutine molto graziose che eseguono queste funzioni. Il programma esempio che segue utilizza versioni modificate di queste subroutine. Ricordate che gli operatori SIN and COS restituiscono valori tra 127 e 127. Se dividete il risultato per 127, otterrete un valore tra 1 e 1 che approssima il valore reale dei rapporti seno (y/h) o coseno (x/h). Con le subroutine Arcoseno e Arcocoseno, potete

122 Pagina 110 Sensori intelligenti e loro applicazioni impostare una variabile chiamata lato ad un valore tra 127 e 127, e la subroutine memorizzerà i risultati della misura in gradi nella variabile angolo. Se volete che le subroutines Arcoseno e Arcocoseno restituiscano brad invece di gradi, basta che facciate tre modifiche: Nella subroutine Arcocoseno, commentate la riga di codice che converte da brad a gradi: ' angolo = angolo */ 361 ' Converte brad in gradi Poi, nell istruzione IF...THEN cambiate 180 in 128 poiché stiamo ora usando un cerchio a 256 divisioni: IF segno = Negativo THEN angolo = angolo Analogamente, nella subroutine Arcocoseno cambiate 90 in 64: angolo = 64 - angolo Programma esempio: ProvaArcoseno.bs2 Il programma che segue fa variare i valori del seno tra 127 e 127, e la sua subroutine Arcoseno converte questi valori del seno di nuovo in angoli in gradi. Tenete a mente che questi calcoli sono l inverso di quelli fatti nel programma esempio precedente. Il programma esempio precedente visualizzava valori del seno per valori dati dell angolo. Questo programma visualizza angoli per valori dati del seno. Digitate, memorizzate ed eseguite ProvaArcoseno.bs2 Confrontate i risultati con i valori del seno calcolati nel programma esempio precedente. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - ProvaArcoseno.bs2 ' Prova l arcoseno per valori del seno da -127 a 127. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Direttiva BASIC Stamp ' Direttiva PBASIC ' -----[ Costanti ] Negativo CON 1 ' Segno -.bit15 delle variabili Word Positivo CON 0 ' -----[ Variables ] seno VAR Word ' seno nel cerchio di raggio r = 127

123 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 111 lato VAR Word ' variabile della subroutine trig angolo VAR Word ' angolo risultante - gradi segno VAR Bit ' bit del segno ' -----[ Initialization ] DEBUG CLS ' Cancella il Terminale di Debug seno = -128 ' Inizializza y a -128 ' -----[ Programma principale] DO UNTIL seno = 127 ' Fa variare da y = -127 a y = 127 seno = seno + 1 ' Incrementa di 1 lato = seno ' Pone lato uguale a y DEBUG "seno = ", SDEC seno, " " ' Visualizza il valore di seno GOSUB Arcoseno ' Calcola l arcoseno DEBUG SDEC? angolo ' Visualizza l angolo risultante LOOP ' Ripete DO...LOOP END ' Fine programma ' -----[ Subroutine - Arcoseno ] ' Questa subroutine calcola l arcoseno basato sulla coordinata y di un cerchio ' di raggio 127. Pone la variabile lato uguale alla vostra coordinate y prima ' di richiamare questa subroutine. Arcoseno: GOSUB Arcocoseno angolo = 90 - angolo RETURN ' Subroutine inversa del seno ' Ottiene l inversa del coseno ' sin(angolo) = cos(90 - angolo) ' -----[ Subroutine - Arcocoseno ] ' Questa subroutine calcola l arcocoseno basato sulla coordinata x di un ' cerchio di raggio 127. Pone la variabile lato uguale alla vostra coordinate ' x prima di richiamare questa subroutine. Arcocoseno: ' Subroutine inversa del coseno segno = lato.bit15 ' Memorizza il segno di lato lato = ABS(lato) ' Calcola il positivo di lato angolo = 63 - (lato / 2) ' Approssimazione iniziale di angolo DO ' loop di approssimazione successiva IF (COS angolo <= lato) THEN EXIT ' Fine quando COS angolo <= lato angolo = angolo + 1 ' Prosegue aumentando angolo LOOP angolo = angolo */ 361 ' Converte brad in gradi IF segno = Negativo THEN angolo = 180 angolo ' Corregge se segno è RETURN ' negativo.

124 Pagina 112 Sensori intelligenti e loro applicazioni Il vostro turno Prova della Subroutine Arcocoseno Ecco alcune modifiche che potete fare al programma ProvaArcoseno.bs2 per fare in modo che provi invece la subroutine Arcocoseno. Memorizzate ProvaArcoseno.bs2 col nome ProvaArcocoseno.bs2. Aggiornate i commenti nella sezione titolo. I valori del coseno saranno spostati nell intervallo da 127 a 127. Cambiate l istruzione seno VAR Word in coseno VAR Word nella sezione Variabili. Cambiate seno = 128 in coseno = 128 nella sezione Inizializzazione Modificate il Programma principale in modo che sia come la seguente DO UNTIL coseno = -127 coseno = coseno - 1 lato = coseno DEBUG "coseno = ", SDEC coseno, " " GOSUB Arcocoseno DEBUG SDEC? angolo LOOP END Eseguite il programma di prova modificato. Mentre il coseno varia tra 127 e - 127, l angolo varierà tra 0 e 180. Visualizzazione dell angolo di inclinazione dell Accelerometro La Figura 3-31 mostra la Board of Education con un accelerometro Memsic. La figura mostra anche una vista ravvicinata del modulo accelerometro e i suoi assi sensibili x m e y m. Questi assi sensibili rilevano le componenti dell accelerazione terrestre dovute alla gravità. Appena inclinate un determinato asse verso la verticale, sull asse agirà una componente di gravità terrestre maggiore di 1 g.

125 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 113 Figura 3-31: Inclinare la Board of Education, inclinare l accelerometro Memsic Inclinazione Inclinazione Inclinazione Inclinazione La Figura 3-32 mostra come si possa utilizzare la funzione arcoseno per determinare l angolo di inclinazione. Se osservate il modulo accelerometro Memsic da questo lato, la componente della gravità che agisce sul suo asse x m è l accelerazione sull asse x (A x ), che è uguale a g sin θ. Poiché sin θ è uguale a A x / g, θ x può essere determinata prendendo l arcoseno di A x / g. In termini di equazione, si ha : θ X = sin 1 A g X Lo stesso principio si applica all asse dell accelerometro y m, e il risultato è il seguente:

126 Pagina 114 Sensori intelligenti e loro applicazioni 1 AY θx = sin g Figura 3-32: Determinare l angolo di inclinazione con la funzione Arcoseno A A X g X = g sinθ A sinθ = g sin θ = sin = sinθ 1 ( sin θ) 1 X A = sin g X 1 A g X Con il MX2125, una misura di 1875 corrisponde a 1 g, e una misura di 3125 è 1 g. Nell Attività #3, abbiamo scalato questi valori all intervallo da 127 a 127. Ricordate che 127 è l equivalente di 1 per la subroutine Arcoseno, e 127 è l equivalente di 1. Qualunque valore compreso tra 127 e 127 è l equivalente di una frazione, e a provenire dal MX2125 è, in realtà, sin θ. Quindi, una volta che la misura del MX2125 è stata riportata in scala all intervallo da 127 a 127, tutto ciò che dovrete fare è utilizzare la subroutine Arcoseno per determinare l angolo di inclinazione (il valore di θ). Il modo più semplice di scrivere un programma di inclinazione è iniziare col precedente programma esempio, ProvaArcoseno.bs2. Poi, incorporatevi la misura dell accelerometro e le istruzioni di riduzione in scala e offset da ProvaScalaOffset.bs2 e le misure con l accelerometro da RotazioneVertRuota.bs2. La Routine principale di questo programma si riduce a due istruzioni per la misura sugli assi x ed y, due istruzioni per la scalatura, e due piccole routine che chiamano la subroutine Arcoseno e visualizzano il risultato. DO

127 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 115 PULSIN 6, 1, x PULSIN 7, 1, y x = (x MIN 1875 MAX 3125) ** y = (y MIN 1875 MAX 3125) ** lato = x GOSUB Arcoseno DEBUG HOME, "angolo inclinazione su x = ", CLREOL, SDEC3 angolo, CR lato = y GOSUB Arcoseno DEBUG "angolo di inclinazione su y = ", CLREOL, SDEC3 angolo PAUSE 100 LOOP Programma esempio: InclinaOrizzontale.bs2 Questo programma esempio visualizza l inclinazione della vostra scheda in gradi. Digitate, memorizzate ed eseguite InclinaOrizzontale.bs2. Confrontate i vari angoli di inclinazione con la visualizzazione degli assi del Terminale di Debug. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - InclinaOrizzontale.bs2 ' Prova l arcoseno per i valori del seno da -127 a 127. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Direttiva BASIC Stamp ' Direttiva PBASIC ' -----[ Costanti ] Negativo CON 1 ' Segno -.bit15 delle variabili Word Positivo CON 0 ' -----[ Variabili ] x VAR Word ' Misura sull asse x di Memsic y VAR Word ' Misura sull asse y di Memsic lato VAR Word ' variabile della subroutine trig angolo VAR Word ' angolo risultante - gradi segno VAR Bit ' bit del segno ' -----[ Inizializzazione ] DEBUG CLS ' Cancella Terminale di Debug ' -----[ Routine principale

128 Pagina 116 Sensori intelligenti e loro applicazioni DO PULSIN 6, 1, x PULSIN 7, 1, y ' misura asse x ' misura asse y ' Scalatura e offset dei valori su asse x ed asse y da -127 a 127. x = (x MIN 1875 MAX 3125) ** y = (y MIN 1875 MAX 3125) ** ' Calcola e visualizza l Arcoseno della misura sull asse x. lato = x GOSUB Arcoseno DEBUG HOME, "angolo inclinazione su x = ", CLREOL, SDEC3 angolo, CR ' Calcola e visualizza l Arcoseno della misura sull asse y. lato = y GOSUB Arcoseno DEBUG "angolo inclinazione su y = ", CLREOL, SDEC3 angolo PAUSE 100 ' Pausa di 1/10 di secondo LOOP ' Ripete il ciclo DO...LOOP ' -----[ Subroutine - Arcoseno ] ' Questa subroutine calcola l arcoseno basandosi sulla coordinata y in un ' cerchio di raggio 127. Ponete la variabile lato uguale alla vostra ' coordinata y prima di richiamare questa subroutine. Arcoseno: GOSUB Arcocoseno angolo = 90 - angolo RETURN ' Subroutine inversa del seno ' Chiama l inversa del coseno ' sin(angolo) = cos(90 - angolo) ' -----[ Subroutine - Arcocoseno ] ' Questa subroutine calcola l arcocoseno basandosi sulla coordinata x in un ' cerchio di raggio 127. Ponete la variabile lato uguale alla vostra ' coordinata x prima di richiamare questa subroutine.. Arcocoseno: ' Subroutine inversa del coseno segno = lato.bit15 ' Conserva il segno di lato lato = ABS(lato) ' Calcola il positivo di lato angolo = 63 - (lato / 2) ' Approssimazione iniziale di angolo DO ' Ciclo approssimazioni successive IF (COS angolo <= lato) THEN EXIT ' Fatto quando COS angolo <= lato angolo = angolo + 1 ' Aumenta angolo LOOP angolo = angolo */ 361 ' Converte brad in gradi IF segno = Negativo THEN angolo = 180 angolo ' Modifica se segno è ' negativo. RETURN

129 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 117 Il vostro turno Visualizzazione su LCD Modificare il programma esempio per visualizzare le misure di inclinazione su LCD seriale Parallax LCD è solo questione di aggiungere una routine di inizializzazione e trasformare comandi DEBUG in comandi SEROUT. Come il programma dell Attività #5, questo programma visualizza caratteri che non cambiano nella routine di inizializzazione per prevenire lo sfarfallio del display. Memorizzate InclinaOrizzontale.bs2 col nome InclinaOrizzontaleLcd.bs2 Sostituite il comando DEBUG nella routine di inizializzazione con questo blocco. ' Inizializza il LCD PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, [128, "inclinazione x =", 148, "inclinazione y ="] SEROUT 14, 84, [255, ' Definisce Carattere personal. 7 %01000, ' * %10100, ' * * %01000, ' * %00000, ' %00000, ' %00000, ' %00000, ' %00000] ' Sostituite il primo comando DEBUG nel ciclo DO...LOOP del Programma principale con il comando SEROUT qui sotto. Assicuratevi che ci siano quattro spazi tra le virgolette. I quattro spazi servono per cancellare il massimo di quattro caratteri che il comando potrebbe inviare al LCD: un segno negativo, due cifre, e il Carattere personalizzato 7 simbolo del grado ( ). SEROUT 14, 84, [135, " ", 135, SDEC angolo, 7] Sostituite il secondo comando DEBUG nel ciclo DO...LOOP del Programma principale con quello che segue. Ancora, accertatevi di mettere quattro spazi tra le virgolette per cancellare il valore precedente. SEROUT 14, 84, [155, " ", 155, SDEC angolo, 7] Cambiate PAUSE 100 in PAUSE 350. Eseguite il programma e provate il display.

130 Pagina 118 Sensori intelligenti e loro applicazioni Il vostro turno Correzioni Se il vostro display non va completamente a 90 quando mantenete la vostra scheda verticale con uno particolare dei suoi assi, potrete personalizzare la vostra riduzione in scala e l offset per fare in modo che si adatti allo scopo. Ciò comporterà la determinazione della scala di uscita effettiva del vostro accelerometro. Se i valori reali vanno davvero da 1865 a 3100, ripetete i passi nell Attività #3 per fare le correzioni della riduzione di scala e dell offset.

131 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 119 SOMMARIO Questo capitolo è focalizzato sul sentire con l accelerometro a due assi Memsic 2125 l accelerazione dovuta alla gravità. Sentire la gravità rende possibile misurare sia l inclinazione che la rotazione. L accelerometro Memsic trasmette impulsi che indicano l accelerazione agente sui suoi assi x ed y. A temperatura ambiente, gli impulsi variano tra 3750 e 6250 µs, e possono essere utilizzati per misurare un intervallo tra 1 ed 1 g con qualsiasi dei due assi sensibili dell accelerometro. Per misurare questi impulsi è utilizzato il comando PULSIN, e poiché questo comando misura il tempo in unità di 2 µs, l intervallo che i programmi debbono considerare va da 1875 a Le misure dell accelerometro possono essere visualizzate con il LCD seriale Parallax. Se il programma è stato già provato con il Terminale di Debug, visualizzare le misure con il LCD seriale è soltanto questione di aggiungere una routine di inizializzazione all inizio del programma, ed utilizzare comandi SEROUT al posto di comandi DEBUG. I caratteri personalizzati sono molto comodi per visualizzare il simbolo dei gradi ( ), e la lettera Greca mu (µ). L accelerometro può essere utilizzato per misurare la rotazione nel piano verticale. Per far questo, il BASIC Stamp deve calcolare l arcotangente della misura sull asse y dell accelerometro, divisa per la misura sul suo asse x. Le misure sugli assi x ed y debbono essere ridotte in scala e spostate in offset in modo da cadere nell intervallo tra 127 e 127, che è quanto occorre all operatore PBASIC ATN per restituire un angolo misurato in radianti binarie. Mentre i gradi dividono un cerchio in 360 segmenti, i radianti binari lo frazionano in 256 segmenti. Per convertire una data misura in radianti binari, in gradi, si può utilizzare l operatore PBASIC */. L accelerometro può essere utilizzato anche per misurare gli angoli di inclinazione. Poiché le componenti della gravità che agiscono su ciascuno degli assi sensibili dell accelerometro e il seno dell angolo di inclinazione, per determinare l angolo di inclinazione nella misura su un asse si possono utilizzare le funzioni inverse del seno o dell arcoseno. Si può utilizzare una subroutine Arcoseno per calcolare l angolo (in gradi) dato un valore che varia tra 127 e 127. Questo intervallo di variazione corrisponde a valori del seno tra 1 e + 1. Poiché sia l operatore ATN che la subroutine Arcoseno si aspettano un valore tra 127 e 127, sono state introdotte tecniche per la riduzione in scala e l offset delle misure dell accelerometro. L intervallo di misure che il BASIC Stamp raccoglie dall accelerometro è

132 Pagina 120 Sensori intelligenti e loro applicazioni compreso in una scala tra 1875 e Il modo più efficiente di scalare questi valori ad un intervallo di 127 a 127 comporta il sottrarre 1875 per allineare l intervallo a zero, poi usare l operatore ** per ridurre la scala, quindi sottrarre 127. Questa è la riga di codice che ne risulta: valore = (valore MIN 1875 MAX 3125) ** Il valore è determinato dall equazione per la costante di scala ** nell Attività #2. Domande 1. Quali sono le sette quantità che si possono misurare con un accelerometro? 2. Cosa significa la sigla MEMS? 3. Cosa si muove all interno del MX2125 quando lo inclinate? 4. Può la gravità essere considerata una forma di accelerazione? 5. Cosa dovete fare ad un programma che visualizza misure nel terminale di Debug per far sì che visualizzi invece misure in un LCD seriale? 6. Come potete limitare una variabile in un intervallo di valori? 7. Come potrete orientare la vostra scheda per applicare 1 g all asse x dell accelerometro? 8. Come potete orientare la vostra scheda per applicare 0 g ad entrambi gli assi? 9. Quale è la differenza tra un radiante binario e un grado? 10. Quali sono gli intervalli di valori accettati dagli operatori SIN e COS? Cosa rappresentano questi valori? 11. Come potete convertire i brad in gradi? 12. Quale intervallo di valori accetta l operatore ATN? Cosa rappresentano questi valori? 13. Come potete utilizzare ATN per calcolare l angolo di rotazione della vostra scheda? 14. Quale intervallo di valori viene accettato per progetto dalla subroutine Arcocoseno? Cosa rappresentano questi valori? 15. Quale intervallo di valori viene accettato per progetto dalla subroutine Arcoseno? Cosa rappresentano questi valori? 16. Perché è necessario usare la subroutine Arcoseno per determinare l angolo di inclinazione? Esercizi 1. Scrivere una istruzione che riceve la misura dell accelerazione dal pin di uscita dell asse y dell accelerometro connesso a P Scrivere una istruzione che riceve la misura dell accelerazione dal pin di uscita dell asse x dell accelerometro connesso a P9.

133 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina Scrivere un comando che converta la misura sull asse x in microsecondi. 4. Scrivere un comando che converta la misura sull asse x in millisecondi. 5. Scrivere una riga di codice in PBASIC che scali un intervallo da 0 a 100 in un intervallo da 20 a 32. Progetti 1. Progettare un dispositivo che conti il numero di volte che voi ruotate la vostra scheda nel piano verticale. Supponete di iniziare con Progettate un dispositivo che visualizzi un messaggio di allarme ogni volta che l angolo di inclinazione sull orizzontale superi 10.

134 Pagina 122 Sensori intelligenti e loro applicazioni Soluzioni Q1. Accelerazione, inclinazione ed angolo di inclinazione, inclinazione assoluta, rotazione, vibrazione, urto, gravità. Q2. Micro-sistemi elettro-meccanici. Q3. Una bolla di gas riscaldato. Q4. Si, tanto statica che dinamica. Q5. Aggiungere una routine di inizializzazione per il LCD, e convertire i comandi DEBUG in comandi SEROUT. Q6. Usare gli operatori MAX e MIN. Q7. Inclinarla verso l alto con il suo lato più lungo, con le porte servo in alto. (Come in Figura 3-14a). Q8. Porla di piatto su un tavolo. Q9. I gradi dividono un cerchio in 360 unità, mentre un radiante binario divide un cerchio in 256 unità. Q10. Da 0 a 255. Essi rappresentano l angolo, in brad (radianti binarie). Q11. Gradi = brad * 360 / 256. Q a +127, che rappresenta lati opposti ed adiacenti di un triangolo. Q13. Poiché l accelerometro misurerà l accelerazione che agisce lungo l asse y m del Memsic, e analogamente quella che agisce lungo il suo asse x m, per trovare l angolo di rotazione dal piano verticale su cui agisce g, si può usare l ATN di Ay/Ax. Q14. Da -127 a 127, che rappresenta la lunghezza del lato x del triangolo. Q15. Da -127 a 127, che rappresenta la lunghezza del lato y del triangolo. Q16. Sappiamo dalla geometria che la componente della gravità che agisce sull accelerometro è g sin θ, quindi per ottenere l angolo dobbiamo prendere l arcoseno. E1. y VAR Word PULSIN 10, 1, y E2. x VAR Word PULSIN 9, 1, x E3. x = x * 2 E4. x = x * 2 / OPPUREx = x /500 E5. valore = (valore MIN 0 MAX 100) **

135 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 123 P1. Soluzione esempio: ' Sensori intelligenti e loro applicazioni - Cap3Prog1.bs2 ' Basandosi su RotazioneVertRuota.bs2, questo dispositivo conta il ' numero di volte che la scheda è stata ruotata sul piano verticale. '{$STAMP BS2} '{$PBASIC 2.5} angolo VAR Word angolovecchio VAR Word x VAR Word y VAR Word ContaVolte VAR Word PAUSE 250 SEROUT 14, 84, [22, 12] PAUSE 5 ' Inizializza LCD SEROUT 14, 84, [128, DEC5 ContaVolte] DO PULSIN 6, 1, x PULSIN 7, 1, y x = (x MIN 1875 MAX 3125) ** y = (y MIN 1875 MAX 3125) ** angolo = x ATN y angolo = angolo */ 361 IF (angolo >= 90 AND angolo < 180) AND (angolovecchio < 90 OR angolovecchio >= 270) THEN ContaVolte = ContaVolte + 1 angolovecchio = angolo ENDIF IF angolo >= 270 AND (angolovecchio >= 90 AND angolovecchio < 180) THEN ContaVolte = ContaVolte + 1 angolovecchio = angolo ENDIF SEROUT 14, 84, [128, DEC5 (ContaVolte / 2)] LOOP

136 Pagina 124 Sensori intelligenti e loro applicazioni P2. Soluzione esempio: Qui sotto è una versione modificata del programma principale preso dal programma InclinaOrizzontale.bs2 ' -----[ Programma principale ] DO PULSIN 6, 1, x PULSIN 7, 1, y ' misura asse x ' misura asse y ' Scalatura e offset degli assi x ed y all intervallo da -127 a 127. x = (x MIN 1875 MAX 3125) ** y = (y MIN 1875 MAX 3125) ** ' Calcola e visualizza l Arcoseno della misura sull asse x. lato = x GOSUB Arcoseno DEBUG HOME, "angolo inclinazione x = ", CLREOL, SDEC3 angolo, CR IF ABS(angolo) > 10 THEN DEBUG CRSRXY, 0, 2, "Attenzione! Controlla asse x!" ELSE DEBUG CRSRXY, 0, 2, CLREOL ENDIF ' Calcola e visualizza l Arcoseno della misura sull asse y. lato = y GOSUB Arcoseno DEBUG CRSRXY, 0, 1, "angolo inclinazione y = ", CLREOL, SDEC3 angolo IF ABS(angolo) > 10 THEN DEBUG CRSRXY, 0, 3, " Attenzione! Controlla asse y!" ELSE DEBUG CRSRXY, 0, 3, CLREOL ENDIF PAUSE 100 LOOP ' Pausa 1/10 secondo ' Ripete DO...LOOP

137 Capitolo 3: Inclinazione con l accelerometro Memsic Pagina 125

138

139 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 127 Capitolo 4: Il modulo Bussola Hitachi HM55B Il modulo bussola Hitachi HM55B misura la direzione. Potete usarlo assieme ai vostri BASIC Stamp, Board of Education, e LCD seriale Parallax per farne una bussola digitale che opera come mostrato in Figura 4-1. Il chip del modulo Hitachi HM55B è un modulo utilizzato come caratteristica sempre più comune nell elettronica delle automobili, poiché fornisce al pilota una prua di bussola. Il modulo bussola è anche uno strumento molto importante per i robot mobili, poiché da loro un senso direzionale che produce una grossa differenza sia nelle squadre sportive di robot che nei labirinti. Siete qui di fronte Figura 4-1 Modulo bussola Hitachi sulla Board of Education dotata di Display LCD Questo capitolo utilizza versioni modificate dei programmi contenuti nella documentazione di prodotto del modulo bussola Hitachi HM55B per le prove e la taratura. Esso presenta anche il metodo della media come modo per filtrare il rumore delle misure e illustra come modificare i programmi esempio esistenti per visualizzare l indicazione di bussola sul LCD seriale Parallax. INTERPRETAZIONE DELLE MISURE DELLA BUSSOLA La documentazione di prodotto del modulo bussola Hitachi HM55B ha programmi esempio che usano tutti una subroutine chiamata Ottieni_assi_bussola, che restituisce le misure x ed y dell intensità del campo magnetico. Il valore di x è la componente del campo magnetico terrestre che agisce lungo l asse x m del sensore

140 Pagina 128 Sensori intelligenti e loro applicazioni mostrato nella Figura 4-2. Il valore di y è il negativo del campo magnetico terrestre che agisce sull asse y m. Se N è il valore riportato da x o y quando è allineato con il campo magnetico terrestre, allora la misura x ad un certo angolo θ sarà N cos θ, e la misura y sarà N sin θ. Utilizzando questi fatti e due identità di trigonometria, segue che l angolo θ è l arcotangente di y/x. Quindi, in aggiunta alla rotazione dell accelerometro, l angolo del modulo bussola dalla direzione nord è un altro dei valori che si possono determinare tramite l operatore PBASIC ATN. Figura 4-2 Assi di sensibilità del modulo bussola N sinθ y tanθ = = N cosθ x tan 1 ( tanθ) = tan 1 x y θ = tan 1 x y ATTIVITÀ #1: CONNESSIONE E PROVA DEL MODULO BUSSOLA In questa attività, collegherete il modulo bussola al BASIC Stamp ed eseguirete un programma di prova. Questo verificherà che le connessioni elettriche sono corrette e che il modulo è pronto per lavorare. Connessione del modulo bussola Il modulo bussola Hitachi HM55B deve essere connesso a Vdd e Vss (tensione e massa) e al BASIC Stamp con tre connessioni per linea di comunicazione.

141 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 129 Parti Occorrenti (1) Modulo bussola Hitachi HM55B (6) Cavallotti (fili di collegamento) Non sono richiesti resistenze o condensatori esterni; sono tutti incorporati nel modulo. Schema elettrico e diagramma di cablaggio Il modulo HM55B può essere collegato con i suoi pin D out e D in uniti assieme, in modo che possano trasmettere e ricevere segnali al e dallo stesso pin I/O del BASIC Stamp. Un altro pin I/O del BASIC Stamp è connesso al pin del temporizzatore del dispositivo (CLK). Il BASIC Stamp invierà impulsi a questo pin in modo che il chip possa inviare il suo stato o le misure o ricevere comandi. Il BASIC Stamp invia anche segnali a zero (bassi) al pin Enable del modulo bussola prima che esso scambi qualsiasi dato, ed anche per inizializzare qualsiasi misura di campo magnetico. Costruite il circuito mostrato in Figura 4-3. Figura 4-3: Schema elettrico e diagramma di cablaggio del Modulo Bussola Prova del modulo bussola Questo programma esempio si accerta che il modulo bussola sia connesso in modo corretto e sia pronto a lavorare. Ci possono essere differenze significative tra il nord magnetico riportato da una bussola meccanica e quello riportato dal modulo bussola.

142 Pagina 130 Sensori intelligenti e loro applicazioni Dopo aver eseguito i programmi di calibrazione nelle attività che seguono, tutti gli errori di misura che si verificassero dovrebbero scomparire. La Figura 4-4 mostra ciò che la bussola dovrebbe visualizzare quando rileva che è a 35 in senso orario dalla direzione del nord. Di nuovo, in questa fase non preoccupatevi della direzione esatta poiché il programma sta solo provando per assicurarsi che il modulo stia funzionando. Appena potrete usarlo per avere un idea generale di nord, sud, est ed ovest, vorrà dire che il modulo è in condizioni di funzionamento. Figura 4-4: Uscita del terminale di Debug con la bussola a 35 in senso orario dal Nord asse x N(-S) = 27 asse y w(-e) = - 19 angolo = 35 gradi Programma esempio: ProvaBussola.bs2 Scarico gratuito! Questo programma è disponibile come scarico gratuito di file.bs2 dalla Pagina di Prodotto Smart Sensors and Applications al sito Scaricate e decomprimete il codice sorgente selezionato dalla pagina di prodotto Smart Sensors and Applications del sito Aprite il file ProvaBussola.bs2 (TestCompass.bs2) con l Editor BASIC Stamp ed eseguite il programma. Il terminale di Debug dovrebbe visualizzare le misure di bussola sugli assi x ed y e l angolo di cui è spostato, in senso orario, dal nord.

143 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 131 Se la vostra bussola riporta misure con errore di angolo inferiore a 40, questo significa che sta lavorando ed è pronta per la taratura con il programma di calibrazione descritto nell Attività #2. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - ProvaBussola.bs2 ' Prova che il modulo bussola Hitachi HM55B funzioni. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Dichiarazioni I/O] DinDout PIN 2 ' P2 trasmette/riceve a/da Din/Dout Clk PIN 0 ' P0 invia impulsi al clock del HM55B En PIN 1 ' P2 controlla il HM55B/EN(ABLE) ' -----[ Costanti ] Reset CON %0000 ' Reimposta i comandi per il HM55B Misura CON %1000 ' Avvia il commando di misura Riporta CON %1100 ' Ottiene il commando stato/valore assi Pronto CON %1100 ' 11 -> Fatto, 00 -> nessun errore MaskNeg CON % ' Per negativo di 11-bit a 16-bit ' -----[ Variabili ] x VAR Word ' dato asse x y VAR Word ' dato asse y stato VAR Nib ' Flag di stato angolo VAR Word ' Memorizza misura angolo ' -----[ Routine Principale ] DO GOSUB Ottieni_assi_bussola angolo = x ATN -y angolo = angolo */ 361 ' Ciclo principale ' Ottiene i valori x, ed y ' Converte x ed y a brad ' Converte brad a gradi DEBUG HOME, "asse x N(-S) = ",SDEC x, ' Visualizza assi e gradi CLREOL, CR, "asse y W(-E) = ", SDEC y, CLREOL, CR, CR, "angolo = ", DEC angolo, " gradi", CLREOL PAUSE 150 LOOP ' Ritarda per i PC più lenti ' Ripete ciclo principale

144 Pagina 132 Sensori intelligenti e loro applicazioni ' -----[ Subroutine - Ottieni_assi_bussola ] Ottieni_assi_bussola: HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Measure\4] stato = 0 ' Subroutine modulo bussola ' Invia comando reset a HM55B ' commando inizia misura HM55B ' Cancella flag stato precedente DO ' Status flag checking loop HIGH En: LOW En ' Measurement status command SHIFTOUT DinDout,clk,MSBFIRST,[Riporta\4] SHIFTIN DinDout,clk,MSBPOST,[Stato\4] ' Ottiene Stato LOOP UNTIL stato = Pronto ' Esce dal ciclo quando stato è Pronto SHIFTIN DinDout,clk,MSBPOST,[x\11,y\11] ' Ottiene valori assi x & y HIGH En ' Disabilita modulo IF (y.bit10 = 1) THEN y = y MaskNeg IF (x.bit10 = 1) THEN x = x MaskNeg ' Memorizza 11-bit come parola ' con segno ' Ripete per l altro asse RETURN Il vostro turno Esperimenti con il campo magnetico Non ci sono molti luoghi dove il campo magnetico terrestre è parallelo al terreno. Il campo o punta nel terreno, oppure esce dal terreno. L angolo al quale il campo magnetico della Terra punta nel terreno o esce dal terreno è detto inclinazione. Mantenete orizzontale la vostra scheda, e allineate l asse x del vostro modulo bussola al nord magnetico. Quando l asse x è allineato con il nord, il Terminale di Debug dovrebbe visualizzare il valore x più grande, e l angolo visualizzato dovrebbe essere 0 gradi. Mantenete la vostra bussola orientata a nord, ma provate ad inclinarla in su e giù. Ci sono casi in cui troverete a certe inclinazioni una misura perfino più grande di quella che ottenete mantenendo la bussola orizzontale. Ciò avviene perché il campo magnetico o punta verso il terreno, o esce dal terreno, nel vostro locale. Prendete nota della misura più grande sull asse x che siete riusciti ad ottenere. La declinazione è la misura in gradi dell angolo tra nord magnetico e nord vero. Negli Stati Uniti, potete trovare informazioni sulle differenze al sito Al

145 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 133 momento in cui scriviamo, sia un articolo con informazioni sulla inclinazione, sia la mappa delle declinazioni è nella pagina web: Una delle mappe contenute in questa pagina web mostra anche misure dell intensità totale del campo magnetico in nanotesla. Il tesla (T) è una unità di misura dell intensità del campo magnetico, e i nanotesla (nt) sono miliardesimi di tesla. Le letture che gli assi x e y del modulo bussola restituiscono sono approssimativamente in milionesimi di tesla (µt). Secondo quanto riportato sul foglio dati del chip del HM55B, le unità del vostro modulo bussola potrebbero avere qualsiasi valore tra 1 e 1,6 µt. Trovate una mappa dell intensità del campo magnetico totale che mostri la vostra situazione locale, e quindi utilizzatela per calcolare le unità di intensità del campo magnetico lungo l asse x per il vostro modulo bussola. Se l intensità del campo magnetico totale è riportata in nanotesla, allora il vostro risultato sarà in nanotesla per l unità lungo l asse x. Per convertirle in microtesla, dividete per 1000 il vostro risultato. unità sull'asse x = intensità del campo magnetico lettura lungo l'asse x totale Il modulo bussola può anche rilevare campi magnetici da calamite, ma le calamite possono anche danneggiare il sensore! STATE ATTENTI! Non mettete calamite potenti vicino al modulo bussola! Tenete barrette magnetiche, ferri di cavallo, ed elettromagneti ben lontani dal vostro modulo bussola finché non avrete determinata una distanza di sicurezza utilizzando la procedura che segue. Assicuratevi di non avvicinare mai questi dispositivi abbastanza vicino da provocare letture sull asse x o y superiori a ±300, poiché il modulo si potrebbe danneggiare. Iniziate a porre la vostra scheda su un tavolo ed allineate il suo asse x con il nord magnetico. Tenete una calamita a barretta sopra il modulo bussola con il suo polo S che punti a nord e il suo polo N che punti a sud come mostrato in Figura 4-5. Iniziate con un metro sopra, ed abbassate la barretta fin quando il terminale di Debug riporti una lettura lungo l asse x di 120.

146 Pagina 134 Sensori intelligenti e loro applicazioni Figura 4-5: Campo di una barretta magnetica sopra il modulo bussola Tenete la barretta magnetica orizzontale alla stessa altezza, e ruotatela in modo che i suoi poli N ed S non siano più allineati con il nord e il sud magnetico terrestre. Mentre la ruotate, la rotazione della barretta dovrebbe essere facilmente evidenziata dal Terminale di Debug. Notate come il campo magnetico che agisce sul modulo bussola sia opposto a quanto hanno mostrato i poli della barretta magnetica. Questo fatto avviene per il modo in cui il campo magnetico si avvolge dal polo nord al polo sud della barretta. La Figura 4-5 illustra questo fatto con le linee di campo magnetico che mostrano l andamento del campo intorno a una barretta magnetica.

147 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 135 Potete anche mantenere la barretta magnetica allo stesso livello del modulo bussola, direttamente davanti ad esso, come mostrato in Figura 4-6a. Questa volta i poli della barretta magnetica sono allineati con il nord e il sud invece di essere opposti. Con la barretta magnetica orientata in Posizione 1 come mostra la Figura 4-6b e la vostra scheda orientata verso il nord, trovate una distanza che produca una misura lungo l asse x di 120. Iniziate da 1 m. Successivamente, tentate di porre la barretta magnetica nelle posizioni da 2 a 6. Potete utilizzare il terminale di Debug per determinare dov è la barretta magnetica? Figura 4-6: Trovare i limiti di distanza di sicurezza a. b. Misure tra 127 e 300 Ricordate che i dati di ingresso dal comando ATN possono variare tra 127 e 127. Se tenete la barretta magnetica abbastanza vicina al modulo bussola in modo che produca misure sopra il valore 127, avrete bisogno di ridurre in scala le misure prima di utilizzare il comando ATN. La procedura di riduzione in scala introdotta nel Capitolo 3, Attività #3 lavorerà bene per questo scopo.

148 Pagina 136 Sensori intelligenti e loro applicazioni La barretta magnetica avrà un effetto simile sopra una bussola meccanica. Non è un magnete molto forte, quindi probabilmente non sarà un problema metterla molto vicina al modulo bussola. Con una bussola meccanica, il suo ago magnetico si allinea automaticamente al nord, quindi dovrete in questo caso muovere il modulo bussola intorno alla bussola meccanica. Provate, e notate quanta distorsione una bussola meccanica vicina produce sulle misure del modulo bussola. Avendo presente questa lezione, accertatevi di mantenere la bussola meccanica ben distante dal modulo bussola mentre eseguite e provate le tarature delle due attività successive. ATTIVITÀ #2: TARATURA DEL MODULO BUSSOLA Il processo di taratura comporta il puntare il modulo bussola per conoscere la direzione corretta mentre è in esecuzione il programma di taratura. Il programma di taratura registrerà i valori riportati dal modulo bussola in una porzione non utilizzata della memoria di programma EEPROM del BASIC Stamp. Quando eseguite il programma nell attività successiva, esso leggerà questi valori dalla EEPROM e li userà per determinare la lettura reale del modulo bussola. Questo procedimento è detto taratura con il software poiché la procedura non effettua nessuna regolazione fisica del modulo bussola reale. Impostazione della taratura e procedura di taratura L impostazione della taratura comporta l allineare uno stampato della bussola e il fissarlo su una superficie piana con nastro adesivo. La procedura di taratura comporta l esecuzione del programma esempio di questa attività e il seguire le domande mentre allineate la Board of Education ai vari raggi della ruota della bussola. Impostazione della taratura Stampate o fate una fotocopia della Figura 4-7. Se state lavorando su una copia stampata del libro e non avete una fotocopiatrice a vostra disposizione, scaricate la versione.pdf di questo testo dalla pagina di prodotto Smart Sensors and Applications del sito Quindi fate una stampa della pagina dal file.pdf.

149 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 137 Figura 4-7: Bussola di taratura Ponete la vostra copia della Figura 4-7 su una superficie piana, livellata (orizzontale), non metallica. Assicuratevi che sia abbastanza lontana dal vostro monitor, tanto quanto è consentito dalla lunghezza del cavo di programmazione. Il luogo dovrebbe anche essere quanto più lontano possibile da contenitori metallici, lampadari, e da qualsiasi altra sorgente potenziale di interferenza da campo magnetico. Controllate anche se il vostro tavolo ha strutture metalliche di montaggio sottostanti.

150 Pagina 138 Sensori intelligenti e loro applicazioni Prima di finalizzare il vostro luogo, ponete la vostra bussola meccanica ben lontana da qualsiasi sorgente di interferenza magnetica e notate la direzione che indica. Quindi, ponete la bussola meccanica sulla vostra superficie di lavoro. La direzione del nord che indica non dovrebbe cambiare. Se cambia, trovate un luogo diverso privo di interferenze magnetiche. Usate la bussola meccanica per allineare la linea di 0 con il nord magnetico come mostrato dalla Figura 4-8. Fissate lo stampato al tavolo con nastro adesivo, assicurandovi di non sciupare il foglio mentre lo fate. Ponete la vostra bussola meccanica ben lontana dal vostro stampato. Figura 4-8 Allineamento al Nord Magnetico Procedura di taratura Quando eseguite il programma TaraBussola.bs2, questo vi chiederà di allineare la vostra scheda a vari angoli sullo stampato della bussola, e di premere il tasto Invio dopo ciascun allineamento. I primi due angoli (0 e 90 ) sono mostrati in Figura 4-9.

151 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 139 Figura 4-9: Bussola a 0 e a 90 a. b. Quando eseguite TaraBussloa.bs2, vi si chiederà dapprima di cliccare sulla finestrella di Trasmissione del terminale di Debug (mostrata nella Figura 4-10), e quindi di premere Invio. Dopo di ciò vi sarà richiesto di digitare T per tarare o R per rivedere le impostazioni di taratura. Digitando la lettera T si avvia la procedura di taratura, durante la quale vi sarà richiesto di orientare la bussola a 0, e a 90 come mostrato in Figura 4-9, e poi a: 180, 270, 0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 250, 292.5, 315, e finalmente, Dovrete premere il tasto Invio prima di far avanzare la vostra scheda a ciascuno degli angoli. Aprite ed eseguite TaraBussola.bs2. Seguite le richieste finché arrivate al messaggio "TARATURA COMPLETATA". Se fate un errore, riavviate il programma ed iniziate daccapo. Il processo di taratura prende soltanto un minuto o due, ed è giusto che abbiate le impostazioni corrette nella memoria EEPROM del vostro BASIC Stamp 2.

152 Pagina 140 Sensori intelligenti e loro applicazioni Figura 4-10: Finestrella di Trasmissione Clicca sulla finestrella di trasmissione, poi premi Invio Finestrella di Trasmissione Digita un carattere: T - taratura R - rivede impostazioni taratura > T Punta la bussola su 0 gradi poi premi Invio Punta la bussola su 90 gradi poi premi Invio Punta la bussola su 180 gradi poii premi Invio Programma Esempio - TaraBussola.bs2 Scaricate gratuitamente! Questo programma è disponibile come file.bs2 scaricabile gratuitamente dalla Pagina di Prodotto Smart Sensors and Applications nel sito Se vi piace conoscere come lavora questo programma, leggetelo qui. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni TaraBussola.bs2 ' Questo programma raccoglie e memorizza le misure del ' modulo bussola Hitachi HM55B nella EEPROM per l offset degli assi ' e le correzioni di interpolazione lineare che saranno eseguite ' dal programma ProvaBussolaTarata.bs2. ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' IMPORTANTE: Segui le istruzioni fornite nel Capitolo #4, Attività #2 ' del testo Sensori intelligenti e loro applicazioni. È ' disponibile per lo scarico da Internet alla pagina ' Smart Sensors and Applications del sito ' -----[ Dati nella EEPROM ] OffsetBussola 0, (4) ' Memorizza gli offset degli assi x ed y ValBassoBussola DATA (1) ' Memorizza indice angolo più piccolo TarBussola DATA (16) ' angoli di bussola di riferimento a 16 bit

153 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 141 ' -----[ Definizioni dei Pin ] DinDout PIN 2 ' P2 trasmette/riceve a/da Din/Dout Clk PIN 0 ' P0 invia impulsi al Clk del HM55B En PIN 1 ' P1 controlla l EN(ABLE) del HM55B ' -----[ Costanti ] Reset CON %0000 ' Riavvia comando per HM55B Misura CON %1000 ' Avvia comando misura Riporta CON %1100 ' Ottiene stato/valori assi Pronto CON %1100 ' 11 -> Fatto, 00 -> senza errori MaskNeg CON % ' Per negativo 11-bit a 16-bits Corrente CON 0 ' Indice per tabella array Precedente CON 1 ' Indice per tabella array ' -----[ Variabili ] x VAR Word ' dato asse x y VAR Word ' dato asse y stato VAR Nib ' Flag di Stato angolo VAR Word ' Misura dell angolo contatore VAR Byte ' Contatore del ciclo indice VAR Nib ' Indice della EEPROM carattere VAR Byte ' Memorizza un carattere per DEBUGIN intero VAR Word ' Valori interi per il display frazione VAR Nib ' Valori Frazionari per il display brad VAR Byte ' Misura in radianti binari tabella VAR Byte(2) ' Memorizza valori tabella temp VAR Word(2) ' Memorizza misura lungo asse OffsetAsse VAR Word ' Memorizza valore offset su asse ' -----[ Programma principale ] DEBUG "Clicca sulla finestrella di trasmissione, ", CR, ' Attesa per utente. "poi premi Invio... ", CR, CR DEBUGIN carattere DO ' Ciclo principale DEBUG "Digita un carattere: ", CR, ' Menu "T - taratura ", CR, "R - revisione impostazioni taratura", CR, "> " DEBUGIN carattere ' Ottiene scelta utente DEBUG CR IF carattere = "t" OR carattere = "T" THEN ' "t" -> taratura GOSUB Taratura_Bussola ' "r" -> rivede impostazioni ELSEIF carattere = "r" OR carattere = "R" THEN GOSUB Rivede_Taratura ENDIF

154 Pagina 142 Sensori intelligenti e loro applicazioni DEBUG CR, "Premi un tasto per", CR, "continuare" DEBUGIN carattere DEBUG CR, CR LOOP ' attende scelta utente ' Ripete ciclo principale ' -----[ Subroutine - Taratura_Bussola ] Taratura_Bussola: GOSUB Ottieni_E_Memor_Offset_Assi GOSUB Ottieni_E_Memor_Interpolaz GOSUB Ottieni_E_Memor_Indiriz_Val_Min DEBUG CR, "TARATURA COMPLETATA...", CR, "Sei ora pronto ad eseguire", CR, "ProvaBussolaTarata.bs2.", CR RETURN ' -----[ Subroutine - Ottieni_E_Memor_Offset_Assi ] ' Questa subroutine chiede all utente di puntare la bussola a nord, poi a est, ' poi a sud, poi a ovest. Esegue poi la media tra valori massimo e minimo per ' ciascun asse e memorizza quella media nell area di EEPROM riservata dalla ' direttiva DATA OffsetBussola. Ottieni_E_Memor_Offset_Assi: ' Ciclo FOR...NEXT ripete per quattro misure di assi. FOR contatore = 0 TO 3 ' Dice all utente di puntare la bussola in una particolare direzione, poi ' aspetta il carattere INVIO. DEBUG CR, "Punta la bussola su " LOOKUP contatore, [ 0, 90, 180, 270 ], intero DEBUG DEC intero DEBUG " gradi", CR, "quindi premi Invio..." DEBUGIN carattere GOSUB Ottiene_Assi_Bussola ' Ottiene misure degli assi ' Calcola gli offset basandosi sui valori max e min per ciascun asse, poi ' li memorizza nella EEPROM. SELECT contatore CASE 0 ' Nord temp(0) = x CASE 1 ' Est temp(1) = y CASE 2 x = x + temp(0) IF x.bit15 = 1 THEN x = ABS(x)/2 ' Sud

155 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 143 x = -x ELSE x = x / 2 ENDIF WRITE OffsetBussola, Word x CASE 3 y = y + temp(1) IF Y.BIT15 = 1 THEN y = ABS(y)/2 y = - y ELSE y = x / 2 ENDIF WRITE OffsetBussola + 2, Word y ENDSELECT NEXT RETURN ' Ovest ' -----[ Subroutine - Ottieni_E_Memor_Interpolaz ] ' Questa subroutine chiede all utente di puntare la bussola in varie direzioni ' separate da 22.5 gradi e memorizza l angolo per ciascuna misura nell area ' della EEPROM riservata dalla direttiva DATA TarBussola. Ottieni_E_Memori_Interpolaz: FOR contatore = 0 TO 15 DEBUG CR, "Punta la bussola a " LOOKUP contatore, [0, 22, 45, 67, 90, 112, 135, 157, 180, 202, 225, 247, 270, 292, 315, 337], intero LOOKUP contatore, [ 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5 ], frazione DEBUG DEC intero IF frazione = 5 THEN DEBUG ".", DEC frazione DEBUG " gradi", CR, "poi premi Invio..." DEBUGIN carattere ' Attende per risposta utente GOSUB Ottiene_Assi_Bussola ' Ottiene i valori x, ed y GOSUB Corregge_Offset_Bussola ' Corregge offset degli assi angolo = x ATN - y ' Converte x ed y a brad WRITE TarBussola + contatore, angolo ' Memorizza valore in brad NEXT RETURN ' -----[ Subroutine - Ottiene_E_Memor_Indir_Val_Min ] ' Questa subroutine trova e memorizza l indirizzo del valore più piccolo ' nell area della EEPROM riservata dalla direttiva DATA TarBussola e lo ' memorizza in un byte riservato dalla direttiva DATA ValBassoBussola. ' Ciò riduce il sovraccarico di codice in ProvaBussolaTarata.bs2.

156 Pagina 144 Sensori intelligenti e loro applicazioni Ottiene_E_Memor_Indir_Val_Min: indice = 8 tabella(corrente) = 0: tabella(precedente) = 0 DO indice = indice + 1 READ TarBussola + indice, tabella(corrente) READ TarBussola + (indice - 1 & $F), tabella(precedente) LOOP UNTIL tabella(corrente) < tabella(precedente) WRITE ValBassoBussola, indice RETURN ' -----[ Subroutine - Rivede_Taratura ] ' Visualizza valori EEPROM. Rivede_Taratura: DEBUG CR, "Offset degli Assi:", CR READ OffsetBussola, Word x DEBUG CR, "Offset x = ", SDEC x READ OffsetBussola + 2, Word y DEBUG CR, "Offset y = ", SDEC y, CR DEBUG CR, "Indice del valore basso in TarBussola:", CR READ ValBassoBussola, indice DEBUG CR, "Valore basso ",? indice DEBUG CR, "ProvaBussolaTarata.bs2", CR, "usa questi valori per ", CR, "correggere errori:", CR DEBUG CR, "Angolo in Brad Angolo in Gradi", CR, "Teorico Reale Teorico Reale", CR, " ", CR FOR contatore = 0 TO 15 brad = contatore * 16 DEBUG CRSRX, 1, DEC3 brad READ TarBussola + contatore, angolo DEBUG CRSRX, 10, DEC3 angolo LOOKUP contatore, [0, 22, 45, 67, 90, 112, 135, 157, 180, 202, 225, 247, 270, 292, 315, 337], intero LOOKUP contatore, [ 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5 ], frazione DEBUG CRSRX, 19, DEC3 intero, ".", DEC frazione angolo = angolo */ 361 ' Converte brad in gradi DEBUG CRSRX, 28, DEC3 angolo, CR PAUSE 50 ' Ritardo Debug per PC lenti NEXT

157 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 145 DEBUG CR RETURN ' -----[ Subroutine - Ottiene_Assi_Bussola ] Ottiene_Assi_Bussola: HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Misura\4] stato = 0 ' Subroutine modulo bussola ' Invia un comando reset al HM55B ' comando inizia misura HM55B ' Cancella flag stato precedente DO ' Ciclo controllo flag stato HIGH En: LOW En ' Comando stato misura SHIFTOUT DinDout,clk,MSBFIRST,[Riporta\4] SHIFTIN DinDout,clk,MSBPOST,[Stato\4] ' Ottiene stato LOOP UNTIL stato = Pronto ' Esce dal ciclo appena stato è ' Pronto SHIFTIN DinDout,clk,MSBPOST,[x\11,y\11] ' Ottiene valori assi x & y HIGH En ' Disabilita modulo IF (y.bit10 = 1) THEN y = y MaskNeg IF (x.bit10 = 1) THEN x = x MaskNeg ' Memorizza 11-bit come parola ' con segno ' Ripete per l altro asse RETURN ' -----[ Subroutine - Corregge_Offset_Bussola ] ' Questa subroutine corregge l interferenza cumulative del campo magnetico ' che può derivare da sorgenti come la PCB, i cavallotti di filo, una vicina ' batteria, o una vicina sorgente di corrente. Questa subroutine si basa sui ' valori memorizzati nello spazio EEPROM riservato dalla direttiva DATA ' OffsetBussola. Questi valori in EEPROM sono scritti da questo programma ' durante la taratura. Corregge_Offset_Bussola: READ OffsetBussola, Word OffsetAsse x = x - OffsetAsse READ OffsetBussola + 2, Word OffsetAsse y = y - OffsetAsse ' Ottiene offset asse x ' Corregge asse x ' Ottiene offset asse y ' Corregge asse y RETURN

158 Pagina 146 Sensori intelligenti e loro applicazioni Il vostro turno Rivedere le impostazioni di taratura Nell attività principale, avete digitato la lettera T per memorizzare i valori di taratura nella EEPROM del BASIC Stamp. Potete anche rivedere questi valori di taratura eseguendo il programma e digitando R invece di T. Questo vi mostrerà un confronto fra i valori attuali contro i valori teorici delle misure di angolo in radianti binari. Gli errori che ne sono evidenziati sono causati in parte dalla scheda di circuito stampato sulla quale è montato il sensore. Alcuni dei materiali che compongono il circuito stampato sono magnetici, e non sono necessariamente allineati con il campo magnetico della Terra. Altre sorgenti di campo magnetico che possono causare errori di misura provengono da correnti elettriche vicine, come gli elettroni che scorrono attraverso le linee Vdd e Vss per alimentare il vostro LED spia di alimentazione. Eseguite di nuovo TaraBussola.bs2. Cliccate sulla finestrella di Trasmissione del terminale di Debug e premete Invio. Digitate R per rivedere le impostazioni di taratura. Esaminate gli errori riportati, che il programma esempio della successiva attività utilizzerà per fare le correzioni. ATTIVITÀ #3: PROVA DELLA TARATURA Dopo l attività #2, il programma di questa attività dovrà far funzionare la vostra bussola in modo perfettamente corretto, abbastanza bene da poter riconoscere correttamente la maggior parte delle 64 direzioni presenti in Figura In questa attività, la Figura 4-11 sarà utilizzata per collaudare le prestazioni del modulo bussola.

159 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 147 Figura 4-11: Scala delle 64 Direzioni Orientamento (rotta di bussola) ProvaBussolaTarata.bs2 giunge in memoria e trova i valori che TaraBussola.bs2 ha registrato nella memoria EEPROM del BASIC Stamp. Poi, esso utilizza questi valori per correggere l errore di scala, e raffina le misure utilizzando una tecnica detta interpolazione lineare.

160 Pagina 148 Sensori intelligenti e loro applicazioni Stampate o fotocopiate la scala mostrata dalla Figura 4-11 e seguite l Impostazione dell attività #2 per allineare la scala al nord e fissarla al tavolino. Calcolate gli angoli non segnati sulla scala. Aprite ed eseguite il programma ProvaBussolaTarata.bs2. Allineate la vostra scheda a vari angoli, e confrontate le misure degli angoli riportate dal modulo bussola con gli angoli effettivi. Se in questo modo non c è ancora abbastanza precisione per voi, la prossima attività vi mostrerà come migliorarla anche di più. Programma esempio: ProvaBussolaTarata.bs2 Scarico gratuito Questo programma è disponibile come file.bs2 scaricabile gratuitamente dalla Pagina di Prodotto Smart Sensors and Applications al sito web Leggete i commenti incorporate nel codice per avere la spiegazione delle sue funzioni. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - ProvaBussolaTarata.bs2 ' Mostra la precisione del modulo bussola Hitachi HM55B dopo la taratura con ' TaraBussola.bs2. ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' -----[ Descrizione Programma ] ' ' Questo programma visualizza la seguenti misure del Sensore Bussola Hitachi ' HM55B: ' ' - Misure di offset del campo magnetico sugli assi x ed y corrette ' - Angolo in radianti binarie in senso orario dal nord corretto con la ' tabella di interpolazione lineare ' - Angolo in gradi in senso orario dal nord corretto con la ' tabella di interpolazione lineare ' IMPORTANTE: Questo programma si basa sui valori EEPROM che sono stati ' memorizzati dal TaraBussola.bs2 durante la procedura di ' taratura. ' Quella procedura di taratura deve essere eseguita prima di ' eseguire questo programma di prova. ' ' Per le istruzioni su come va eseguita la procedura di taratura, ' consultare il Capitolo #4, Attività #2 del testo Sensori ' intelligenti e loro applicazioni. E disponibile per lo ' scarico dalla Pagina di prodotto Smart Sensors and Applications

161 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 149 ' al sito ' -----[ Dati nella EEPROM ] OffsetBussola 0, (4) ' Memorizza gli offset degli assi x ed y ValBassoBussola DATA (1) ' Memorizza indice angolo più piccolo TarBussola DATA (16) ' angoli di bussola di riferimento a 16 bit ' -----[ Definizioni dei Pin ] DinDout PIN 6 ' P6 trasmette/riceve a/da Din/Dout Clk PIN 5 ' P5 invia impulsi al Clk del HM55B En PIN 4 ' P4 controlla l EN(ABLE) del HM55B ' -----[ Costanti ] Reset CON %0000 ' Riavvia comando per HM55B Misura CON %1000 ' Avvia comando misura Rapporto CON %1100 ' Ottiene stato/valori assi Pronto CON %1100 ' 11 -> Fatto, 00 -> senza errori MaskNeg CON % ' Per negativo 11-bit a 16-bits Corrente CON 0 ' Indice per tabella array Precedente CON 1 ' Indice per tabella array ' -----[ Variabili ] x VAR Word ' dato asse x y VAR Word ' dato asse y stato VAR Nib ' Flag di Stato angolo VAR Word ' Misura dell angolo OffsetAsse VAR Word ' offset su asse indice VAR stato ' Indice della EEPROM tabella VAR Byte(2) ' Memorizza valori tabella EEPROM passo VAR x ' Passo tra le entrate in tabella OffsetAngolo VAR y ' Offset tra val. misurati e entrate in tabella ' -----[ Inizializzazione ] DEBUG CLS ' -----[ Programma principale ] DO GOSUB Ottiene_Assi_Bussola GOSUB Corregge_Offset_Bussola angolo = x ATN -y DEBUG HOME, "asse x N(-S) = ",SDEC x, CLREOL, CR, "asse y W(-E) = ", SDEC y, CLREOL GOSUB Interpola_Bussola ' Ciclo principale ' Ottiene valori di x, ed y ' Corregge offset degli assi ' Converte x ed y in brad ' Visualizza assi corretti ' Interpolazione lineare

162 Pagina 150 Sensori intelligenti e loro applicazioni DEBUG CR, CR, "angolo = ", DEC angolo, " brad", CLREOL angolo = angolo */ 361 DEBUG CR,"angolo = ", DEC angolo, " gradi", CLREOL PAUSE 150 LOOP ' Visual. angolo interpolato '... in brad ' Converte brad in gradi ' Visual. angolo interpolato '... in gradi ' Ritardo Debug per PC più lenti ' Ripeti ciclo principale ' -----[ Subroutine - Ottiene_Assi_Bussola ] ' Questa subroutine gestisce la comunicazione BASIC Stamp - HM55B e memorizza ' le misure di intensità del campo magnetico restituite dal dispositivo nelle ' variabili asse x ed asse y. Ottiene_Assi_Bussola: HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Misura\4] stato = 0 ' subroutine modulo bussola ' Invia a HM55B un comando reset ' HM55B avvia un comando misura ' Cancella flag stato precedente DO ' Ciclo controllo flag di stato HIGH En: LOW En ' Comando stato misura SHIFTOUT DinDout,clk,MSBFIRST,[Rapporto\4] SHIFTIN DinDout,clk,MSBPOST,[Stato\4] ' Ottiene stato LOOP UNTIL stato = Pronto ' Fine ciclo quando stato è pronto SHIFTIN DinDout,clk,MSBPOST,[x\11,y\11] ' Ottiene valori assi x & y HIGH En ' Disabilita modulo IF (y.bit10 = 1) THEN y = y MaskNeg IF (x.bit10 = 1) THEN x = x MaskNeg ' Memorizza 11-bits come parola con segno ' Ripete per altro asse RETURN ' -----[ Subroutine - Corregge_Offset_Bussola] ' Questa subroutine corregge l interferenza cumulativa del campo magnetico ' che può provenire da sorgenti come le PCB, i cavallotti di filo, una vicina ' batteria, o una vicina sorgente di corrente. Questa subroutine si basa sui ' valori memorizzati nello spazio della EEPROM riservato dalla direttiva DATA ' di OffsetBussola. ' Questi valori di EEPROM sono stati scritti da TaraBussola.bs2. Corregge_Offset_Bussola: READ OffsetBussola, Word OffsetAsse ' Ottiene offset asse x

163 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 151 x = x - OffsetAsse READ OffsetBussola + 2, Word OffsetAsse y = y - OffsetAsse ' Corregge asse x ' Ottiene offset asse y ' Corregge asse y RETURN ' -----[ Subroutine Interpola_Bussola ] ' Questa subroutine applica l interpolazione lineare alla rifinitura della ' misura con la bussola. Questo secondo livello di rifinitura si può eseguire ' dopo la subroutine Corregge_Offset_Bussola, e può correggere lo spostamento ' degli assi e altri fattori relativi al chip HM55B. ' ' La subroutine si basa su 16 misure reali di bussola memorizzate nelle sedici ' locazioni di EEPROM riservate dalla direttiva DATA di TarBussola. ' Queste misure sono state memorizzate da TaraBussola.bs2, e rappresentano ' le misure effettive della bussola per 0, 22.5, 45, 90,..., ' gradi. La subroutine trova le due misure della EEPROM tra le quali cade ' la misura corrente dell angolo. Quindi aggiorna la misura di angolo ' basata su dove la misura di angolo cade tra i due valori noti della ' tabella. Interpola_Bussola: ' Inizia con il valore più piccolo della tabella TaraBussola. READ ValBassoBussola, indice ' Carica i valori di tabella corrente e precedente. READ TarBussola + indice, tabella(corrente) READ (TarBussola + (indice - 1 & $F)), tabella(precedente) ' Il blocco di codice IF...ELSEIF...ELSE...ENDIF trova i due valori EEPROM ' della tabella TarBussola tra i quali cade l angolo corrente e calcola ' la differenza tra la misura di angolo corrente e il più basso tra i due ' valori di tabella. I blocchi IF ed ELSEIF si occupano dei valori che sono ' più grandi del valore Massimo o più piccoli del valore minimo di tabella. ' Il blocco ELSE gestisce qualsiasi cosa tra i valori Massimo e minimo della ' tabella. IF (angolo >= tabella(precedente)) THEN passo = (255 - tabella(precedente)) + tabella(corrente) OffsetAngolo = angolo - tabella(precedente) ELSEIF (angolo <= tabella(corrente)) THEN passo = tabella(corrente) + (255 - tabella(precedente)) OffsetAngolo = angolo + (255 - tabella(precedente)) ELSE indice = indice - 1 READ TarBussola + indice, tabella(corrente)

164 Pagina 152 Sensori intelligenti e loro applicazioni DO tabella(precedente) = tabella(corrente) indice = indice + 1 READ TarBussola + indice, tabella(corrente) IF (angolo <= tabella(corrente)) AND (angolo > tabella(precedente)) THEN passo = tabella(corrente) - tabella(precedente) OffsetAngolo = angolo - tabella(precedente) EXIT ENDIF LOOP ENDIF ' Dopo aver determinato l offset tra la misura dell angolo corrente e la ' successive misura più piccolo di tabella, questo blocco di codice la ' usa assieme al passo tra le entrate in tabella sopra e sotto la misura ' di angolo per risolvere: angolo(corretto) = angolo(offset) * 16 / passo. ' Questo blocco di codice inoltre arrotonda verso l alto o verso il basso ' confrontando il resto della divisione OffsetAngolo / passo col valore di ' (passo / 2). OffsetAngolo = OffsetAngolo * 16 angolo = (OffsetAngolo / passo) + ((OffsetAngolo // passo) / (passo / 2)) angolo = ((indice - 1 & $F) * 16) + angolo angolo = angolo & $ff RETURN Il vostro turno Visualizzare "Gradi" come La visualizzazione del simbolo di grado nel terminale di Debug è stata introdotta per la prima volta nel Capitolo #3, Attività #5. Modificate il programma per visualizzare i gradi con il carattere ASCII 176, cioè il simbolo. ATTIVITÀ #4: MIGLIORATE LE MISURE DI BUSSOLA CON LA MEDIA Potete aver notato che le misure x ed y nel Terminale di Debug tendevano ad alternarsi tra due o magari tre valori diversi. Questo è il risultato di molti tipi diversi di interferenza chiamati collettivamente rumore. Alcuni comuni responsabili di questo sono la vicinanza di dispositivi alimentati in CA e di linee di alimentazione elettrica, l attività digitale del BASIC Stamp, e inoltre l attività digitale all interno del chip HM55B. Un modo efficace per eliminare gli effetti dei rumori è prendere una media delle misure di bussola lungo gli assi x ed y. In questo modo, se il rumore produce una misura un po

165 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 153 più alta, la successiva un po più piccola e quella ulteriore quasi corretta, la media di tutte le misure elimina i valori alto e basso e imposta definitivamente il valore corretto. Una delle ragioni per cui le attività di taratura e prova della taratura possono non aver ottenuto i migliori risultati è proprio il rumore. Questa attività dimostra come potete modificare qualsiasi tra i programmi esempio in questo capitolo, inclusi il programma di taratura e di prova della taratura, per prendere misure medie ed eliminare l effetto del rumore. Incorporare la media entro i programmi di bussola Ci sono tre punti principali per incorporare l operazione di media nei programmi esempio di questo capitolo. Primo, aggiungere due direttive CON alla sezione Costanti del programma. Negativo CON 1 ' Word.bit15 = 1 -> negativo Positivo CON 0 ' Word.bit15 = 0 -> positivo Quindi, aggiungere quattro variabili alla sezione Variabili del programma. ContaMis VAR Nib ' Conteggio Misura SommaX VAR Word ' Accumulatore misura asse x SommaY VAR Word ' Accumulatore misura asse y segno VAR Bit ' Bit del Segno Infine, modificate la subroutine Ottieni_Assi_Bussola come mostrato qui sotto. Il codice della subroutine originale Ottieni_Assi_Bussola è annidato in un ciclo FOR...NEXT che mantiene una somma in esecuzione delle misure lungo gli assi x ed y con le variabili SommaX e SommaY. Dal momento che la media di un gruppo di misure è la somma delle misure divisa per il numero delle misure prese, dopo il ciclo FOR...NEXT ci sono blocchi di codice che pongono x uguale a SommaX 10 ed y uguale a SommaY 10. Ottieni_Assi_Bussola: SommaX = 0 SommaY = 0 FOR ContaMis = 1 TO 10 ' Subroutine modificata ' Accumulatori a zero ' Prende dieci misure ' *** Qui va il codice originale della subroutine ' Ottieni_Assi_Bussola *** SommaX = SommaX + x ' Prende somma in esecuzione di x

166 Pagina 154 Sensori intelligenti e loro applicazioni SommaY = SommaY + y ' Prende somma in esecuzione di y NEXT ' Divide SommaX segno = SommaX.BIT15 ' Memorizza segno di SommaX SommaX = ABS(SommaX) ' Prende valore assoluto x = SommaX / 10 ' x = media delle misure IF SommaX // 10 >=5 THEN x = x + 1 ' Decimale >.5? Arrotonda in alto IF segno = Negativo THEN x = - x ' se SommaX negativo, nega x segno = SommaY.BIT15 ' Memorizza segno di SommaY SommaY = ABS(SommaY) ' Prende valore assoluto y = SommaY / 10 ' y = media delle misure IF SommaY // 10 >=5 THEN y = y + 1 ' Decimale >.5? Arrotonda in alto IF segno = Negativo THEN y = - y ' se SommaY negativo, nega y RETURN Divisione PBASIC con numeri negativi Gli operatori PBASIC divisione e modulo (/ e //) si usano con i numeri positivi. Se il numeratore potrebbe essere negativo, l approccio migliore è quello di memorizzare il segno del numeratore prima di prendere il suo valore assoluto (segno = numeratore.bit15). Quindi, effettuare l operazione di divisione. Opzionalmente, potete anche arrotondare verso l alto o verso il basso a seconda del resto della divisione. Prima di farlo, controllate il segno, e se è negativo, rendete negativo il risultato (risultato = - risultato). numeratore VAR Word denominatore VAR Word Risultato VAR Word Segno VAR Bit Negativo CON 1 Positivo CON 0 ' Routine Divisione con un numeratore che potrebbe essere negativo. segno = numeratore.bit15 numeratore = ABS(numeratore) risultato = numeratore / denominatore IF numeratore // denominatore >= (denominatore / 2) THEN risultato = risultato + 1 ENDIF IF segno = Negativo THEN risultato = - risultato

167 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 155 Programma Esempio: ProvaBussolaMediata.bs2 Scarica gratuitamente Questo programma è disponibile come file.bs2 scaricabile gratuitamente dalla pagina di prodotto Smart Sensors and Applications Product al sito web La procedura per convertire un programma in modo che faccia la media delle sue misure lungo gli assi x ed y è stata applicata a ProvaBussola.bs2, che poi è stato salvato come ProvaBussolaMediata.bs2. Aprite ed eseguite ProvaBussola.bs2 dall attività #1. Osservate le misure sugli assi x ed y corrispondenti a pochi orientamenti diversi. Esse saranno probabilmente rumorose, lampeggianti tra due o tre valori diversi. Aprite ed eseguite ProvaBussolaMediata.bs2. Le misure dovrebbero essere molto più stabili. Esse dovrebbero lampeggiare soltanto quando siete molto vicini alla transizione tra due risultati diversi. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - ProvaBussolaMediata.bs2 ' Prova per essere certi che il modulo bussola Hitachi HM55B stia lavorando. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Definizioni I/O ] DinDout PIN 2 ' P2 trasmette/riceve a/da Din/Dout Clk PIN 0 ' P0 invia impulsi al clock del HM55B En PIN 1 ' P2 controlla il HM55B/EN(ABLE) ' -----[ Costanti ] Reset CON %0000 ' Reimposta i comandi per il HM55B Misura CON %1000 ' Avvia il commando di misura Riporta CON %1100 ' Ottiene il commando stato/valore assi Pronto CON %1100 ' 11 -> Fatto, 00 -> nessun errore MaskNeg CON % ' Per negativo di 11-bit a 16-bit Negativo CON 1 ' Word.bit15 = 1 -> negativo Positivo CON 0 ' Word.bit15 = 0 -> positivo ' -----[ Variabili ] x VAR Word ' dato asse x y VAR Word ' dato asse y stato VAR Nib ' Flag di stato angolo VAR Word ' Memorizza misura angolo

168 Pagina 156 Sensori intelligenti e loro applicazioni ContaMis VAR Nib ' Conteggio Misura SommaX VAR Word ' Accumulatore misura asse x SommaY VAR Word ' Accumulatore misura asse y segno VAR Bit ' Bit del Segno ' -----[ Routine Principale ] DO GOSUB Ottieni_assi_bussola angolo = x ATN -y angolo = angolo */ 361 ' Ciclo principale ' Ottiene i valori x, ed y ' Converte x ed y a brad ' Converte brad a gradi DEBUG HOME, "asse x N(-S) = ",SDEC x, ' Visualizza assi e gradi CLREOL, CR, "asse y W(-E) = ", SDEC y, CLREOL, CR, CR, "angolo = ", DEC angolo, " gradi", CLREOL PAUSE 150 LOOP ' Ritarda per i PC più lenti ' Ripete ciclo principale ' -----[ Subroutine - Ottieni_assi_bussola] Ottieni_assi_bussola: SommaX = 0 SommaY = 0 FOR ContaMis = 1 TO 10 HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Misura\4] stato = 0 ' Subroutine modulo bussola ' Accumulatori a zero ' Prende dieci misure ' Invia comando reset a HM55B ' commando inizia misura HM55B ' Cancella flag stato precedente DO ' Status flag checking loop HIGH En: LOW En ' Measurement status command SHIFTOUT DinDout,clk,MSBFIRST,[Riporta\4] SHIFTIN DinDout,clk,MSBPOST,[Stato\4] ' Ottiene Stato LOOP UNTIL stato = Pronto ' Esce dal ciclo quando stato è Pronto SHIFTIN DinDout,clk,MSBPOST,[x\11,y\11] ' Ottiene valori assi x & y HIGH En ' Disabilita modulo

169 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 157 IF (y.bit10 = 1) THEN y = y MaskNeg IF (x.bit10 = 1) THEN x = x MaskNeg ' Memorizza 11-bit come parola ' con segno ' Ripete per l altro asse SommaX = SommaX + x SommaY = SommaY + y ' Prende somma in esecuzione di x ' Prende somma in esecuzione di y NEXT segno = SommaX.BIT15 ' Memorizza segno di SommaX SommaX = ABS(SommaX) ' Prende valore assoluto x = SommaX / 10 ' x = media delle misure IF SommaX // 10 >=5 THEN x = x + 1 ' Decimale >.5? Arrotonda in alto IF segno = Negativo THEN x = - x ' se SommaX negativo, nega x segno = SommaY.BIT15 ' Memorizza segno di SommaY SommaY = ABS(SommaY) ' Prende valore assoluto y = SommaY / 10 ' y = media delle misure IF SommaY // 10 >=5 THEN y = y + 1 ' Decimale >.5? Arrotonda in alto IF segno = Negativo THEN y = - y ' se SommaY negativo, nega y RETURN Il vostro turno Inserimento della media nei programmi di Taratura e prova della taratura I programmi di taratura e prova della taratura migliorano in modo significativo la precisione della vostra bussola digitale. Se incorporate la procedura della media in entrambi i programmi, la precisione della vostra bussola digitale sarà ulteriormente migliorata. Seguite i passi descritti in questa attività per incorporare la media in una copia di TaraBussola.bs2. Invece di modificare la subroutine di programma Ottieni_Assi_Bussola, copiate semplicemente la subroutine da questo programma (ProvaBussolaMediata.bs2) e incollatela sopra quella della vostra copia di TaraBussola.bs2. Eseguite la vostra copia modificata di TaraBussola.bs2 e ripetete i passi descritti nell Attività #2. Fate una copia del ProvaBussolaTarata.bs2, e modificatela perché esegua la media. Ripetete le prove di precisione indicate nell Attività #3. La vostra bussola digitale dovrebbe funzionare davvero bene, adesso.

170 Pagina 158 Sensori intelligenti e loro applicazioni ATTIVITÀ #5: MISURE IN MOVIMENTO Questa attività vi mostra come sostituire il terminale di Debug con il LCD seriale Parallax per rendere mobile la vostra bussola digitale. Connessione del LCD seriale Parallax con un cavo di estensione Il LCD seriale Parallax è una sorgente definita di disturbi del campo magnetico ed occorre che sia fatta funzionare ben lontano dal modulo bussola. Si ottiene facilmente questo utilizzando un cavo di estensione. Parti richieste (1) Modulo bussola Hitachi HM55B (1) LCD seriale Parallax (2 16) (1) Cavo di estensione LCD da 14 pollici (6) Cavallotti di filo Se state lavorando con una scheda HomeWork BASIC Stamp oppure con una Board of Education Rev A or B seriale, vi occorrerà anche: (1) capocorda a 3-pin (3) cavalotti di filo aggiuntivi Connessioni del cavo LCD Gli schemi mostrato in Figura 4-12 sono identici a quelli utilizzati per il modulo bussola e per il LCD seriale Parallax fino a questo punto. L unica cosa che sarà cambiata è il modo in cui il LCD è collegato alla vostra scheda, tramite un cavo di estensione. Nessun cambiamento dovrà essere fatto al cablaggio del modulo bussola. LCD Parallax Figura 4-12 Schemi del LCD seriale Parallax e del modulo bussola

171 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 159 Connessione via cavo a Board of Education Rev C e a Board of Education USB Queste istruzioni sono per le schede che hanno porte servo con un cavallotto Vdd/Vss posto tra le porte, come la Board of Education Rev C e la Board of Education USB. Per tutte le altre schede, saltare a Per tutte le altre schede didattiche BASIC Stamp a pagina 161. Togliete l alimentazione alla vostra scheda. Posizionate il cavallotto tra i servo X4 ed X5 su Vdd (+5 V) come mostrato nella Figura Il cavallotto deve coprire i due pin più vicini alla Vdd, ed il terzo pin vicino alla Vin deve restare visibile. Figura 4-13 Impostazione del cavallotto tra le porte Servo a Vdd L impostazione del cavallotto a Vdd oppure a Vin determina quale alimentazione elettrica è connessa alle porte X4 ed X5. Quando il cavallotto è posto su Vdd, queste porte ricevono tensione regolata a 5 V dal regolatore di tensione della scheda Board of Education. Se il cavallotto è posto su to Vin, le porte ricevono alimentazione direttamente dalla batteria o da un alimentatore. ATTENZIONE!! ACCERTATEVI CHE IL VOSTRO CAVALLOTTO SIA IMPOSTATO CORRETTAMENTE SU Vdd, ALTRIMENTI DANNEGGERETE PERMANENTEMENTE IL VOSTRO LCD!!

172 Pagina 160 Sensori intelligenti e loro applicazioni Inserite una delle estremità del cavo di estensione nella Porta 14 del capocorda X4, assicurandovi che i contrassegni "Rosso" e "Nero" lungo il lato destro della porta X5 siano allineati con i fili rosso e nero del cavo. Verificate che il vostro cavo sia inserito in modo corretto controllandolo per accertarvi che il filo bianco è più vicino all etichetta 14 e il filo nero è più vicino all etichetta X4. Collegate l altra estremità del cavo in modo che il filo nero sia connesso al pin GND del LCD seriale Parallax, il filo rosso sia connesso al pin 5 V, e il filo bianco sia connesso al pin RX. Controllate i vostri collegamenti due volte e assicuratevi che siano corretti. ATTENZIONE! Non ricollegate l alimentazione alla vostra scheda fin quando non siate positivamente sicuri che le connessioni siano corrette. Se fate un errore con le connessioni del LCD, il LCD seriale the Parallax sarà danneggiato in modo permanente. Figura 4-14: Connessioni del LCD seriale Parallax alla porta Servo

173 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 161 Inserite di nuovo l alimentazione sulla Board of Education. Impostate l interruttore a 3 posizioni della Board of Education sulla posizione 2. Saltate al paragrafo Staffe opzionali di montaggio del LCD a pagina 163. Per tutte le altre schede didattiche BASIC Stamp Questo capitolo riguarda la connessione del Modulo bussola e del LCD seriale Parallax ad una delle schede didattiche BASIC Stamp seguenti: Scheda BASIC Stamp HomeWork Scheda Board of Education Rev A (versione seriale) Scheda Board of Education Rev B (versione seriale) Scollegate l alimentazione della vostra scheda. Costruite la porta del cavo di estensione mostrata nella Figura Figura 4-15 Cablaggio Bread-board per la connessione del cavo per il LCD seriale Parallax ed il modulo bussola

174 Pagina 162 Sensori intelligenti e loro applicazioni Inserite una estremità del cavo di estensione nel capocorda a tre pin sulla scheda come mostrato in Figura Accertatevi che i fili bianco, rosso, e nero siano orientati come mostrato. Il filo nero dovrebbe essere connesso a Vss, il filo rosso a Vdd, e il filo bianco a P14. Collegate l altra estremità del cavo in modo che il filo nero sia connesso al pin GND del LCD seriale Parallax, il filo rosso sia connesso al pin 5 V, e il filo bianco sia connesso al pin RX. Figura 4-16: Modulo bussola e LCD seriale Parallax connessi con cavo di estensione Controllate due volte tutte le vostre connessioni e accertatevi che siano corrette. ATTENZIONE! Non ricollegate l alimentazione alla vostra scheda fin quando non siate positivamente certi che le connessioni siano corrette. Se fate un errore con le connessioni del LCD, il LCD seriale Parallax sarà danneggiato permanentemente. Ricollegate l alimentazione alla vostra scheda.

175 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 163 Staffe opzionali di montaggio del LCD Se lo desiderate, potete montare il vostro LCD sulla vostra scheda Board of Education o HomeWork con le staffe e gli accessori forniti con il vostro kit. L elenco delle parti e le istruzioni sono riportati alla pagina successiva con la Figura 4-17.

176 Pagina 164 Sensori intelligenti e loro applicazioni Figura 4-17: Montaggio delle staffe opzionali del LCD Parti richieste (4) staffe di montaggio a 90 gradi (2) #4 distanziali rotondi di nylon da ¼ di pollice (2) viti a testa tonda da ½ pollice 4-40 (4) viti a testa tonda da ¼ pollice 4-40 (6) dadi zincati 4-40 Avvitate una vite da ¼" nel foro esterno di una staffa e il foro in alto a sinistra della vostra scheda, e assicuratela con un dado. Ripetete al foro inferiore sinistro della vostra scheda (figura in alto). Avvitate una vite da ½" attraverso il foro in basso a sinistra della scheda del LCD, un inserto di nylon, il foro interno di una staffa, e fissatela con un dado (2 a figura, a sinistra). Avvitate una vite da ½" attraverso il foro in basso a destra nella scheda del LCD, un inserto in nylon, il foro esterno deella staffa, e fissatela con un dado (2 a figura, a destra). Utilizzando le viti rimaste da ¼" e i loro dadi, attaccate le mensole del LCD alle staffe sulla vostra scheda, usando due viti e dadi da ¼" (3 a figura).

177 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 165

178 Pagina 166 Sensori intelligenti e loro applicazioni Programmazione del Display LCD Questa routine di inizializzazione del LCD si preoccupa dell inizializzazione base del LCD, definisce il carattere personalizzato 7 come simbolo, e poi visualizza testo statico (testo che non cambia durante l esecuzione del programma). ' routine di inizializzazione del LCD PAUSE 200 ' Aggira l alimentazione SEROUT 14, 84, [22, 12] ' Accende & cancella LCD PAUSE 5 ' ritardo di 5 ms per cancellare ' il comando SEROUT 14, 84, [255, ' Definisce il carattere ' personalizzato 7 %01000, ' * %10100, ' * * %01000, ' * %00000, ' %00000, ' %00000, ' %00000, ' %00000] ' SEROUT 14, 84, [129, "Orient....", ' Caratteri statici 149, "x=", 158, "y="] Il commando SEROUT qui sotto posiziona il cursore del LCD, quindi visualizza degli spazi per sovrascrivere il valore precedente. Poi posiziona il cursore nella stessa posizione di partenza e visualizza il nuovo valore. Ciò evita l apparizione di caratteri fantasma quando il numero di cifre del valore cambia, ma senza i noiosi effetti laterali del lampeggiamento dello schermo che otterreste cancellando il display tra ciascuna delle misure. ' Intestazione del Display LCD in gradi sulla riga superiore e misure ' x ed y sulla riga inferiore. SEROUT 14, 84, [139, " ", 139, DEC angolo, 7, 151, " ", 151, SDEC X, 160, " ", 160, SDEC y] Programma esempio: ProvaBussolaLcd.bs2 Scarico gratuito! Questo programma è disponibile come file scaricabile gratuitamente dalla Pagina di Prodotto Smart Sensors and Applications al sito

179 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 167 Questo programma esempio è una versione modificata del ProvaBussola.bs2, la quale utilizza i comendi del display LCD invece dei comandi al terminale di Debug. Aprite il ProvaBussolaLcd.bs2 e provate ad eseguirlo con il cavo seriale/usb scollegato. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - ProvaBussolaLcd.bs2 ' Prova per assicurarsi che il modulo bussola Hitachi HM55B stia lavorando. ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Definizioni I/O] DinDout PIN 2 ' P2 trasmette/riceve a/da Din/Dout Clk PIN 0 ' P0 invia impulsi al clock del HM55B En PIN 1 ' P2 controlla il HM55B/EN(ABLE) ' -----[ Constants ] Reset CON %0000 ' Reimposta i comandi per il HM55B Misura CON %1000 ' Avvia il commando di misura Riporta CON %1100 ' Ottiene il commando stato/valore assi Pronto CON %1100 ' 11 -> Fatto, 00 -> nessun errore MaskNeg CON % ' Per negativo di 11-bit a 16-bit ' -----[ Variabili ] x VAR Word ' dato asse x y VAR Word ' dato asse y stato VAR Nib ' Flag di stato angolo VAR Word ' Memorizza misura angolo ' -----[ Inizializzazione ] ' Inizializzazione LCD PAUSE 200 SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, [255, ' Aggira l alimentazione ' Accende & cancella LCD ' ritardo di 5 ms per cancellare ' il comando ' Definisce il carattere ' personalizzato 7 %01000, ' * %10100, ' * * %01000, ' *

180 Pagina 168 Sensori intelligenti e loro applicazioni %00000, ' %00000, ' %00000, ' %00000, ' %00000] ' SEROUT 14, 84, [129, "Orientaz....", ' Caratteri statici 149, "x=", 158, "y="] ' -----[ Routine principale ] DO GOSUB Ottieni_assi_bussola angolo = x ATN -y angolo = angolo */ 361 ' Ciclo principale ' Ottiene i valori x, ed y ' Converte x ed y a brad ' Converte brad a gradi ' Orientazione del Display LCD in gradi sulla riga superiore e ' misure x ed y sulla riga inferiore. SEROUT 14, 84, [139, " ", 139, DEC angolo, 7, 151, " ", 151, SDEC X, 160, " ", 160, SDEC y] PAUSE 150 LOOP ' Ritardo del Debug per i PC più lenti ' Ripete ciclo principale ' -----[ Subroutine - Ottieni_assi_bussola] Ottieni_assi_bussola: HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Misura\4] stato = 0 ' Subroutine modulo bussola ' Invia comando reset a HM55B ' commando inizia misura HM55B ' Cancella flag stato precedente DO ' Status flag checking loop HIGH En: LOW En ' Measurement status command SHIFTOUT DinDout,clk,MSBFIRST,[Riporta\4] SHIFTIN DinDout,clk,MSBPOST,[Stato\4] ' Ottiene Stato LOOP UNTIL stato = Pronto ' Esce dal ciclo quando stato è Pronto SHIFTIN DinDout,clk,MSBPOST,[x\11,y\11] ' Ottiene valori assi x & y HIGH En ' Disabilita modulo IF (y.bit10 = 1) THEN y = y MaskNeg ' Memorizza 11-bit come parola ' con segno

181 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 169 IF (x.bit10 = 1) THEN x = x MaskNeg ' Ripete per l altro asse RETURN Il vostro turno Provate ad estendere Il vostro turno dalla Attività #4 al caso con il LCD seriale Parallax. Non preoccupatevi di aggiungere la funzionalità LCD al programma di taratura, proprio al programma di prova taratura modificato dalla Attività #3. Potrà servirvi di tarare ancora una volta per eliminare l interferenza magnetica causata dalla eccessiva vicinanza del LCD. Aggiungete un commando alla Routine Principale del programma TaraBussola.bs2 che invia alcuni caratteri al LCD ogni volta che il ciclo esegue i comandi prima di eseguirlo. Per liberare un po di spazio nel codice, provate a rimuovere alcuni caratteri da uno dei comandi DEBUG nella subroutine Rivedi_Taratura.

182 Pagina 170 Sensori intelligenti e loro applicazioni SOMMARIO Il modulo bussola Hitachi HM55B è un sensore di campo magnetico a due assi capace di rilevare variazioni di microtesla (milionesimi di tesla) nelle componenti del campo magnetico terrestre che agiscono sui suoi assi x ed y. L angolo del modulo dal nord può essere determinato dividendo la misura sull asse x per la misura sull asse y, e poi prendendo l arcotangente del risultato. Il modulo bussola può essere usato anche per rilevare campi magnetici prodotti da magneti a barra, e pure l inclinazione del campo magnetico terrestre nel locale dove siete. Il BASIC Stamp può memorizzare le direzioni misurate nella porzione non utilizzata di memoria programmi della EEPROM con un programma di taratura. Poi, un programma di prova può accedere a questi valori memorizzati, ed utilizzarli per eseguire correzioni di scala e interpolazone lineare delle misure. Queste tecniche di correzione possono migliorare significativamente la misura della direzione. Facendo la media delle misure lungo gli assi, la misura di direzione può essere rifinita ulteriormente. La direzione può essere visualizzata in formato testo sul LCD seriale Parallax aggiungendo una piccola routine di inizializzazione alla sezione Inizializzazione del programma e un comando SEROUT al cilco principale DO...LOOP del programma. Domande 1. Qual è la relazione tra la misura sull asse x del modulo bussola ad un dato angolo e la misura quando l asse x è allineato con il nord magnetico? 2. Quali sono i nomi di ciascuno dei pin del modulo bussola che devono essere collegati ai pin I/O del BASIC Stamp? 3. In quale modo aumenta l angolo dal nord nelle bussole convenzionali? 4. Che cosa è la declinazione? 5. Se state misurando un campo magnetico vicino ad una barra magnetica, come si può mettere in relazione la direzione del campo magnetico con le sue indicazioni N e S? 6. Perché una bussola meccanica vicina può portare errori nelle misure del modulo bussola? 7. Come fareste la media di venti misure? 8. Quali variabili dovete impostare a zero prima di effettuare la media degli assi x ed y? Perché vanno impostate a zero? 9. Qual è il commando SEROUT che definisce il simbolo di grado? Quanti byte invia?

183 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina Se il numero delle cifre in una misura visualizzata potrebbe cambiare, come evitereste che a destra caratteri fantasma appaiano? Esercizi 1. Calcolare l angolo dal nord se la lettura sull asse x è 34 e quella sull asse y è Calcolare l angolo dal nord se la lettura sull asse x è 16 e quella sull asse y è Calcolare il numero di nanotesla (tesla x 10-9 ) presenti in 1,6 microtesla. 4. Scrivere una routine che converta da microtesla a nanotesla. 5. Scrivere una routine che esamini una variabili e visualizzi se è o non è negativa. Progetti 1. Visualizzate l orientazione corrente sul LCD seriale. Premete e rilasciate un pulsante per ricordare quella orientazione. Se l orientazione è fuori di più di 5, Inviate un segnale di avvetimento con un piezo-altoparlante. 2. Progettate un prototipo che possa dire quando la vostra Bussola Digitale Hitachi HM55B è mantenuta a livello orizzontale con l aiuto dell Accelerometro Memsic 2125.

184 Pagina 172 Sensori intelligenti e loro applicazioni Soluzioni Q1. Se N è il valore riportato da x quando è allineato con il nord magnetico, allora per un dato angolo theta, x = Ncosθ. Q2. Din, Dout, /Enable, e CLK. Q3. In senso orario dal nord. Q4. La Declinazione è la differenza, in gradi, tra il nord magnetico e il nord vero. Q5. La direzione del campo magnetico sembrerà essere opposta ai segni di N e S, a causa del modo in cui il campo magnetico si avvolge su se stesso. Q6. La bussola meccanica contiene un piccolo magnete che può influenzare il modulo bussola. Q7. Prendete una soma in esecuzione delle venti misure, poi dividete la somma totale per 20. Q8. La soma in esecuzione di entrambi gli assi x ed y deve iniziare a zero. Una volta fatto il calcolo, la soma conterrà un numero grande. Per fare un secondo calcolo, dovrete ripristinare la soma a zero. Q9. Il commando è 255, seguito da 8 byte di caratteri dato. SEROUT Numeropin, tassobaud, [255, byte0 byte7] Q10. Prima stampate degli spazi per sovrascrivere (riempire con spazi) il valore precedente, poi posizionare il cursore indietro al punto di inizio e stampate il nuovo valore. E1. θ = 0 gradi dal Nord, o Nord dovuto. E2. θ = dal Nord. E3. 1,6 microtesla = 1,6 x 10-6 T = 1600 x 10-9 T = 1600 nanotesla E4. Routine esempio: Converte: nanot = 1000 * microt RETURN E5. Routine esempio: valore VAR Word IF (valore.bit15 = 1) THEN DEBUG "Negativo", CR ELSE DEBUG "Positivo", CR ENDIF

185 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 173 P1. Soluzione esempio: Assumendo che un pulsante attivo-basso sia connesso a P10 e che un piezoaltoparlante sia connesso a P11 (Si veda What s a Microcontroller?, Capitoli 3 ed 8), il programma ProvaBussolaLcd.bs2 può essere modificato come segue: Aggiungere alla sezione definizioni I/O queste direttive di pin: pulsante PIN 10 altoparlante PIN 11 Aggiungere alla sezione Variabili queste variabili: MemAngolo VAR Word differenza VAR Word AllarmeArm VAR Bit Modificare l ultimo comando SEROUT nella routine di inizializzazione: SEROUT 14, 84, [128, "All. Ang. posto a ", ' Caratteri statici 148, "OFF "] Modificare la routine principale come mostrato qui di seguito: ' -----[ Routine principale ] DO GOSUB Ottieni_Assi_Bussola angolo = x ATN -y angolo = angolo */ 361 ' ciclo principale ' Ottiene i valori di x ed y ' Converte x ed y in brad ' Converte brad in gradi ' Il display LCD mostra prua in gradi su riga sup. e le misure di ' x ed y sulla riga inferiore. SEROUT 14, 84, [154, " ", 154, DEC angolo, 7] IF pulsante = 1 THEN MemAngolo = angolo ArmAllarme = 1 FREQOUT altoparlante, 20, 3000 SEROUT 14, 84, [148,"ON " ] ENDIF differenza = ABS(angolo - MemAngolo) IF ArmAllarme = 1 THEN SEROUT 14, 84, [160, " ", 160, DEC MemAngolo, 7] IF differenza > 5 AND differenza < 355 THEN FREQOUT altoparlante, 10, 4000

186 Pagina 174 Sensori intelligenti e loro applicazioni ENDIF ENDIF PAUSE 150 LOOP ' Ritardo di Debug per PC più lenti ' Ripete ciclo principale P2. Soluzione esempio: Cap4_Progetto2.bs2 Questo programma è una combinaztione di InclinOrizzontale.bs2 e ProvaBussola.bs2. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - Cap4Progetto2.bs2 ' Visualizza misure bussola digitale e inclinazione in un solo programma. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Direttiva BASIC Stamp ' Direttiva PBASIC ' -----[ Costanti ] Negativo CON 1 ' Segno -.bit15 di variabili Word Positivo CON 0 ' -----[ Definizioni I/O ] DinDout PIN 6 ' P6 trasmette/riceve a/da Din/Dout Clk PIN 5 ' P5 invia impulsi al Clk del HM55B En PIN 4 ' P4 controlla l EN(ABLE) del HM55B Reset CON %0000 ' Riavvia comando per HM55B Misura CON %1000 ' Avvia comando misura Rapporto CON %1100 ' Ottiene stato/valori assi Pronto CON %1100 ' 11 -> Fatto, 00 -> senza errori MaskNeg CON % ' Per negativo 11-bit a 16-bits ' -----[ Variabili ] Inclx VAR Word ' misura di Memsic su asse x Incly VAR Word ' misura di Memsic su asse y lato VAR Word ' variabile della subroutine trig angoloincl VAR Word ' angolo risultante gradi segno VAR Bit ' bit del segno xbussola VAR Word ' dato asse x ybussola VAR Word ' dato asse y stato VAR Nib ' Flag di stato angolobussola VAR Word ' Memorizza misura angolo ' -----[ Inizializzazione ]

187 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 175 DEBUG CLS ' Cancella Terminale Debug ' -----[ Routine principale ] DO PULSIN 6, 1, Inclx ' misura asse x PULSIN 7, 1, Incly ' misura asse y ' Riduce in scala e offset dei valori su assi x ed y tra -127 e 127. Inclx = (Inclx MIN 1875 MAX 3125) ** Incly = (Incly MIN 1875 MAX 3125) ** ' Calcola e visualizza l Arcoseno della misura su asse x. lato = Inclx GOSUB Arcoseno DEBUG HOME, "angolo incl. x = ", CLREOL, SDEC3 InclAngolo, CR ' Calcola e visualizza l Arcoseno della misura su asse y. lato = Incly GOSUB Arcoseno DEBUG "angolo Incl. y = ", CLREOL, SDEC3 InclAngolo GOSUB Ottieni_Assi_Bussola angolobussola = xbussola ATN -ybussola angolobussola = angolobussola */ 361 ' Ottiene valori di x ed y ' Converte x ed y in brad ' Converte brad in gradi DEBUG CR, "angolo Bussola = ", DEC angolobussola, " gradi", CLREOL PAUSE 150 LOOP ' Ritardo Debug per PC più lenti ' Ripete DO...LOOP ' -----[ Subroutine - Arcoseno ] ' Questa subroutine calcola l arcoseno basato sulla coordinata y in un cerchio ' di raggio 127. Impostare la variabile lato uguale alla vostra coordinata y ' prima di richiamare questa subroutine. Arcoseno: ' subroutine Inversa di seno GOSUB Arccosine ' Ottiene inversa di coseno angoloincl = 90 - angoloincl ' sin(angle) = cos(90 - angle) RETURN ' -----[ Subroutine - Arcocoseno ] ' Questa subroutine calcola l arcocoseno basato sulla coordinata x in un ' cerchio di raggio 127. Impostare la variabile lato uguale alla vostra ' coordinata y prima di richiamare questa subroutine.

188 Pagina 176 Sensori intelligenti e loro applicazioni Arcocoseno: ' subroutine Inversa di coseno segno = lato.bit15 ' Memorizza segno del lato lato = ABS(lato) ' Calcola positivo di lato angoloincl = 63 - (lato / 2) ' approssimazione Iniziale angolo DO ' loop approssimazioni successive IF (COS angoloincl <= lato) THEN EXIT ' Fatto quando COS angolo <= lato angoloincl = angoloincl + 1 ' Incrementa angolo LOOP angoloincl = angoloincl */ 361 ' Converte brad in gradi IF segno = Negativo THEN ' Corregge se segno è negativo. angoloincl = angoloincl ENDIF RETURN ' -----[ Subroutine - Ottieni_Assi_Bussola ] Ottieni_Assi_Bussola: HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Reset\4] HIGH En: LOW En SHIFTOUT DinDout,clk,MSBFIRST,[Misura\4] stato = 0 ' Subroutine modulo bussola ' Invia comando reset a HM55B ' commando avvia misura su HM55B ' Cancella flag stato precedente DO ' Loop controllo flag stato HIGH En: LOW En ' Camando stato misura SHIFTOUT DinDout,clk,MSBFIRST,[Riporta\4] SHIFTIN DinDout,clk,MSBPOST,[stato\4] ' Ottiene stato LOOP UNTIL stato = Pronto ' Esce dal loop quando stato è pronto ' Ottiene valori su assi x & y SHIFTIN DinDout,clk,MSBPOST,[xBussola\11,yBussola\11] HIGH En ' Disabilita modulo ' Memorizza 11-bits come parole con segno per entrambi gli assi IF (ybussola.bit10 = 1) THEN ybussola = ybussola MaskNeg IF (xbussola.bit10 = 1) THEN xbussola = xbussola MaskNeg RETURN

189 Capitolo 4: Modulo Bussola Hitachi HM55B Pagina 177

190

191 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 179 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Il Capitolo 3 vi ha presentato l accelerometro a due assi Memsic. Apparecchiature simili si possono trovare in molti HID (Human Interface Devices, Dispositivi a interfaccia umana), una categoria che comprende mouse per computer, tastiere e, più in generale, qualsiasi cosa che renda possibile ad un essere umano interagire con microprocessori. Con lo spazio limitato che si ha nei PDA (Personal Digital Assistants, comunemente detti Palmari) come quello della Figura 5-1, il controllo dell inclinazione elimina il bisogno di pulsanti extra. In questo esempio, inclinare consente all utente di muoversi attorno ad una mappa senza premere alcun pulsante. Il controllo dell inclinazione è anche una caratteristica molto popolare in alcuni controllori di giochi. Figura 5-1: PDA (Palmare) ad inclinazione controllata Foto dell interfaccia del PDA RotoView a inclinazione controlata in azione per concessione di Innoventions, Questo capitolo ha quattro attività che mostrano le varie sfaccettature di utilizzo dell inclinazione per controllare un display. Ecco i sommari di ciascuna attività: Attività #1: Display di caratteri grafici PBASIC introduce alcuni controlli del cursore nel terminale di Debug e le basi per il disegno di coordinate. Attività #2: Memorizzazione e rinfresco di una EEPROM Ogni volta che il carattere del vostro gioco si muove, qualsiasi cosa stia coprendo sullo schermo andrà riscritta. Questa attività mostra come possiate muovere il vostro carattere e rinfrescare il fondo con l aiuto della EEPROM del BASIC Stamp.

192 Pagina 180 Sensori intelligenti e loro applicazioni Attività #3: Inclinare il diagramma a bolle Con un asterisco che si muove su un grafico, questa prima applicazione illustra come si muove la tasca di aria bollente dentro il MX2125 quando lo inclinate. Nello stesso tempo, essa pone i fondamenti dell accelerometro per continuare a lavorare con le tecniche dalla Attività #2. Attività #4: Controllo del Gioco Siete ora pronti per usare l inclinazione per iniziare a controllare il carattere del vostro gioco. I caratteri di sfondo possono essere utilizzati per prendere decisioni riguardo al fatto che il carattere del gioco sia dentro o fuori dai limiti. Divertitevi a personalizzare ed espandere questo video gioco controllato dall inclinazione. ATTIVITÀ #1: VISUALIZZAZIONE DI CARATTERI GRAFICI COL PBASIC Questa attività introduce alcune tecniche di programmazione che utilizzerete per visualizzare graficamente le coordinate con il terminale di Debug. Alcuni elementi delle tecniche introdotte in questa attività e nella successiva vi saranno familiari dai capitoli precedenti sull Accelerometro e sul LCD. Il CRSRXY ed altri caratteri di controllo Il carattere di controllo CRSRXY del commando DEBUG può essere utilizzato per porre il cursore in una posizione determinata sulla finestrella di ricezione del terminale di Debug. Ad esempio, DEBUG CRSRXY, 7, 3, "*" pone il carattere asterisco sette spazi a destra e tre caratteri in basso. Invece di usare costanti come 7 e 3, potete utilizzare variabili per rendere il posizionamento del cursore regolabile. Diciamo che avete due variabili di nome x ed y. I valori che queste variabili memorizzano possono controllare il posizionamento dell asterisco nel comando DEBUG CRSRXY, x, y, "*". Il programma che segue fa anche uso del carattere di controllo CLRDN. Il comando DEBUG CLRDN cancella tutte le righe sotto la posizione corrente del cursore. Più caratteri di controllo Potete trovare maggiori notizie sui caratteri di controllo cercando il comando DEBUG, sia nella Guida Sintattica PBASIC, sia nel Manuale BASIC Stamp. Potete ottenere la Guida Sintattica PBASIC tramite il vostro Editor BASIC Stamp (v2.0 o più recenti). Basta cliccare Help (Aiuto) e scegliere Index (Indice). Il Manuale BASIC Stamp è disponibile per lo scarico dal sito

193 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 181 Programma esempio TracciaCrsrxy.bs2 Con questo programma, potete digitare coppie di cifre nella finestrella di trasmissione come mostrato in Figura 5-2, per posizionare asterischi nella finestrella di ricezione. Cliccate semplicemente la finestrella di trasmissione ed iniziate a digitare. Il primo numero che digitate è il numero degli spazi a destra per posizionare il cursore, e il secondo numero è il numero di ritorni carrello verso il basso. Prima di digitare una nuova coppia di cifre (numeri), premete una volta la barra spaziatrice. Figura 5-2: Finestrelle di Trasmissione e Ricezione del terminale di Debug finestrella di trasmissione finestrella di ricezione Digita coordinata X: 9 Digita coordinata Y: 1 Premi un tasto Digitate, memorizzate, ed eseguite TracciaCrsrxy.bs2. Ridimensionate il Terminale di Debug in modo che ci sia ampio spazio per visualizzare sia l area del diagramma che le domande. Cliccate nella finestrella di Trasmissione del terminale di Debug, e seguite le domande per digitare le cifre che posizionano gli asterischi sul grafico. Provate la sequenza 11, 22, 33, 43, 53, 63, 73, 84, 95. Gli asterischi nel vostro Terminale di Debug corrispondono al tracciato nella Figura 5-2? Provate a predire le sequenze per varie forme, come un quadrato, un triangolo, e un cerchio. Inserite le sequenze per provare le vostre predizioni. Correggete le sequenze per quello che serve.

194 Pagina 182 Sensori intelligenti e loro applicazioni ' Sensori intelligenti e loro applicazioni - TracciaCrsrxy.bs2 ' Digita coppie di cifre entro il Terminale di Debug per posizionare ' asterischi. '{$STAMP BS2} '{$PBASIC 2.5} x VAR Word y VAR Word temp VAR Byte DEBUG CLS, " X", CR, "1 ", CR, "2 ", CR, "3 ", CR, "4 ", CR, "5 ", CR, "Y ", CR, CR DO DEBUG "Digita coordinata X: " DEBUGIN DEC1 x DEBUG CR, "Digita coordinata Y: " DEBUGIN DEC1 y DEBUG CRSRXY, x, y, "*" DEBUG CRSRXY, 0, 10, "Premi un tasto..." DEBUGIN temp DEBUG CRSRXY, 0, 8, CLRDN LOOP Il vostro turno Mantenere i caratteri nell area del grafico Se digitate la cifra 8 in risposta alla domanda "Digita coordinata Y: ", il vostro testo sarà sovrascritto. Problemi analoghi si verificano se digitate 0 per ciascuna delle coordinate X o Y. L asterisco è tracciato sopra il testo che mostra quale riga e colonna CRSRXY sta diagrammando. Un modo per correggere questo è tramite gli operatori MAX e MIN. Aggiungete semplicemente la frase y = y MAX 5 MIN 1. L operatore DEC1 del comando DEBUGIN risolve questo problema per il massimo della coordinata X, dato che essa è limitata ad un valore tra 0 e 9. Quindi, tutto ciò che vi occorrerà per agganciare il valore di X è x = x MIN 1.

195 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 183 Provate a digitare valori fuori-dei-limiti per la coordinata Y (0 e da 6 a 9) e 0 per la coordinata X. Osservate gli effetti sullo sfondo del display. Modificate TracciaCrsrxy.bs2 come mostrato qui e provatelo di nuovo DEBUG CR, "Digita coordinata Y: " DEBUGIN DEC1 y Y = y MAX 5 MIN 1 X = x MIN 1 ' <--- Aggiungete ' <--- Aggiungete Scalatura e Offset DEBUG CRSRXY, x, y, "*" La scalatura (riduzione in scala) e l offset sono stati introdotti nel Capitolo 3 per gestire i valori di ingresso dall accelerometro. Nel Capitolo 3, abbiamo utilizzato l operatore ** per la scalatura (moltiplicazione) a valori frazionari (decimali). In questo esempio, utilizzeremo l operatore * poiché una delle variabili dell esempio che segue deve soltanto essere moltiplicata per il valore intero 2. Date uno sguardo alla Figura 5-3, dove è stato stampato nel terminale di Debug un diagramma con assi sia positivi che negativi. L asse orizzontale, o x, ha uno spazio tra ciascun numerale, e l asse verticale, y, non ce l ha. Per posizionare il cursore in un punto particolare tramite il comando CRSRXY, ci serve il tracciamento tra gli assi stampato nel terminale di Debug e gli assi utilizzati dal comando CRSRXY.

196 Pagina 184 Sensori intelligenti e loro applicazioni Figura 5-3: Inserimento e visualizzazione delle coordinate Digita coordinata X: 3 Digita coordinata Y: 1 Premi un tasto

197 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 185 Per esempio, dove gli assi del grafico si intersecano alle coordinate (0, 0), è in realtà la posizione 6,3 di CRSRXY. (Confrontate con la Figura 5-2 finché non vedete che è così.) Per questo programma vorremmo poter digitare -3-3 nel terminale di Debug e veder apparire l asterisco nelle coordinate (-3, -3) del grafico, che sarebbero la posizione 0,6 di CRSRXY. Come altro esempio, quando digitate 2,2, CRSRXY in realtà deve posizionare l asterisco a 10,1. Ora, è il momento di capire come fare questa traduzione di mappatura tramite la scalatura e l offset. Per i valori nell intervallo tra -3 e 3, il valore X deve essere moltiplicato per 2 ed aggiunto a 6 perché CRSRXY posizioni l asterisco il numero corretto di spazi avanti. Cioè faremo una scalatura di 2, ed un offset di 6. Ecco una istruzione PBASIC che fa la conversione dalla coordinata X al numero di spazi. x = (x * 2) + 6 Il valore di Y deve essere moltiplicato per -1, quindi sommato a 3. Cioè una scalatura di -1 ed un offset di 3. Ecco una istruzione PBASIC che fa la conversione dalla coordinata Y al numero di ritorni carrello. y = 3 - y Provate a sostituire le coordinate X ed Y nel membro destro di ciascuna di queste equazioni, fate i conti, e verificate che ciascuna equazione fornisce il numero corretto di spazi e di ritorni carrello. Programma esempio TracciaGraficoXY.bs2 Digitate ed eseguite TracciaGraficoXY.bs2. Provate a digitare la sequenza di valori: -3-3, -2-2, -1-1, 00, 11, 22, 33, e verificate che si accorda con l esempio di Terminale di Debug in Figura 5-3. Provate altre sequenze e/o forme di disegno tramite le loro coordinate. ' Sensori intelligenti e loro applicazioni - TracciaGraficoXY.bs2 ' Posiziona interattivamente cursore sul grafico nel Terminale di Debug '{$STAMP BS2} '{$PBASIC 2.5} x VAR Word y VAR Word temp VAR Byte DEBUG CLS,

198 Pagina 186 Sensori intelligenti e loro applicazioni " 3 ", CR, " 2 ", CR, " 1 ", CR, " ", CR, " ", CR, " -2 ", CR, " -3 ", CR, CR DO DEBUG "Digita coordinata X: " DEBUGIN SDEC1 x DEBUG CR, "Digita coordinata Y: " DEBUGIN SDEC1 y x = (x * 2) + 6 y = 3 - y DEBUG CRSRXY, x, y, "*" DEBUG CRSRXY, 0, 10, "Premi un tasto..." DEBUGIN temp DEBUG CRSRXY, 0, 8, CLRDN LOOP Il vostro turno Mantenere caratteri ancora nell area del grafico Gli operatori MAX e MIN sono stati introdotti prima in questo testo, per evitare che l asterisco appaia fuori dall area di visualizzazione. Potete usare anche istruzioni IF THEN per manipolare valori fuori dai limiti. Ecco un esempio di come si possa modificare TracciaGraficoXY.bs2 con istruzioni IF THEN. Invece di catturare i valori e posizionare l asterisco entro i limiti consentiti, questo programma aspetta semplicemente che sia digitato un valore corretto. Modificare TracciaGraficoXY.bs2 sostituendo l istruzione DEBUG CRSRXY, x, y, "*" con il blocco IF...THEN...ELSE...ENDIF mostrato sotto, e quindi eseguirlo. x = (x * 2) + 6 y = 3 y IF (x > 12) OR (y > 6) THEN ' <--- Aggiungere codice da DEBUG CRSRXY, 0, 8, CLRDN, ' qui... "Digita valori tra -3 e 3.", CR, ' "Prova di nuovo " ' '

199 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 187 ELSE DEBUG CRSRXY, x, y, "*" ENDIF ' ' ' ' <--- fino a qui DEBUG CRSRXY, 0, 10, "Premi un tasto..." DEBUGIN temp Verificate che questo programma non consente di digitare caratteri fuori dall intervallo da -3 a 3. Che succede con i numeri negativi? Le condizioni delle istruzioni IF...THEN nella versione modificata del vostro programma TracciaGraficoXY.bs2 sono (x > 12) OR (y > 6). Questo copre i numeri positivi più grandi di 12 o di 6, ma copre anche tutti i numeri negativi. Ciò avviene perché il BASIC Stamp usa un sistema chiamato complemento a due per memorizzare i numeri negativi. Nel complemento a due, la versione senza segno di qualsiasi valore negativo è superiore a qualsiasi valore positivo. Ad esempio, -1 è 65535, -2 è 65534, e così via, giù fino a , che è in realtà I valori positivi con segno variano soltanto tra 1 e Algebra per determinare scalatura ed offset Il grafico XY visualizzato nel terminale di Debug in questa attività è chiamato sistema di coordinate Cartesiane. Questo sistema prende il nome dal matematico del 17 mo secolo René Descartes, ed è la base per le tecniche grafiche utilizzate in molte ricerche di matematica. Mostrato nella Figura 5-4a, il sistema di coordinate cartesiane è molto frequentemente visualizzato con (0, 0) al centro del grafico. I suoi valori crescono andando verso l alto (asse y) e verso destra (asse x). Molte visualizzazioni si comportano in modo diverso, con la coordinata 0, 0 che inizia in alto a sinistra come in Figura 5-4b. Mentre l asse x cresce verso destra, l asse y cresce verso il basso.

200 Pagina 188 Sensori intelligenti e loro applicazioni Figura 5-4: Coordinate cartesiane confrontate con le coordinate visualizzate a. Coordinate cartesiane b. Coordinate visualizzate Potete usare una tecnica standard dell algebra, risolvendo un sistema di due equazioni in due incognite, per trovare le istruzioni che vi servono per trasformare le coordinate cartesiane in coordinate di visualizzazione per il terminale di Debug. L esempio che segue mostra come sia stato fatto questo per le istruzioni che convertono x ed y da coordinate cartesiane a coordinate visualizzate in TracciaGraficiXY.bs2. Aggiungendo due comandi DEBUG al programma TracciaGraficiXY.bs2, potete visualizzare le versioni prima e dopo del valore X che avete digitato. DEBUG "Digita coordinata X: " DEBUGIN SDEC1 x DEBUG CR, "Digita coordinata Y: " DEBUGIN SDEC1 y DEBUG CRSRXY, 0, 12, "x prima: ", SDEC x ' <--- Aggiungere x = (x * 2) + 6 y = 3 - y DEBUG CRSRXY, 0, 14, "x dopo: ", SDEC x ' <--- Aggiungere DEBUG CRSRXY, x, y, "*" Memorizzate TracciaGraficiXY.bs2 sotto altro nome, ad esempio TracciaGraficiXYPrimaDopo.bs2. Aggiungete i due comandi DEBUG che visualizzano i valori di x "prima" e "dopo". Aggiungete due ulteriori comandi DEBUG per visualizzare i valori di y prima e dopo.

201 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 189 Digitate le coordinate (3,1) e (-2,- 2) nella finestrella di trasmissione del terminale di Debug. Si veda la Figura 5-5. Registrate i valori Dopo nella Tabella 5-1. Tabella 5-1: Valori di X Prima e Dopo Coordinate Prima Dopo (3, 1) 3 (-2, -2) -2 Figura 5-5 Prova Coordinate Digita coordinata X: 3 Digita coordinata Y: 1 Premi un tasto Quando si progetta una visualizzazione per mostrare coordinate cartesiane, è utile prendere una coppia di valori prima e dopo come quelli della Tabella 5-1. Potete quindi usarli per risolvere la scalatura (K) e l offset (C) usando due equazioni con due incognite.

202 X KXprima Pagina 190 Sensori intelligenti e loro applicazioni dopo = + ( )C I passi consueti per le due equazioni in due incognite sono: (1) Sostituite i vostri due punti dato prima e dopo in due copie separate dell equazione. ( K 3) C 12 = + ( K 2) C 2 = + (2) Se necessario, moltiplicate una delle due equazioni per un termine che renda uguale il numero di una delle incognite nell equazione superiore ed in quella inferiore. Non necessario, poiché il coefficiente di C in entrambe le equazioni è 1. (3) Sottrarre un equazione dall altra per rendere zero una delle incognite. 12 = (K 3) + C [ 2 = (K -2) + C] 10 = K 5 (4) Risolvere nell incognita che non si annulla nella sottrazione. 10 = K 5 10 K= 5 K = 2 (5) Sostituire il valore ricavato al punto 4 in una delle due equazioni originali. ( 2 3) C 12 = + (6) Risolvere nella seconda incognita.

203 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina = C = 6 ( 2 3) 12 = 6+ C C = C (7) Incorporare i valori ricavati per le incognite nella vostra equazione. X X dopo ( K X ) K = 2 e C = 6 dopo = = prima + C ( 2 X ) + 6 prima Il vostro turno Calcoli sull asse Y Modificate il vostro programma perché visualizzi i valori sull asse Y prima e dopo. Riempite la Tabella 5-2 con i valori per l asse Y: Tabella 5-2: Valori Y Prima e Dopo Coordinate Prima Dopo (3, 1) 1 (-2, -2) -2

204 Pagina 192 Sensori intelligenti e loro applicazioni Figura 5-6 Coordinate di prova Digita coordinata X: 3 Digita coordinata Y: 1 Premi un tasto Ripetete i passi da 1 a 7 per l equazione sull asse Y. La risposta corretta è: y ( 1 y ) 3 dopo = prima + ATTIVITÀ #2: MEMORIZZAZIONE E RINFRESCO (REFRESH) NELLA EEPROM In un video gioco, quando il carattere del vostro gioco non è sullo schermo, tutto ciò che è visibile è lo sfondo. Non appena il vostro carattere di gioco entra sullo schermo, esso blocca parte dello sfondo. Quando il carattere si muove, debbono accadere due cose: (1) il carattere di gioco dev essere ridisegnato nella nuova posizione, e (2) lo sfondo che il carattere di gioco stava bloccando dev essere ridisegnato. Se il punto 2 non è mai capitato nel vostro programma, il vostro schermo si riempirebbe con copie del vostro carattere di gioco.

205 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 193 I monitor per la televisione e i CRT per computer rinfrescano (refresh) ciascun pixel molte volte per ogni secondo. La velocità di refresh sui televisori è intorno a 30 Hz, e alcune delle velocità di refresh più comuni nei CRT sono 60, 70, e 72 Hz. Altri dispositivi come certi LCD e display a LED mantengono l immagine automaticamente, o a volte con l aiuto di un altro microcontrollore. Tutto ciò che debbono fare i programmi o i microcontrollori che controllano questi dispositivi è dire loro cosa debbono viualizzare o modificare. Questo è anche il modo in cui la compressione video opera sul vostro computer. Per ridurre la dimensione dei file, alcuni file video compressi memorizzano i cambiamenti dell immagine invece di tutti i pixels in un dato schema di immagine. Quando viene usata con display che non debbono essere rinfrescati (come il terminale di Debug o un LCD), la EEPROM del BASIC Stamp può memorizzare un immagine di un gioco o uno sfondo grafico nella sua EEPROM. Quando un carattere di gioco si muove ed è ridisegnato in posizione differente, il BASIC Stamp può leggere solo la sua EEPROM e ridisegnare i caratteri di sfondo nella posizione del carattere di gioco precedente. Per far questo, memorizzate semplicemente le vecchie coordinate del carattere di gioco prima che venga mosso e quindi usate quelle coordinate per reperire il carattere di sfondo dalla EEPROM. In funzione delle dimensioni del display, questo metodo può risparmiare una considerevole quantità di tempo, di cui il BASIC Stamp potrebbe necessitare per eseguire altri compiti. Questa attività introduce tre elementi per caratteri di gioco e sfondi: 1. Memorizzazione e visualizzazione dello sfondo dalla EEPROM 2. Osservazione delle vecchie e nuove coordinate di un carattere 3. Ridisegno delle vecchie coordinate dalla EEPROM Visualizzazione dello sfondo dalla EEPROM Questa visualizzazione non dev essere fatta con un singolo comando DEBUG, specialmente se serve che sia mantenuta come sfondo mentre i caratteri viaggiano su di essa in primo piano. Invece, è meglio memorizzare i caratteri nella EEPROM e poi visualizzarli singolarmente con un ciclo FOR NEXT che usa i comandi READ e DEBUG per visualizzare caratteri singoli. La Figura 5-7 è una visualizzazione generata con questa tecnica.

206 Pagina 194 Sensori intelligenti e loro applicazioni Figura 5-7 Sfondo da una direttiva DATA Potete usare la direttiva DATA per memorizzare uno sfondo nella EEPROM. Notate come questa direttiva DATA memorizza 100 caratteri (da 0 a 99). Notate anche che ciascuna riga è larga 14 caratteri quando aggiungete il carattere di controllo CR. La programmazione diventa più facile se ciascuna riga ha la stessa larghezza. Altrimenti, trovare il carattere che volete diventa un problema più complesso. DATA CLS, ' 0 " 3 ", CR, ' 14 " 2 ", CR, ' 28 " 1 ", CR, ' 42 " ", CR, ' 56 " ", CR, ' 70 " -2 ", CR, ' 84 " -3 ", CR, CR ' = 99 Per visualizzare l intero sfondo una sola volta all inizio del programma, potete quindi usare un ciclo FOR NEXT. Questo ciclo reperisce e visualizza ciascun carattere memorizzato nella EEPROM. Tenete a mente che, mentre l effetto che ottenete è lo stesso di quello di un lungo comando DEBUG, la EEPROM è più flessibile perché potete anche andare a prendere e visualizzare singoli caratteri quando vi occorre rinfrescare lo sfondo.

207 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 195 FOR indice = 0 TO 99 READ indice, carattere DEBUG carattere NEXT Programma esempio DisplaySfondoEeprom.bs2 Digitate, memorizzate ed eseguite il programma. Verificate che la visualizzazione è la stessa di TracciaGraficiXy.bs2. ' Sensori intelligenti e loro applicazioni - DisplaySfondoEeprom.bs2 ' '{$STAMP BS2} '{$PBASIC 2.5} ' Direttive Stamp & PBASIC indice VAR Byte ' Variabili carattere VAR Byte DATA CLS, ' 0 ' Memorizza sfondo in EEPROM " 3 ", CR, ' 14 " 2 ", CR, ' 28 " 1 ", CR, ' 42 " ", CR, ' 56 " ", CR, ' 70 " -2 ", CR, ' 84 " -3 ", CR, CR ' = 99 FOR indice = 0 TO 99 READ indice, carattere DEBUG carattere NEXT ' Trova e visualizza sfondo END Il vostro turno Vedere i caratteri nella EEPROM Nell Editor BASIC Stamp, cliccare Run e selezionare Memory Map. Cliccare la box Display ASCII nell angolo in basso a sinistra della finestra Memory Map. Le cifre, i trattini, e le barre verticali dovrebbero apparire nella Mappa EEPROM esattamente come mostrato in Figura 5-8. Invece di 14 caratteri per riga, la Mappa EEPROM ne mostra 16. Verificate che avete un totale di 100 (da 0 a 99) caratteri memorizzati in EEPROM per scopo di visualizzazioni.

208 Pagina 196 Sensori intelligenti e loro applicazioni Figura 5-8: Caratteri per Display memorizati in EEPROM Osservazione delle vecchie e nuove coordinate di un carattere Diciamo che volete osservare le precedenti coordinate X ed Y nel programma originale non modificato TracciaGraficoXY.bs2 dalla Attività #1. Ci vogliono due passaggi: (1) Dichiarare una coppia di variabili per memorizzare i vecchi valori, per esempio xvec ed yvec. x VAR Word y VAR Word xvec VAR Nib ' <--- Aggiungi yvec VAR Nib ' <--- Aggiungi temp VAR Byte (2) Prima di caricare nuovi valori nelle variabili x ed y, memorizzate il valore attuale di x in xvec e il valore attuale di y in yvec. DO xvec = x yvec = y ' <--- Aggiungi ' <--- Aggiungi

209 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 197 DEBUG "Digita coordinata X: " Perché x ed y sono word mentre xvec ed yvec sono nibble? Quando si lavora con valori con segno, le variabili word memorizzano sia valore che segno. Nel posto particolare in cui xvec ed yvec sono usate nel programma, esse stanno soltanto memorizzando valori che variano tra 0 e 12, quindi ci servono soltanto variabili nibble. Ecco un terzo passaggio che potete usare per provare e verificare che funziona: (3) Aggiungete comandi DEBUG per visualizzare i valori attuali e precedenti di x, y. DEBUG CRSRXY, x, y, "*" DEBUG CRSRXY, 0, 10, ' <--- Aggiungere "Entrata attuale: (", DEC x, ",", DEC y, ")" DEBUG CRSRXY, 0, 11, ' <--- Aggiungere "Entrata preced.: (", DEC xvec, ",", DEC yvec, ")" ' <--- Modificare DEBUG CRSRXY, 0, 12, "Premi un tasto..." ' <--- Modificare DEBUGIN temp Iniziate con la versione originale, non modificata di TracciaGraficoXY.bs2, memorizzatelo con il nome RichiamaTracciaGrafXY.bs2, e provate le modifiche appena discusse qui sopra nei passaggi da (1) a (3). Tenete a mente che entrambi i valori visualizzati saranno in termini di coordinate del terminale di Debug. Tenete anche in mente che la prima volta che lo eseguite, le vecchie coordinate saranno (0, 0) poiché tutte le variabili sono inizializzate a zero in PBASIC. Ridisegnare lo Sfondo Fino a questo punto, tutti i nostri diagrammi hanno accumulato asterischi appena abbiano digitato più valori nella finestrella di trasmissione. L effetto netto che vogliamo ottenere per il controllo di gioco è far scomparire l asterisco dalla sua posizione precedente e farlo apparire nella nuova posizione non appena la ridefiniamo, per dare la sensazione di un asterisco che si muove. Date uno sguardo alla Figura 5-9. Notate che sei coppie ordinate sono state inserite nel Terminale di Debug, ma c è soltanto un asterisco, che corrisponde all ultima coppia inserita. Questo fatto capita perché il programma usato qui fa scomparire il vecchio asterisco prendendo le vecchie coordinate x, y per trarre il carattere di sfondo dalla

210 Pagina 198 Sensori intelligenti e loro applicazioni EEPROM, e poi visualizzandolo con DEBUG. Per far apparire l asterisco nella sua nuova posizione, il programma usa semplicemente un comando DEBUG con le coordinate x, y attuali, come hanno fatto i nostri programmi esempio precedenti. Figura 5-9 Display con la EEPROM. Refresh dello sfondo Digita coordinata X: 2 Digita coordinata Y: 1 Premi un tasto Il programma usato per creare la Figura 5-9 combina la tecnica di sfondo definita con le DATA dal DisplaySfondoEEPROM.bs2, con il tracciamento dell asterisco e la tecnica di osservazione della posizione dal RichiamaTracciaGrafXY.bs2. Questa combinazione ci consente di ridisegnare il carattere di sfondo sopra il vecchio asterisco con questo codice: IF (x <> xvec) AND (y <> yvec) THEN ' Controlla se asterisco è mosso index = (14 * yvec) + xvec + 1 ' Indirizzo carattere sfondo READ indice, carattere ' Ottiene carattere sfondo DEBUG CRSRXY, xvec, yvec, carattere ' Visualizza carattere sfondo ENDIF La variabile indice sceglie il carattere corretto dalla EEPROM. Il valore x è il numero di spazi sopra e il valore y è il numero di ritorni carrello sotto. Per ottenere l indirizzo corretto di un carattere nella terza riga, il vostro programma dave aggiungere tutti i

211 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 199 caratteri nelle prime due righe. Dato che ciascuna riga ha 14 caratteri, yvec dev essere moltiplicato per 14 prima di poterlo aggiungere a xvec. Il valore extra 1 è aggiunto per scavalcare il comando CLS all indirizzo 0. Indipendentemente dal fatto che si tratta di display del computer, o del display a cristalli liquidi del vostro telefono cellulare, o del display della vostra applicazione BASIC Stamp, si applica sempre la stessa tecnica. Il processore memorizza due immagini diverse, l una sullo sfondo e l altra in primo piano. Appena l oggetto in primo piano si muove è visualizzato in una posizione diversa e l area che l oggetto in primo piano ha svuotato è ridisegnata. La cosa più importante da tenere a mente su questa tecnica di programmazione è che risparmia molto tempo al processore. Essa deve solo ottenere un carattere dalla EEPROM ed inviarlo al terminale di Debug. Confrontato con i 99 caratteri, c è un risparmio di tempo significativo, e il BASIC Stamp può fare altre cose in quel tempo, come ad esempio controllare altri sensorsi, controllare i servo, ecc. Programma Esempio RinfrescaSfondoEEPROM.bs2 Questo programma combina TracciaGraficoXY.bs2 con DisplaySfondoEeprom.bs2, usando il display di sfondo, la memorizzazione delle coordinate, e la tecnica per ridisegnare lo sfondo appena discussa. Digitate, salvate ed eseguite RinfrescaSfondoEEPROM.bs2. Provatelo e verificate che l asterisco scompare dalla sua posizione vecchia ed appare nella nuova posizione che avete inserito. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni RinfrescaSfondoEeprom.bs2 '{$STAMP BS2} '{$PBASIC 2.5} ' direttive Stamp/PBASIC ' -----[ Variabili ] x VAR Word ' Memorizza posizione attuale y VAR Word xvec VAR Nib ' Memorizza posizione precedente yvec VAR Nib temp VAR Byte ' Variabile finta per DEBUGIN indice VAR Byte ' Memorizza READ indice/carattere

212 Pagina 200 Sensori intelligenti e loro applicazioni carattere VAR Byte ' -----[ EEPROM Data ] DATA CLS, " 3 ", CR, ' 14 " 2 ", CR, ' 28 " 1 ", CR, ' 42 " ", CR, ' 56 " ", CR, ' 70 " -2 ", CR, ' 84 " -3 ", CR, CR ' = 99 ' Dati per sfondo ' -----[ Inizializzazione ] FOR indice = 0 TO 99 READ indice, carattere DEBUG carattere NEXT ' Visualizza sfondo ' -----[ Routine principale] DO xvec = x yvec = y DEBUG "Digita coordinata X: " DEBUGIN SDEC1 x DEBUG CR, "Digita coordinata Y: " DEBUGIN SDEC1 y x = (x * 2) + 6 y = 3 - y DEBUG CRSRXY, x, y, "*" IF (x <> xvec) AND (y <> yvec) THEN indice = (14 * yvec) + xvec + 1 READ indice, carattere DEBUG CRSRXY, xvec, yvec, carattere ENDIF ' Memorizza coordinate precedenti ' Ottiene nuove coordinate ' Da Cartesiane a valori x DEBUG ' Visualizza asterisco ' Controlla se asterisco mosso ' Indirizzo carattere sfondo ' Ottiene carattere sfondo ' Visualizza carattere sfondo DEBUG CRSRXY, 0, 10, "Premi un Tasto..." ' Attende input utente DEBUGIN temp DEBUG CRSRXY, 0, 8, CLRDN ' Cancella vecchie info LOOP

213 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 201 Il vostro turno - Ridisegnare lo sfondo senza variabili extra Non sempre è necessario tenere traccia della vecchia posizione del carattere di primo piano. Pensatelo in questo modo: nel RinfrescaSfondoEeprom.bs2 le variabili x ed y memorizzano i vecchi valori finché non inserite valori nuovi. Risistemando semplicemente l ordine in cui sono visualizzate le variabili x ed y, potete eliminare il bisogno di xvec ed yvec. Poi c è una Routine principale in sostituzione che potete provare nel RinfrescaSfondoEeprom.bs2. Non appena premete la barra spazio, il vostro vecchio asterisco scompare. Il nuovo asterisco riappare quando digitate la seconda delle due coordinate. Come vedrete nella prossima attività, questa tecnica funziona davvero bene con controllo di inclinazione quando la velocità di rinfresco è parecchie volte al secondo. Memorizzate RinfrescaSfondoEEPROM.bs2 come RinfrescaSfondoEEPROMTuoTurno.bs2. Commentate le dichiarazioni di variabili xvec ed yvec. Sostituite la Routine Principale in RinfrescaSfondoEeprom.bs2 con questa. Provatela ed esaminate il cambiamento nel comportamento del programma. ' -----[ Routine Principale] DO indice = (14 * y) + x + 1 READ indice, carattere DEBUG CRSRXY, x, y, carattere DEBUG CRSRXY, 0, 8, "Diigita coordinata X: " DEBUGIN SDEC1 x DEBUG CR, "Digita coordinata Y: " DEBUGIN SDEC1 y x = (x * 2) + 6 y = 3 - y DEBUG CRSRXY, x, y, "*" ' Rivisualizza sfondo ' Ottieni nuove coordinate ' da Cartesiane a valori di DEBUG ' Visualizza asterisco DEBUG CRSRXY, 0, 10, "Premi un Tasto..." ' Aspetta input utente DEBUGIN temp DEBUG CRSRXY, 0, 8, CLRDN ' Cancella vecchia info LOOP

214 Pagina 202 Sensori intelligenti e loro applicazioni Animazione e ridisegno dello sfondo Ecco un esempio di qualcosa che potete fare se utilizzate singoli caratteri, ma che non funziona se tentate di ridisegnare l intero display con un comando DEBUG. Memorizzate RinfrescaSfondoEEPROM.bs2 col nome EsempioAnimazione.bs2. Sostituite la Routine principale nel programma con quella mostrata qui. Eseguite il programma ed osservatene gli effetti. DO FOR y = 0 TO 6 FOR temp = 1 TO 2 FOR x = 0 TO 12 IF (temp.bit0 = 1) THEN DEBUG CRSRXY, x, y, "*" ELSE index = (14 * yvec) + xvec + 1 READ indice, carattere DEBUG CRSRXY, xvec, yvec, carattere xvec = x yvec = y ENDIF PAUSE 50 NEXT NEXT NEXT LOOP ATTIVITÀ #3: INCLINARE IL GRAFICO A BOLLA Questa attività combina i concetti grafici introdotti nelle Attività #1 e #2 con le tecniche per la misura dell inclinazione con l accelerometro introdotte nel Capitolo 3. Il risultato è una bolla di asterischi che illustra il movimento della tasca di gas surriscaldato interna alla camera del MX2125. La Figura 5-11 della pagina successiva mostra che cosa visualizza il terminale di Debug in questa attività, quando l accelerometro è inclinato in alto e a sinistra. Parti richieste (2) Cavallotti di filo da 3 pollici (2) Resistenze 220 Ω (1) Accelerometro Memsic MX2125 a due assi

215 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 203 Collegare il modulo accelerometro usando la Figura 5-10 come guida. Figura 5-10: Schema elettrico e diagramma di cablaggio dell Accelerometro Figura 5-11: Posizione del gas bollente nell Accelerometro L asterisco indica la L asterisco posizione indica del gas bollente la posizione del gas

216 Pagina 204 Sensori intelligenti e loro applicazioni La Figura 5-12 mostra una legenda per i diversi modi in cui potete inclinare la scheda sui suoi assi e l effetto di ciascuna inclinazione sulla posizione della tasca di gas bollente. Inclinazione Centro gas bollente Livellato (0, 0) Inclina a destra ( - 3, 0) Inclina a sinistra (3, 0) Figura 5-12: Inclinazione dell Accelerometro e posizione del cursore Inclina in basso (0, - 3) Inclina in alto (0, 3)

217 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 205 Controllo inclinazione del Display con asterisco GraficoBolla.bs2 aggiorna la posizione della macchia bollente entro la camera dell accelerometro circa 8 volte al secondo (8 Hz). Dopo aver visualizzato lo sfondo (assi X ed Y) sul Terminale di Debug, ripete gli stessi passaggi indefinitamente. Sostituisce l asterisco con il carattere di sfondo e fa pausa per l effetto lampeggio. Ottiene l inclinazione sull asse X dall accelerometro. Ottiene l inclinazione sull asse Y dall accelerometro. Regola il valore in modo che si adatti all asse X del grafico. Regola il valore in modo che si adatti all asse Y del grafico. Visualizza l asterisco e fa di nuovo pausa per l effetto lampeggiante. Ciascuno di questi passi è discusso con maggior dettaglio nel capitolo che segue il programma esempio. Programma esempio GraficoBolla.bs2 Digitate ed eseguite GraficoBolla.bs2. ' -----[ Titolo ] ' Sensori intelligenti e loro applicazioni - GraficoBolla.bs2 ' Visualizza la posizione della bolla nel sensore di inclinazione ' sul grafico nel Terminale di Debug '{$STAMP BS2} '{$PBASIC 2.5} ' direttive Stamp/PBASIC ' -----[ Dati in EEPROM ] ' Memorizza sfondo in EEPROM ' Indirizzo ultimo car su riga DATA CLS, ' 0 " 5^Y ", CR, ' 22 " 4 ", CR, ' 44 " 3 ", CR, ' 66 " 2 ", CR, ' 88 " 1 X", CR, ' 110 " >", CR, ' 132 " ", CR, ' 154 " -2 ", CR, ' 176

218 Pagina 206 Sensori intelligenti e loro applicazioni " -3 ", CR, ' 198 " -4 ", CR, ' 220 " -5 ", CR ' 242 ' -----[ Variabili ] x VAR Word ' Memorizza posizione attuale y VAR Word indice VAR Word ' memoria indice/carattere READ car VAR Byte ' -----[ Inizializzazione ] FOR indice = 0 TO 242 READ indice, car DEBUG car NEXT ' Legge & visualizza sfondo ' -----[ Routine principale ] DO ' Inizia routine principale ' Sostituisce asterisco con carattere di sfondo. indice = (22 * y) + x + 1 ' Coordinate -> indirizzo EEPROM READ indice, car ' Ottiene carattere sfondo DEBUG CRSRXY, x, y, car ' Visualizza carattere sfondo PAUSE 50 ' Pausa per effetto lampeggio ' Misura inclinazione. PULSIN 6, 1, x PULSIN 7, 1, y ' Ottiene Ax ed Ay ' Calcola posizione cursore. x = (x MIN 1875 MAX 3125) ** 1101 ' Calcola posizione x y = (y MIN 1875 MAX 3125) ** 576 ' Calcola posizione y y = 10 - y ' Visualizza asterisco alla nuova posizione del cursore. DEBUG CRSRXY, x, y, "*" ' Visualizza asterisco PAUSE 50 ' Pausa di nuovo per effetto lamp LOOP ' Ripete routine principale Tenete la vostra scheda come mostrato in alto nella Figura Prendete pratica del controllo dell asterisco inclinando la scheda. Oltre a tenere la vostra scheda orizzontale e ad inclinarla, provate a tenerla verticale e a ruotarla in cerchio. L asterisco deve descrivere un arco di cerchio intorno al grafico mentre voi lo fate.

219 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 207 Come lavora GraficoBolla.bs2 La prima cosa che fa la Routine principale è visualizzare il carattere di sfondo nella posizione attuale del cursore. Con una pausa di 50 ms, essa completa la porzione off di un asterisco lampeggiante. ' Sostituisce asterisco con carattere di sfondo. indice = (22 * y) + x + 1 ' Coordinate -> indirizzo EEPROM READ indice, car ' Ottiene carattere sfondo DEBUG CRSRXY, x, y, car ' Visualizza carattere sfondo PAUSE 50 ' Pausa per effetto lampeggio Quindi, il programma acquisisce l inclinazione x ed y. ' Misura inclinazione. PULSIN 6, 1, x PULSIN 7, 1, y ' Ottiene Ax ed Ay Il programma deve effettuare scalatura ed offset delle misure di inclinazione sugli assi x ed y in modo che l asterisco sia posizionato correttamente nel terminale di Debug. A questo scopo lavorano la stessa scalatura ed offset introdotti nel Capitolo 3, Attività #3. Per l asse x, i valori di impulso dell accelerometro da 1875 a 3125 debbono essere scalati ai posizionamenti dell asterisco da 0 a 20. Sottraendo 1875 dalla misura dell accelerometro prima della scalatura, avremo una scala di ingresso tra 0 e 1250 (1251 elementi) e una scala di uscita tra 0 e 20 (21 elementi). L equazione per il calcolo della costante ** di scala è: CostanteScala = Int[65536(elementi scala uscita)/(elementi scala ingresso - 1)] Sostituendo il numero di elementi nelle scale di ingresso e uscita si ottiene una costante ** di scala di CostanteScala = Int[65536(21/(1251-1))] CostanteScala = Int[65536(21/1250)] CostanteScala = Int[1101,0048] CostanteScala = 1101 Con operazioni simili si ottiene una costante ** di scala di 576 per l asse y, e il codice risultante per scalatura ed offset di entrambi gli assi è: ' Calcola posizione cursore. x = (x MIN 1875 MAX 3125) ** 1101 ' Calcola posizione x y = (y MIN 1875 MAX 3125) ** 576 ' Calcola posizione y

220 Pagina 208 Sensori intelligenti e loro applicazioni y = 10 - y Se le misure dell accelerometro sono leggermente fuori della scala tra 1875 e 3125, ciò può causare strani sintomi di visualizzazione. Gli operatori MIN e MAX prevengono questo problema. Inoltre, 1875 è sottratto da ciascun asse prima della scalatura con l operatore **. Il risultato per l asse x è che la misura tra 0 e 1250 è scalata tra 0 e 20. Per l asse y, la misura tra 0 e 1250 è scalata tra 0 e 10. Mentre le misure di inclinazione sull asse y diminuiscono, la posizione verso il basso del cursore deve aumentare. Quindi, invece di adattare la scala tra 1875 e 3125 a quella tra 0 e 10, il programma dovrà adattarla a quella tra 10 e 0. L istruzione y = 10 - y risolve questo problema. Se y è 0, dopo la scalatura diventa 10. Analogamente se y è 10, dopo la scalatura diventa 0. Se è 9, dopo la scalatura diventa 1, se è 8, dopo la scalatura diventa 2, e così via. L ultimo passaggio prima di ripetere il ciclo nella Routine principale è la visualizzazione del nuovo asterisco nelle sue nuove coordinate x ed y, quindi c è una pausa di altri 50 ms per completare la porzione on dell asterisco lampeggiante. ' Visualizza asterisco alla nuova posizione del cursore. DEBUG CRSRXY, x, y, "*" PAUSE 50 Il vostro turno Una bolla più grande Si può visualizzare e cancellare un gruppo di asterischi come quello mostrato nella Figura 5-13, ma a paragone di un singolo carattere, è un pochino più difficile. Il programma deve assicurare che nessuno degli asterischi sarà visualizzato fuori dell area del grafico. Esso deve anche assicurare che tutti gli asterischi saranno sovrascritti con i caratteri corretti presi dalla EEPROM. Ecco un esempio di come modificare GraficoBolla.bs2 in modo che visualizzi un indicatore di coordinata a 5 asterischi: Memorizzate GraficoBolla.bs2 come GraficoBollaTuoTurno.bs2. Aggiungete questa dichiarazione di variabile alla sezione Variabili del programma: temp VAR Byte Sostituite la routine Sostituisce asterisco con carattere di sfondo con: ' Sostituisce asterisco con carattere di sfondo (modificata). FOR temp = (x MIN 1 1) TO (x MAX )

221 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 209 indice = (22 * y) + temp + 1 READ indice, car DEBUG CRSRXY, temp, y, car NEXT FOR temp = (y MIN 1 1) TO (y MAX 9 + 1) indice = (22 * temp) + x + 1 READ indice, car DEBUG CRSRXY, x, temp, car NEXT PAUSE 50 Sostituite la routine Visualizza asterisco alla nuova posizione del cursore con: ' Visualizza asterisco alla nuova posizione del cursore (modificata). DEBUG CRSRXY, x, y, "*", CRSRXY, x MAX , y, "*", CRSRXY, x, y MAX 9 + 1, "*", CRSRXY, x MIN 1-1, y, "*", CRSRXY, x, y MIN 1-1, "*" PAUSE 50 Eseguite il programma e provatelo. Accertatevi che non si verifichino problemi quando uno degli asterischi più esterni è forzato fuori dell area del grafico.

222 Pagina 210 Sensori intelligenti e loro applicazioni Figura 5-13 Gruppo di Asterischi con rinfresco dello sfondo MIN e i numeri negativi Una "gotcha" (ottieni carattere) in complemento a due evita di sottrarre 1 da 0 e quindi di impostare il valore MIN più tardi. Ricordate dal Capitolo 3 che il sistema del complemento a due memorizza il valore con segno -1 come Questo è il motivo per cui il valore MIN è stato impostato ad 1 prima di sottrarre 1. Il risultato è quindi un minimo corretto di 0. La stessa tecnica è stata usata per impostare i valori di MAX anche se in questo caso non c è alcun problema reale con y + 1 MAX 10. ATTIVITÀ #4: CONTROLLO DI GIOCO Ecco le regole dell esempio di gioco a controllo di inclinazione di questa Attività, mostrato in Figura Inclinate la vostra scheda per controllare l asterisco. Se attraversate il labirinto e ponete l asterisco su uno qualsiasi dei caratteri "WIN", sarà visualizzata la schermata "YOU WIN" ( HAI VINTO! ). Se urtate in uno qualsiasi dei segni di libbra "#" prima di raggiungere la fine del labirinto, sarà visualizzata la schermata "YOU LOSE" ( HAI PERSO ). Mentre navigate nel labirinto, provate a

223 Capitolo 5: Fondamenti Base di Gioco con l Accelerometro Pagina 211 muovere il vostro carattere di gioco asterisco verso il segno di dollaro "$" per ottenere più punti. Convertire GraficoBolla.bs2 in GiocoInclinaOstacoli.bs2 GiocoInclinaOstacoli.bs2 è senza dubbio una versione più spedita del GraficoBolla.bs2. Ecco un elenco dei principali cambiamenti ed aggiunte: Cambia il grafico in un labirinto. Aggiunge ai dati EEPROM due sfondi per vinci e perdi. Dà a ciascuno sfondo un nome Symbol. Scrive un blocco di codice per un giocatore che rileva quale carattere di sfondo il carattere di gioco ha di fronte ed usa quell informazione per forzare le regole del gioco.

224 Pagina 212 Sensori intelligenti e loro applicazioni Figura 5-14: Gioco Corsa ad Ostacoli Labirinto di sfondo (a sinistra) Display Hai vinto (sotto a sinistra) Display Hai perso (sotto a destra) Punteggio : 000 HAI VINTO HAI PERSO

LOGO! Avvio alla programmazione. Versione 1.0 Guida pratica per compiere i primi passi con LOGO!

LOGO! Avvio alla programmazione. Versione 1.0 Guida pratica per compiere i primi passi con LOGO! LOGO! Avvio alla programmazione Versione 1.0 Guida pratica per compiere i primi passi con LOGO! [Digitare il testo] [Digitare il testo] [Digitare il testo] CONTENUTI 1 INTRODUZIONE... 3 2 PRIMI PASSI PER

Dettagli

Per cominciare con Stamps in Class

Per cominciare con Stamps in Class Per cominciare con Stamps in Class Se state avviando il vostro BASIC Stamp 2 e la scheda Board of Education o quella BASIC Stamp HomeWork Board per preparare un attività in uno qualsiasi dei nostri tutorial

Dettagli

Che cosa è un Microcontrollore? Guida per Studenti

Che cosa è un Microcontrollore? Guida per Studenti Che cosa è un Microcontrollore? Guida per Studenti VERSIONE 2.1 Garanzia La Parallax garantisce i suoi prodotti contro difetti dei materiali e di manifattura per un periodo di 90 giorni dal ricevimento

Dettagli

BY10870 AVVISATORE DISTACCO/RIPRISTINO DA DISTRIBUTORE. Sistema di sorveglianza e avviso GSM via SMS per sistema BY10850

BY10870 AVVISATORE DISTACCO/RIPRISTINO DA DISTRIBUTORE. Sistema di sorveglianza e avviso GSM via SMS per sistema BY10850 BY10870 AVVISATORE DISTACCO/RIPRISTINO DA DISTRIBUTORE Sistema di sorveglianza e avviso GSM via SMS per sistema BY10850 (versione firmware: BY10850-M1-V2) La presente documentazione è di proprietà esclusiva

Dettagli

Light controller PRO Manuale utente Cod. 112955/112956

Light controller PRO Manuale utente Cod. 112955/112956 Centralina di controllo di luci programmabile per applicazioni RC! 2. Introduzione Light controller è una scheda elettronica per sistemi RC programmabile che controlla fino a sei canali indipendenti ed

Dettagli

Robotica con il Boe-Bot Guida per studenti

Robotica con il Boe-Bot Guida per studenti Robotica con il Boe-Bot Guida per studenti VERSIONE 2.1 Garanzia La Parallax garantisce i suoi prodotti contro difetti dei materiali e di manifattura per un periodo di 90 giorni dal ricevimento del prodotto.

Dettagli

Manuale d Istruzioni Cronometro digitale. Modello 365535

Manuale d Istruzioni Cronometro digitale. Modello 365535 Manuale d Istruzioni Cronometro digitale Modello 365535 Istruzioni Introduzione Questo fantastico cronometro digitale al quarzo professionale dispone di una memoria cumulativa e di giro e funzionalità

Dettagli

Procedura corretta per mappare con ECM Titanium

Procedura corretta per mappare con ECM Titanium Procedura corretta per mappare con ECM Titanium Introduzione: In questo documento troverete tutte le informazioni utili per mappare correttamente con il software ECM Titanium, partendo dalla lettura del

Dettagli

Il PLC per tutti PRATICA

Il PLC per tutti PRATICA Settima parte: Settembre 2007 I Relays e la gestione dei dati Ottava parte: Ottobre 2007 Utilizzare il modulo Led a 7 segmenti giganti Nona parte: Novembre 2007 Applicazioni con i display a 7 segmenti

Dettagli

Sommario Indietro >> Aggiungi Rimuovi Lingua? Informazioni su questa Guida... Navigazione nella Guida

Sommario Indietro >> Aggiungi Rimuovi Lingua? Informazioni su questa Guida... Navigazione nella Guida Sommario Indietro >> Informazioni su questa Guida... Navigazione nella Guida Personalizzazione Apertura del pannello di controllo Funzioni del pannello di controllo Schede Elenchi del pannello di controllo

Dettagli

FlukeView Forms Documenting Software

FlukeView Forms Documenting Software FlukeView Forms Documenting Software N. 5: Uso di FlukeView Forms con il tester per impianti elettrici Fluke 1653 Introduzione Questa procedura mostra come trasferire i dati dal tester 1653 a FlukeView

Dettagli

MP500/4 - MP500/8 MP500/16 Centrali di allarme telegestibili

MP500/4 - MP500/8 MP500/16 Centrali di allarme telegestibili I MP500/4 - MP500/8 MP500/16 Centrali di allarme telegestibili Sul sito www.elkron.com potrebbero essere disponibili eventuali aggiornamenti della documentazione fornita a corredo del prodotto. Manuale

Dettagli

NXT Guida rapida di utilizzo. a cura di Rob Widger

NXT Guida rapida di utilizzo. a cura di Rob Widger NXT Guida rapida di utilizzo a cura di Rob Widger Guida rapida di utilizzo NXT Indice Introduzione... 2 1. Un approccio semplice... 3 2. Impostazione dell hardware... 4 3. Utilizzo di NXT senza software...

Dettagli

PRESENTA. Cronometro da gara per prove di regolarità. Versione 4.19

PRESENTA. Cronometro da gara per prove di regolarità. Versione 4.19 PRESENTA Cronometro da gara per prove di regolarità Versione 4.19 Funzionamento Alla accensione lo strumento presenta la schermata di benvenuto quindi emette un bip. Alla pressione di un tasto oppure dopo

Dettagli

BICI 2000 - Versione 1.9

BICI 2000 - Versione 1.9 Pagina 1/8 BICI 2000 - Versione 1.9 Il controllo BICI 2000 nasce per il pilotaggio di piccoli motori a magnete permanente in alta frequenza per veicoli unidirezionali alimentati da batteria. La sua applicazione

Dettagli

FDE- 712. Modulo per la sostituzione dei floppy disk nei pannelli DLsistemi modello DL104 Nuovo software per la gestione dei programmi

FDE- 712. Modulo per la sostituzione dei floppy disk nei pannelli DLsistemi modello DL104 Nuovo software per la gestione dei programmi FDE- 712 Modulo per la sostituzione dei floppy disk nei pannelli DLsistemi modello DL104 Nuovo software per la gestione dei programmi Figura 1 Vista la progressiva scomparsa dei dischi floppy, adatti al

Dettagli

SERVICE MANUAL ASCIUGABIANCHERIA. Asciugabiancheria a condensa con pompa di calore ENV06 HP

SERVICE MANUAL ASCIUGABIANCHERIA. Asciugabiancheria a condensa con pompa di calore ENV06 HP SERVICE MANUAL ASCIUGABIANCHERIA Electrolux Home Italia S.p.A. Numero di pubblicazione Corso Lino Zanussi, 30 I - 33080 Porcia PN - 599 71 61 36 Fax: + 39 0434 394096 IT Asciugabiancheria a condensa con

Dettagli

1 Generale Questo manuale è sempre in fase di miglioramento e potrà essere aggiornat Puoi inviare via e mail qualunque suggerimento per migliorarlo

1 Generale Questo manuale è sempre in fase di miglioramento e potrà essere aggiornat Puoi inviare via e mail qualunque suggerimento per migliorarlo MANUALE (ITA) 1 Generale Questo manuale è sempre in fase di miglioramento e potrà essere aggiornat Puoi inviare via e mail qualunque suggerimento per migliorarlo 2 Setup ATTENTION: seguire correttamente

Dettagli

Manuale d istruzioni My Custom Design

Manuale d istruzioni My Custom Design Manuale d istruzioni My Custom Design Leggere questo documento prima di utilizzare la macchina. Si consiglia di conservare questo documento nelle vicinanze per un eventuale riferimento futuro. Introduzione

Dettagli

K8076 Manuale utente

K8076 Manuale utente K8076 Manuale utente Informazioni generali 1. Introduzione La ringraziamo per aver acquistato e realizzato questo kit Velleman. Il K8076 rappresenta un programmatore per uso didattico, in grado di programmare

Dettagli

SISTEMA DI REGOLAZIONE NEST

SISTEMA DI REGOLAZIONE NEST SISTEMA DI REGOLAZIONE NEST La regolazione è il cuore efficiente del sistema NEST di riscaldamento e di raffrescamento degli ambienti. Il sistema permette in primo luogo di tenere sotto controllo continuamente

Dettagli

Manuale utente per la Wireless Mobile Adapter Utility. Caratteristiche

Manuale utente per la Wireless Mobile Adapter Utility. Caratteristiche Manuale utente per la Wireless Mobile Adapter Utility Installate la Wireless Mobile Adapter Utility sul vostro dispositivo intelligente per scaricare immagini da una fotocamera o per controllare fotocamere

Dettagli

Manuale di istruzioni

Manuale di istruzioni Manuale di istruzioni 25225A Informazioni sul manuale Grazie per aver acquistato l ewriter Boogie Board Sync 9.7 LCD. Il presente manuale offre assistenza per utilizzare l ewriter Boogie Board Sync. Improv

Dettagli

UTILIZZO DI WORD PROCESSOR

UTILIZZO DI WORD PROCESSOR UTILIZZO DI WORD PROCESSOR (ELABORAZIONE TESTI) Laboratorio Informatico di base A.A. 2013/2014 Dipartimento di Scienze Aziendali e Giuridiche Università della Calabria Dott. Pierluigi Muoio (pierluigi.muoio@unical.it)

Dettagli

Risoluzione dei problemi

Risoluzione dei problemi Risoluzione dei problemi Leggimi! 1. Scegliere Impostazioni dal menu Avvio, quindi selezionare Pannello di controllo. 2. Fare doppio clic sull icona Modem. 3. Scegliere la scheda Diagnostica. 4. Selezionare

Dettagli

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

4-1 DIGITARE IL TESTO

4-1 DIGITARE IL TESTO Inserimento testo e Correzioni 4-1 DIGITARE IL TESTO Per scrivere il testo è sufficiente aprire il programma e digitare il testo sulla tastiera. Qualsiasi cosa si digiti viene automaticamente inserito

Dettagli

Controllo remoto ad IR per il Boe-Bot

Controllo remoto ad IR per il Boe-Bot Indice Pagina v Controllo remoto ad IR per il Boe-Bot Scritto da Andy Lindsay VERSIONE 1.0 Garanzia La Parallax garantisce i suoi prodotti contro difetti dei materiali e di manifattura per un periodo di

Dettagli

THUNDER. Portable Data Terminal. Guida Rapida

THUNDER. Portable Data Terminal. Guida Rapida THUNDER Portable Data Terminal Guida Rapida Descrizione: Grazie per aver acquistato un THUNDER Il Terminale portatile THUNDER e' particolarmente dedicato ad applicazioni di acquisizione dati quali inventario,

Dettagli

ALTERNATYVA MOBILE GUIDA RAPIDA ALLA CONFIGURAZIONE DEL ROUTER

ALTERNATYVA MOBILE GUIDA RAPIDA ALLA CONFIGURAZIONE DEL ROUTER ALTERNATYVA MOBILE GUIDA RAPIDA ALLA CONFIGURAZIONE DEL ROUTER Gentile Cliente, ti ringraziamo per aver scelto il servizio AlternatYva. Attraverso i semplici passi di seguito descritti, potrai da subito

Dettagli

SOLAR VIEW. pv data logger. - Manuale d installazione e uso -

SOLAR VIEW. pv data logger. - Manuale d installazione e uso - SOLAR VIEW pv data logger - Manuale d installazione e uso - INTRODUZIONE Vi ringraziamo per la scelta del nostro prodotto. L apparecchio descritto in questo manuale è un prodotto di alta qualità, attentamente

Dettagli

OPERA Specifiche tecniche per moduli telegestione Hardware, Quadri di campo e di rete FV

OPERA Specifiche tecniche per moduli telegestione Hardware, Quadri di campo e di rete FV SPECIFICHE TECNICHE OPERA Specifiche tecniche per moduli telegestione Hardware, Quadri di campo e di rete FV RSST04I00 rev. 0 0113 SPECIFICA SIGLA TIPO DI PRODOTTO A DIM/F TELEGESTIONE QUADRI DI CAMPO

Dettagli

LA SCHEDA DEL MODULO BLUETOOTH

LA SCHEDA DEL MODULO BLUETOOTH F42-LAB-pag 11-13-ok 27-04-2006 16:15 Pagina 11 LA SCHEDA DEL MODULO BLUETOOTH COMPONENTI 1. Il componente allegato a questo fascicolo è il più sofisticato di tutta la fase di assemblaggio: con esso il

Dettagli

D610, D600, D7100, D5300, D5200, D3300, Df

D610, D600, D7100, D5300, D5200, D3300, Df 1 Wireless Mobile Utility (Android) Manuale d uso Installare la Wireless Mobile Utility sul proprio dispositivo intelligente (smartphone o tablet) per scaricare foto da una fotocamera o per scattare foto

Dettagli

STAMP SIMPLE BOARD KIT Manuale Utente

STAMP SIMPLE BOARD KIT Manuale Utente STAMP SIMPLE BOARD KIT Manuale Utente Contenuti: Avvertenze Istruzioni per l assemblaggio Istruzioni per l uso Caratteristiche Tecniche Schema elettrico REV. 1.4 ATTENZIONE! Questo Kit non e un giocattolo

Dettagli

DASY-X. Manuale utente

DASY-X. Manuale utente DASY-X Manuale utente Versione 1.01 Agosto 2015 INDICE PROCEDURA BASE... 3 IL SISTEMA DASY & DANAS... 4 CONTENUTO DELLA CONFEZIONE... 4 INSTALLAZIONE DASY... 4 CONNETTORE 20 PIN... 6 CONNETTORE 16 PIN...

Dettagli

Excel Guida introduttiva

Excel Guida introduttiva Excel Guida introduttiva Informativa Questa guida nasce con l intento di spiegare in modo chiaro e preciso come usare il software Microsoft Excel. Questa è una guida completa creata dal sito http://pcalmeglio.altervista.org

Dettagli

3.3 Formattazione. Formattare un testo. Copyright 2008 Apogeo. Formattazione del carattere

3.3 Formattazione. Formattare un testo. Copyright 2008 Apogeo. Formattazione del carattere 3.3 Formattazione Formattare un testo Modificare la formattazione del carattere Cambiare il font di un testo selezionato Modificare la dimensione e il tipo di carattere Formattazione del carattere In Word,

Dettagli

Ricevitore radio DCMP2000FL INDICE

Ricevitore radio DCMP2000FL INDICE Ricevitore radio DCMP2000FL INDICE Generalità pag. 2 Caratteristiche pag. 2 Modo di funzionamento pag. 3 Collegamenti pag. 3 Visualizzazioni pag. 4 Eventi pag. 4 Allarme pag. 4 Tamper pag. 4 Batteria scarica

Dettagli

LICENZA LIMITATA DI UTILIZZO

LICENZA LIMITATA DI UTILIZZO RFPC-04 PC Sync and Organizer Setup PC Sync und Organiser Einstellung Installation du PC Sync et l organiseur Instalación del PC Sync y el Organizador Impostazione di PC Sync e dell organizer Setup van

Dettagli

Manuale d uso e funzionamento

Manuale d uso e funzionamento Manuale d uso e funzionamento Comando Remoto per Caldaria 55.1 e 100.1 Condensing A B C Selezione stato funzionamento Impostazione orologio e temperature Programma settimanale D E F G Modifica valore visualizzato

Dettagli

LIBRETTO DI COMPATIBILITÀ

LIBRETTO DI COMPATIBILITÀ Linea e-nova LIBRETTO DI COMPATIBILITÀ Sommario 1. Centrale-sirena SH380AT... 3 2. Comunicatore RTC + ADSL SH511AX Comunicatore GSM/GPRS + ADSL SH512AX Comunicatore RTC + GSM/GPRS + ADSL SH513AX Comunicatore

Dettagli

COOLPIX: P520, S9500, S6500, S5200, AW110 0 75 97

COOLPIX: P520, S9500, S6500, S5200, AW110 0 75 97 1 Wireless Mobile Utility (Android) Manuale d uso Installare la Wireless Mobile Utility sul proprio dispositivo intelligente (smartphone o tablet) per scaricare foto da una fotocamera o per scattare foto

Dettagli

MULTIPLEXER 4 CANALI CON FUNZIONAMENTO DUPLEX E VIDEO A COLORI AXECD4X

MULTIPLEXER 4 CANALI CON FUNZIONAMENTO DUPLEX E VIDEO A COLORI AXECD4X MULTIPLEXER 4 CANALI CON FUNZIONAMENTO DUPLEX E VIDEO A COLORI AXECD4X MANUALE D INSTALLAZIONE LEGGERE ATTENTAMENTE IL PRESENTE MANUALE PRIMA DI METTERE IN FUNZIONE L'APPARECCHIATURA. INDICE Caratteristiche

Dettagli

Indruduzione... 1 Il modulo Bluetooth HC-06... 2 Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android...

Indruduzione... 1 Il modulo Bluetooth HC-06... 2 Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android... Sommario Indruduzione... 1 Il modulo Bluetooth HC-06... 2 Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android... 4 Indruduzione La scheda può controllare fino a quattro

Dettagli

3G WI-FI HOTSPOT MANUALE UTENTE HHTSPT3GM42. www.hamletcom.com

3G WI-FI HOTSPOT MANUALE UTENTE HHTSPT3GM42. www.hamletcom.com 3G WI-FI HOTSPOT MANUALE UTENTE HHTSPT3GM42 www.hamletcom.com Gentile Cliente, La ringraziamo per la fiducia riposta nei nostri prodotti. La preghiamo di seguire le norme d'uso e manutenzione che seguono.

Dettagli

LA SCHEDA DEL MODULO ARMS

LA SCHEDA DEL MODULO ARMS IDROID 68 LAB 10-13 11-12-2006 14:17 Pagina 10 LA SCHEDA DEL MODULO ARMS BRACCIA E HAND TOOL, 1 COMPONENTI 1. Inizia una nuova fase, e parte subito con un componente di importanza cruciale: una scheda

Dettagli

Quick-Manual. Comfort VS4

Quick-Manual. Comfort VS4 Quick-Manual Comfort VS4 Contenuto 1. Come inserire la carta SIM 35 2. Come caricare la batteria 36 3. Le funzioni dei tasti 38 4. Come aggiungere contatti alla Rubrica 40 5. Come fare e ricevere chiamate

Dettagli

In questa puntata analizzeremo

In questa puntata analizzeremo Quarta parte Implementazione del protocollo MODBUS ASCII Quinta parte Simulatore PLC Il programma di supervisione Applicazione embedded 104 In questa puntata analizzeremo l ultima parte per quello che

Dettagli

USARE WORD. - non solo per scrivere - Un corso per chi vuole imparare ad usare Word senza fare fatica

USARE WORD. - non solo per scrivere - Un corso per chi vuole imparare ad usare Word senza fare fatica Pagina 1 di 32 USARE WORD - non solo per scrivere - Un corso per chi vuole imparare ad usare Word senza fare fatica Indice: - La finestra di Word pag. 2 - Barra del titolo pag. 3 - Barra dei menu pag.

Dettagli

USARE WORD - non solo per scrivere -

USARE WORD - non solo per scrivere - GUIDA WORD USARE WORD - non solo per scrivere - corso Word Un corso per chi vuole imparare ad usare Word senza fare fatica Indice: - La finestra di Word pag. 2 - Barra del titolo pag. 3 - Barra dei menu

Dettagli

Contachilometri parzializzatore Terratrip 101. Istruzioni per l'uso.

Contachilometri parzializzatore Terratrip 101. Istruzioni per l'uso. Funzionamento normale: Contachilometri parzializzatore Terratrip 101. Istruzioni per l'uso. Premere il tasto PWR per accendere il T101. Lo schermo mostrerà il logo Terratrip per un breve periodo, mentre

Dettagli

Pannello comandi a distanza

Pannello comandi a distanza Pannello comandi a distanza 6-7 1-5 Istruzioni d uso INFORMAZIONI GENERALI PER UN USO CORRETTO DEL PANNELLO COMANDI A DISTANZA VI INVITIAMO A LEG- GERE ATTENTAMENTE IL CONTENUTO DEL PRESENTE MANUALE. AVVERTENZE

Dettagli

LiveTrack SMS Manuale d uso v. 1.0

LiveTrack SMS Manuale d uso v. 1.0 LiveTrack SMS Manuale d uso v. 1.0 Il LiveTrack SMS è uno straordinario software per Palmari Pocket PC Mobile 5 e Mobile 6 progettato e realizzato per rendere estremamente più semplice ed efficace il controllo

Dettagli

... 13... 14 ... 16... 17 ... 8 ... 9... 10 ... 11... 12 ... 15

... 13... 14 ... 16... 17 ... 8 ... 9... 10 ... 11... 12 ... 15 1 ... 3... 4... 6... 7... 8... 8... 9... 10... 10... 11... 12... 13... 14... 14... 14... 14... 14... 15... 15... 15... 15... 16... 16... 16... 17 2 Misure Precauzionali Questa sezione include alcune note

Dettagli

Progetto di Domotica

Progetto di Domotica Progetto di Domotica Titolo dell esercitazione: Progetto di Domotica Descrizione sommaria dell esperienza: Realizzazione di un circuito che permette il controllo di vari sensori all interno di un edificio.

Dettagli

Manuale Utente. Contents. Your journey, Our technology. 6. Come aggiornare le mappe 6. 1. Introduzione 2. 2. Installazione di Geosat Suite 2

Manuale Utente. Contents. Your journey, Our technology. 6. Come aggiornare le mappe 6. 1. Introduzione 2. 2. Installazione di Geosat Suite 2 Manuale Utente Contents 1. Introduzione 2 2. Installazione di Geosat Suite 2 3. Prima connessione 2 4. Operazioni Base 3 4.1 Come avviare la Suite 3 4.2 Come chiudere la Suite 4 4.3 Come cambiare la lingua

Dettagli

Recuperare i file RAR corrotti

Recuperare i file RAR corrotti Recuperare i file RAR corrotti Disclaimer del traduttore Questa guida, non è farina del mio sacco, infatti ho provveduto a tradurla solamente, cercando di rendere la traduzione semplice e in un italiano

Dettagli

CHIAVE ELETTRONICA CON CHIP CARD (EEPROM) di Massimo e Leonardo Divito div.massimo@tiscali.it

CHIAVE ELETTRONICA CON CHIP CARD (EEPROM) di Massimo e Leonardo Divito div.massimo@tiscali.it CHIAVE ELETTRONICA CON CHIP CARD (EEPROM) di Massimo e Leonardo Divito div.massimo@tiscali.it Ecco a voi un semplice circuito utile ad attivare una serratura elettrica o a tenere sotto chiave qualsiasi

Dettagli

Dipartimento di Storia, Società e Studi sull Uomo Università del Salento Ing. Maria Grazia Celentano Mariagrazia.celentano@gmail.

Dipartimento di Storia, Società e Studi sull Uomo Università del Salento Ing. Maria Grazia Celentano Mariagrazia.celentano@gmail. Dipartimento di Storia, Società e Studi sull Uomo Università del Salento Ing. Maria Grazia Celentano Mariagrazia.celentano@gmail.com Indice: La finestra di Word Barra del titolo Barra dei menu Barra degli

Dettagli

OROLOGIO PROIEZIONE INTRODUZIONE. Manuale di istruzioni

OROLOGIO PROIEZIONE INTRODUZIONE. Manuale di istruzioni OROLOGIO PROIEZIONE I Manuale di istruzioni INTRODUZIONE Congratulazioni per aver acquistato Orologio proiezione. Questo orologio è un dispositivo ricco di funzioni che permette di sincronizzare automaticamente

Dettagli

www.autoscout24.it Inserire le auto in Internet E' davvero semplice

www.autoscout24.it Inserire le auto in Internet E' davvero semplice Inserire le auto in Internet E' davvero semplice Imparate a conoscere tutte le funzioni ed i servizi Anmelden: AutoScout24 facilita la vendita delle vostre auto tramite Internet. In questa guida troverete

Dettagli

Guida alle applicazioni di Web Clipping

Guida alle applicazioni di Web Clipping Guida alle applicazioni di Web Clipping Copyright Copyright 1998-2000 Palm, Inc. o consociate. Tutti i diritti riservati. Graffiti, Palm OS e Palm.Net sono marchi di fabbrica registrati. Palm è un marchio

Dettagli

WORD 97 SCRIVERE UNA TESI DI LAUREA

WORD 97 SCRIVERE UNA TESI DI LAUREA WORD 97 SCRIVERE UNA TESI DI LAUREA PASSO 1 Per prima cosa pensiamo al formato generale della pagina: i margini richiesti da una tesi sono quasi sempre più ampi di quelli di un testo normale. Apriamo ora

Dettagli

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A ITIS M. PLANCK LANCENIGO DI VILLORBA (TV) A.S. 2006/07 CLASSE 4A/ SERALE Corso di elettronica e telecomunicazioni Ins. Zaniol Italo CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A Presentazione

Dettagli

Cronotermostato con protocollo OpenTherm

Cronotermostato con protocollo OpenTherm Cronotermostato con protocollo OpenTherm Guida rapida In questa sezione vengono descritte le principali operazione per l utilizzo del cronotermostato. Per approfondimenti e per le istruzioni di installazione

Dettagli

Programmatore per telaio scheller

Programmatore per telaio scheller Divo Di Lupo Sistemi per telai Cotton Bentley Monk Textima Scheller Closa Boehringer http://www.divodilupo.191.it/ Programmatore per telaio scheller Attuatore USB semplificato Numero totale di pagine =

Dettagli

elecomando opzionale a funzioni multiple (per la serie MT) Telecomando a scheda (per la serie LT)

elecomando opzionale a funzioni multiple (per la serie MT) Telecomando a scheda (per la serie LT) elecomando opzionale a funzioni multiple (per la serie MT) Telecomando a scheda (per la serie LT) Questo telecomando interattivo illustra proprietà, funzioni, impostazioni e menù regolabili dei telecomandi

Dettagli

Istruzioni per l uso. (Per l installazione Panasonic Document Management System) Digital Imaging Systems. Installazione. Sommario.

Istruzioni per l uso. (Per l installazione Panasonic Document Management System) Digital Imaging Systems. Installazione. Sommario. Istruzioni per l uso (Per l installazione Panasonic Document Management System) Digital Imaging Systems N. modello DP-800E / 800P / 806P Installazione Sommario Installazione Installazione del driver di

Dettagli

Manuale per l utente di Ethernet

Manuale per l utente di Ethernet Manuale per l utente di Ethernet Indice 1. Nome della scheda dell interfaccia & stampante disponibile... 2 2. Specifiche... 3 3. Modalità d installazione... 4 4. Configurazione della scheda dell interfaccia

Dettagli

INDICE. A.E.B. S.r.l. - Cavriago (RE) Italy

INDICE. A.E.B. S.r.l. - Cavriago (RE) Italy INDICE Procedura di aggiornamento... Pag. 3 Collegamento per riprogrammazione... Pag. 3 Aggiornamento software... Pag. 4 Tipi di connessione attualmente disponibili... Pag. 4 Descrizione Generale del Tester...

Dettagli

GUIDA ALL USO DELL E-READER SONY PRS-T1...2

GUIDA ALL USO DELL E-READER SONY PRS-T1...2 GUIDA ALL USO DELL E-READER SONY PRS-T1...2 INFORMAZIONI SUL DISPOSITIVO READER...2 OPERAZIONI DI BASE...2 APPLICAZIONI E SCHERMATA [HOME]...2 Barra di stato...3 Finestra di notifica...4 OPERAZIONI DEL

Dettagli

Prima dell avvio Prima di utilizzare la telecamera assicuratevi che la batteria sia completamente carica (vedere caricamento batteria )

Prima dell avvio Prima di utilizzare la telecamera assicuratevi che la batteria sia completamente carica (vedere caricamento batteria ) Descrizione La foto illustra la posizione degli elementi funzionali della videocamera, visibili all esterno. I due elementi metallici a forma di triangolo sono i dissipatori di calore e possono diventare

Dettagli

eurobraille VOYONS ENSEMBLE Guida rapida esys12 / esys40 Versione 1.00 revisione 1

eurobraille VOYONS ENSEMBLE Guida rapida esys12 / esys40 Versione 1.00 revisione 1 eurobraille VOYONS ENSEMBLE Guida rapida esys12 / esys40 Versione 1.00 revisione 1 eurobraille 134-140, rue d Aubervilliers, 75019 PARIS Tel : +33 (0)1 55 26 91 00 Fax : +33 (0)1 55 26 91 91 ESYS 1.00

Dettagli

Manuale di installazione e dell utente

Manuale di installazione e dell utente Manuale di installazione e dell utente 16 bit, per Windows 3.1 ii Informazioni sul copyright Nessuna parte di questa pubblicazione può essere riprodotta, trasmessa, trascritta, memorizzata o tradotta in

Dettagli

Utilizzo di FileMaker Pro con Microsoft Office

Utilizzo di FileMaker Pro con Microsoft Office Guida Pratica Utilizzo di FileMaker Pro con Microsoft Office Integrare FileMaker Pro con Office pagina 1 Sommario Introduzione... 3 Prima di iniziare... 4 Condivisione di dati tra FileMaker Pro e Microsoft

Dettagli

EasyCon GSM. Manuale di Installazione

EasyCon GSM. Manuale di Installazione Manuale di Installazione SOMMARIO Descrizione delle funzioni del dispositivo... pag. 3 Descrizione dei terminali della morsettiera... pag. 3 Istruzioni per l installazione... pag. 3 Segnalazioni LED...

Dettagli

progettare & costruire di GIOVANNI DI MARIA

progettare & costruire di GIOVANNI DI MARIA progettare & costruire di GIOVANNI DI MARIA Interfacciare il PC con il mondo esterno LA PORTA SERIALE DEL PC in uscita con il PIC In questa puntata interfacceremo il Personal Computer con le nostre apparecchiature

Dettagli

Centrale di rilevazione incendio analogica-indirizzabile

Centrale di rilevazione incendio analogica-indirizzabile Centrale di rilevazione incendio analogica-indirizzabile Rivelatori analogici HFA-2000 Centrale incendio analogica-indirizzabile Progettata per funzionare esclusivamente con i rivelatori incendio Serie

Dettagli

MICROCONTROLLORI COME CIRCUITI LOGICI

MICROCONTROLLORI COME CIRCUITI LOGICI Steve Blackbird (TardoFreak) MICROCONTROLLORI COME CIRCUITI LOGICI 23 September 2010 L' evoluzione tecnologica nel campo dei microcontrollori e la loro massiccia diffusione hanno determinato anche la riduzione

Dettagli

SD-GSM 0-16/A72 Unità GSM per sistemi di protezione interfacce (SPI)

SD-GSM 0-16/A72 Unità GSM per sistemi di protezione interfacce (SPI) Manuale Utente SD-GSM 0-16/A72 Unità GSM per sistemi di protezione interfacce (SPI) Indice Informazioni preliminari 2 Prima accensione del dispositivo 2 Caratteristiche 2 Specifiche tecniche 3 Led di segnalazione

Dettagli

Oscilloscopi serie WaveAce

Oscilloscopi serie WaveAce Oscilloscopi serie WaveAce 60 MHz 300 MHz Il collaudo facile, intelligente ed efficiente GLI STRUMENTI E LE FUNZIONI PER TUTTE LE TUE ESIGENZE DI COLLAUDO CARATTERISTICHE PRINCIPALI Banda analogica da

Dettagli

FI801-008 KEYPAD KP1 TASTIERINO ESTERNO PER IL CONTROLLO DEI SISTEMI DI ISPEZIONE SERIE INSPEX. Manuale d Uso

FI801-008 KEYPAD KP1 TASTIERINO ESTERNO PER IL CONTROLLO DEI SISTEMI DI ISPEZIONE SERIE INSPEX. Manuale d Uso FI801-008 KEYPAD KP1 TASTIERINO ESTERNO PER IL CONTROLLO DEI SISTEMI DI ISPEZIONE SERIE INSPEX Manuale d Uso Revisione 2.1 (con aggiunta della funzione griglie di misurazione) Indice Generale Informazioni

Dettagli

Procedura aggiornamento firmware

Procedura aggiornamento firmware Procedura aggiornamento firmware Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Procedura aggiornamento... 4 Appendice... 6 Connessione

Dettagli

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Istruzioni sull aggiornamento per i modelli di navigazione: AVIC-F40BT, AVIC-F940BT, AVIC-F840BT e AVIC-F8430BT

Dettagli

GUIDA for SpeedFan. www.come123.altervista.org

GUIDA for SpeedFan. www.come123.altervista.org GUIDA for SpeedFan www.come123.altervista.org INDICE INTRODUZIONE PAGINA INIZIALE MENU DI CONFIGURAZIONE o Temperature o Ventole o Voltaggi o Velocità o Fan control o Opzioni o Log o Avanzate o Eventi

Dettagli

MICROSOFT EXCEL INTRODUZIONE PRIMI PASSI

MICROSOFT EXCEL INTRODUZIONE PRIMI PASSI MICROSOFT EXCEL INTRODUZIONE Si tratta di un software appartenente alla categoria dei fogli di calcolo: con essi si intendono veri e propri fogli elettronici, ciascuno dei quali è diviso in righe e colonne,

Dettagli

Capitolo 2. Esplorare l interfaccia tra uomo e computer

Capitolo 2. Esplorare l interfaccia tra uomo e computer Capitolo 2 Esplorare l interfaccia tra uomo e computer Imparare la tecnologia Gli esseri umani non hanno abilità tecnologiche innate La nostra precedente esperienza nell uso di dispositivi simili, incluse

Dettagli

Le principali novità di Word XP

Le principali novità di Word XP Le principali novità di Word XP di Gemma Francone supporto tecnico di Mario Rinina Il programma può essere aperto in diversi modi, per esempio con l uso dei pulsanti di seguito riportati. In alternativa

Dettagli

MDL-10. Misuratore di distanza laser Manuale d uso

MDL-10. Misuratore di distanza laser Manuale d uso MDL-10 Misuratore di distanza laser Manuale d uso MDL-10 - Manuale d uso Manuale d uso - MDL-10 Leggere il presente manuale prima di accendere l apparecchio, contiene importanti informazioni inerenti la

Dettagli

GUIDA AI CORSI OFFICE PER IL PERSONALE TECNICO AMMINISTRATIVO

GUIDA AI CORSI OFFICE PER IL PERSONALE TECNICO AMMINISTRATIVO GUIDA AI CORSI OFFICE PER IL PERSONALE TECNICO AMMINISTRATIVO INDICE Verifica dei requisiti tecnici... 1 *Rimozione blocco popup... 1 In Internet Explorer... 1 In Mozilla Firefox... 4 In Google Chrome...

Dettagli

Pulsar FAQ Oct. 2010.

Pulsar FAQ Oct. 2010. Pulsar FAQ Oct. 2010. Come faccio a sapere è connesso correttamente con il PC? Installa Pulsar Commander (download da www.astronomy.hu) sul tuo PC (preferibilmente Win XP ), seleziona il numero di porta

Dettagli

ProSYS. Manuale Utente

ProSYS. Manuale Utente ProSYS Manuale Utente Modelli RP116MC00ITA, RP140MC00ITA, RP128MC00ITA II LIVELLO Dichiarazione di Conformità RTTE Con la presente, RISCO Group, dichiara che questa centrale antifurto (ProSYS 128, ProSYS

Dettagli

D 2 CC Versione con segnale contagiri da cavo candela 3 v D 2 EFI Versione con segnale contagiri da centralina 3 v

D 2 CC Versione con segnale contagiri da cavo candela 3 v D 2 EFI Versione con segnale contagiri da centralina 3 v D 2 CC Versione con segnale contagiri da cavo candela 3 v D 2 EFI Versione con segnale contagiri da centralina 3 v Montaggio: Installate lo strumento utilizzando i due prigionieri presenti sul retro dello

Dettagli

Manuale d istruzioni

Manuale d istruzioni Kummert CompactPlus Manuale d istruzioni vers. 04/04/203 . Operazioni iniziali Equipaggiamento protettivo: guanti di protezione NOTA BENE Danni materiali a causa di procedure o utilizzo errati! Una messa

Dettagli

Quick Start Guide My Surf

Quick Start Guide My Surf Quick Start Guide My Surf Precauzioni di sicurezza Leggere attentamente le presenti precauzioni di sicurezza prima di iniziare ad utilizzare il telefono. Leggere la Guida alle informazioni di sicurezza

Dettagli

Telefono COMPATIBILITÀ DEI TELEFONI INFORMAZIONI SU BLUETOOTH SICUREZZA DEL TELEFONO

Telefono COMPATIBILITÀ DEI TELEFONI INFORMAZIONI SU BLUETOOTH SICUREZZA DEL TELEFONO Tele fono INFORMAZIONI SU BLUETOOTH Bluetooth è il nome della tecnologia a frequenza radio (RF) a corto raggio che consente la comunicazione senza fili tra dispositivi elettronici. Il sistema Bluetooth

Dettagli

Istruzioni per l uso Display grafico per SINEAX CAM

Istruzioni per l uso Display grafico per SINEAX CAM Istruzioni per l uso Display grafico per SINEAX CAM CAM Display Bi 162 602 06.10 Camille Bauer AG Aargauerstrasse 7 CH-5610 Wohlen / Svizzera Telefono +41 56 618 21 11 Fax +41 56 618 35 35 e-mail: info@camillebauer.com

Dettagli