Home
Controllo remoto ad IR per il Boe-Bot
Contents
1. Capitolo 2 Creare ed usare Applicazioni Remote Pagina 67 IF irPulse gt 300 THEN remoteCode BIT5 1 RCTIME IrDet 0 irPulse IF 2rPulse gt 300 THEN remoteCode BIT6 1 Adjust remoteCode so that keypad keys correspond to the value it stores IF remoteCode lt 10 THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0 RETURN Il Vostro Turno Espandere l Elenco dei Tasti Conosciuti Potete espandere il vostro programma per includere 1 tasti SLEEP MUTE e LAST Rilanciate TestIrRemoteButtons bs2 ed acquisite i valori per i tasti SLEEP MUTE e LAST Salvate il programma come TestIrRemoteButtonsYourTurn bs2 y Modificate la sezione delle costanti in modo che questi valori siano compresi State attenti SLEEP anche un comando PBASIC quindi dovrete scegliere un nome diverso per il valore che corrisponde al tasto SLEEP sul telecomando Provate invece FnSleep l abbreviazione per la funzione sleep y Modificate la dichiarazione SELECT CASE in modo che visualizzi SLEEP quando viene premuto il tasto SLEEP MUTE quando viene premuto il tasto MUTE ed infine LAST quando viene premuto il tasto LAST NOTA in alcuni telecomandi il tasto LAST chiamato PREV CH Tasti di controllo del VCR tasti di controllo del VCR come gt gt FAST FORWARD e lt lt REWIND non fanno emettere codici dal telecomando quando in modalit controllo TV Potete us
2. Prima di modificare questo programma testatelo premendo il tasto POWER quindi qualsiasi tasto numerico diverso da 1 2 o 3 Verificate che non ci sia nulla che potete fare con il telecomando per riattivare il vostro Boe Bot potete premere e rilasciare il pulsante RESET sulla vostra scheda ma con il telecomando siete sfortunati perch non c nulla che potete fare per risvegliare il Boe Bot Localizzate gli ultimi tre comandi nella routine principale essi dovrebbero essere simili a GOSUB Send_Pulse ENDSELECT LOOP Aggiungete la dichiarazione CASE ELSE mostrata di seguito Questo far s che il programma resti in ascolto per un comando dal telecomando senza tener conto del valore di operation GOSUB Send Pulse CASE ELSE lt New IF IN9 0 THEN operation 1 lt New Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 131 ENDSELECT LOOP Testate il vostro programma medificato ed assicuratevi che il Boe Bot non rimanga pi confuso quando impostate la variabile operation ad un valore diverso da 1 2 0 3 Salvate il vostro lavoro ATTIVIT 3 BOE BOT PROGRAMMATO A DISTANZA per il vostro Boe Bot potete scrivere un programma PBASIC che vi permetter di programmarlo con schemi di movimento usando il vostro telecomando Premendo una sequenza di tasti sul telecomando potrete caricare una sequenza di manovre nella memoria EEPROM del BASIC Stamp del Boe Bot Questo un esempio di sequenza di
3. Boe Bot navigation variables from FollowingBoeBot bs2 fregSelect VAR Nib irFrequency VAR Word irDetectLeft VAR BLE irDetectRight VAR BLE distanceLeft VAR Nib distanceRight VAR Nib pulseLeft VAR Word pulseRight VAR Word u TeMuleceiBOoOtC 9082 variables counter VAR Nib lt New operation VAR Nib lt New ON rice SU a we ae aa DEBUG Press POWER to select CR moce of operacions CR CR wI Remote control 1 9 CH VOLY CR 2 Autonomous IR roaming CR w3 Object finc and follow CR CR FREQOUT Speaker 2000 3000 operation 1 Initialize to remote dec KS ai See rene sc ss sz Fl lt zW Sca cen DO SELEC Operation lt New If operation 1 execute a modified version of Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 125 7BitRemoteBoeBot bs2 that also allows you to change the operation variable with the POWER key CAGHo al 1 lt New Modified main routine from 7BitRemoteBoeBot bs2 goes here GOSUB Gen Tr Remote Code DS Checks Or POW seuteise mn If yes get remote code otherwise send PULSOUT durations for the various maneuvers based on the value of the remoteCode variable SELECT remoteCode CASE Power 1 1 lt New FREQOUT Speaker 100 3500 lt New PAU Sha Ole New EREBOOUT Speaker 100 3500 lt New PAU SH 22 010 a lew DEBUG Select operacion ModE CCR lt New GOSUB Get_Ir_Remote_Code lt New op
4. Change ELSEIF irDetectLeft 0 THEN pulseLeft 750 speed Change pulseRight 750 speed Change ELSEIF irDetectRight 0 THEN pulseLeft 750 speed lt Change pulseRight 750 speed lt Change ELSE pulseLeft 750 speed lt Change pulseRight 750 speed Change ENDIF Dopo che 1 valori delle variabili pulseLeft e pulseRight sono stati impostati dalla dichiarazione IF THEN queste variabili sono usate per impostare gli argomenti Duration dei comandi PULSOUT Questi comandi PULSOUT inviano gli impulsi ai servo sinistro e destro e le durate degli impulsi determinano la direzione e la velocit a cui girano le ruote del Boe Bot Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 109 PULSOUT 13 pulseLeft Apply the pulse PULSOUT 12 pulseRight PAUSE 15 Il Vostro Turno Risparmiare Spazio Variabile Potete risparmiare lo spazio RAM di due variabili di grandezza word usando i comandi PULSOUT all interno della dichiarazione IF THEN Ecco come N N Salvate il vostro programma funzionante con un altro nome come ad esempio IrRoamingWithSpeedControlY ourTurn bs2 Clickate Run e selezionate Memory Map o CTRL M o l icona della Mappa della Memoria sulla barra degli utensili Controllate la Mappa della RAM per vedere quanta RAM state usando La codifica dei colori dovrebbe mostrare che REG 0 e 1 sono variabili per memorizzare word Dovrebbe anche mostrare che REG 2 ha un
5. Pagina 74 Infrarossi per il Controllo a Distanza del Boe Bot ATTIVIT 4 INSERIMENTO DI GRANDI NUMERI CON LA TASTIERA Nella maggior parte delle apparecchiature potete inserire grandi numeri premendo sequenze di tasti numerici Per esempio potete premere 3 1 5 sulla tastiera del vostro microonde per riscaldare del cibo ed il forno lo cuocera per 3 minuti e 15 secondi Similmente potreste inserire 1 0 0 0 nella vostra calcolatrice come numero mille che deve essere moltiplicato diviso etc molti apparecchi televisivi hanno una selezione tramite men dove potete usare la tastiera del vostro telecomando per aggiornare l ora ed i VCR hanno la stessa caratteristica cos che possiate programmare il VCR per registrare un programma TV in vostra assenza L inserimento di cifre multiple una caratteristica che pu essere molto utile in un secondo esempio applicativo che potete aggiungere alla vostra libreria di programmi utili In questa attivit svilupperete questa caratteristica quindi la salverete per usi e riusi futuri Il Circuito dell Altoparlante Che sia una tastiera di un sistema antifurto di un microonde o di un Boe Bot un altoparlante aiuta realmente nel farvi sapere che il dispositivo ha capito che avete premuto quel tasto L altoparlante mostrato in Figura 2 6 gi stato aggiunto al vostro Boe Bot nel Capitolo 1 Attivit 4 ma fino ad ora stato usato solamente per avvertirvi che il programma partito o
6. PUES TN 9 0 cime 9 PULSIN 9 0 time 10 PULSIN 9 0 nes POR index E O cime 0 time 0 time index NEXT DO i PULSIN 9 1 ine LOOR UNTILL cimeli gt 1000 DO y PUGS LO Ue NENA LOOP TUNER Ceime 2 y gt F000 DO PESTO n 0 LOOP UNTIE Cine gt 1 AND time 3 time ls time 3 12 CE time 3 data pulses time 0 tame 0 tame i tame 2 rest between messages twelve rests between messages This is the message total Y SONY TY remote variables Beginning of main loop Wait for rest between messages Measure store data pulses Acel up data pulse curations Wait for rest between messages Wart for start pulse Wait for data pulse rest lt 1000 Twelve data pulse rests cime 2 start pulse and time 0 the total time s Pagina 46 Infrarossi per il Controllo a Distanza del Boe Bot PZ Poe DEBUG time 0 DECHE ONE CUS ECR Display MeS LOOP Repeat main loop Iniziate con 4BitRemoteBoeBot bs2 Aggiungete questa dichiarazione di variabile counter VAR Byte y Cancellate questi due comandi PULSOUT PULSOUT 13 750 PULSOUT 12 750 Sostituiteli con questo ciclo FOR NEXT EndValue che ha valore 76 Dovr essere calibrato FOR counter PULSOUT 13 PULSOUT 12 PAUSE 20 NEXT 1 TO 76 650 650 Iniziate con 4BitRemoteBoeBot bs2 Aumentate l array time a 5 elementi Aggiungete un quinto comando PULSIN per caricare
7. SELECT CLrectTLon CASE ChUp RUMSOC Soer role ine sao oe PULSOUL ServoRight 650 CASE PULSOUL Serve Lee PULSOUT ServoRight 850 CASE VolUp Stat by hese LnadLeCator Debug instructions THEN remoteCode lt VolDn Capitolo 2 Creare ed usare Applicazioni Remote Pagina 89 PULSOUL ServoheiE scot PULSOUT ServoRight 850 GAS Foon Bry PUEGOUL Sservoherir a 6s PULSOUT ServoRighaht 650 ENDSELECT PAUSE 20 NEXT LOOP RESET Ee ASHE U Sere We a S E O E SONY TV IR remote subroutine loads the remote code into the remoteCode variable Cem Shrneahemore Te odes remoteCode 0 DO RCTIME IrDet 1 irPulse LOOP UNTIL irPulse gt 1000 BUISNESS O ENESE IF irPulse gt 500 THEN remoteCode BITO 1 RCTIME LrDet 0 eee ire LePulse gt 300 THEN remorteCoce BITL 1 RCITIME LeDet 0 Pdl r er dl ses gt 300 THEN cemoteCoce BLIZ 1 RCTIME LrDet 0 irp ulse Perris gt 300 THEN cemoreCoce BIT3 1 ECRIMESTE Dea IF irPulse gt 300 THEN remoteCode BIT4 1 RGeRibaitebo be Ot sia CESS LP LePuLlse gt 300 THEN remoee Code BLITS 1 RCITIME LrDet 0 LrRuLlge Ir LePulse gt 300 THEN remorceCoce BITO ii Clear all bits in remoteCode Wait for rest between messages Measure Set or Measure SS Con pulse leaye clear birc 0 next pulse leaye clear birt 1 Adjust remoteCode so that keypad keys correspond to the value SORAS IF remoteCode lt 10
8. per il robot Boe Bot con 1 servo Parallax a rotazione continua Il suo servo sinistro deve essere collegato a P13 ed il suo servo destro collegato a P12 se avete 1 servo PM Parallax usate 500 invece di 650 e 100 al posto di 850 per gli argomenti Duration del comando PULSOUT Sostituite con questo codice mostrato sotto il ciclo Do LooP della routine principale di IrRemoteButtonDisplay bs2 lanciate il programma e guidate il Boe Bot con il vostro telecomando Divertitevi DEBUG CR CR Press and hold digit CR or CH VOL4 keys CR to control the Boe Bot DO GOSUB Get_Ir Remote Code SELECT remoteCode CASE 2 Chup Forward PULSOUT 13 850 PULSOUT 12 650 CASE 4 VolDn Rotate left PULSOUT 13 650 PULSOUT 12 650 CASE 6 VolUp Rotate right PULSOUT 13 850 PULSOUT 12 850 CASE 8 ChDn Backward PULSOUT 13 650 PULSOUT 12 850 CASE 1 Pivot Fwd left Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 177 PULSOUT PULSOT CASE 3 go CASE 7 PULSOUT PULSOT CASE 9 PULSO PULSO CASE EL PULSO PULSO ENDSELECT LOOP Ulteriori Risorse Queste risorse sono disponibili presso www parallax com ULSOUT PULSOL UE L3 UT 12 UT 15 UT L2 UT 13 UT 12 UT 13 UE L2 SE UT 13 UT 12 750 650 850 750 750 850 650 750 750 750 Pivot Fwd right Pivot back left Pivot back right Hold position Lindsay Andy IR Re
9. 0 direction 0 Pagina 144 Controllo Remoto ad IR per il Boe Bot DO UNTIL eeIndex 19 DO DEBUGTOR Cre EOR E Oates BG OR eerie Directions a DEBUGIN direction SEuner OnPeeck ron CASE eae SSA Parva Maley ta O BXL COST PRBUGMCR bnvaiid char ache Tek ENDSELECT LOOP WRITE Maneuver_List eeIndex direction L cdiiLrection YOY THEN EXIT DEHBUCHKOR RE ne SaN ee DEBUGIN DEC distance WRITE Distance List eee tices distance eeIndex eeIndex 1 HOOP DEBUG CR LSBL Operation WPW TRISNI ROUEN Play Back Instructions eeIndex 0 direction 0 DO UNE Wee Ndes OH READ Maneuver List t eerndex direct ion REPADEDIIHANGCSENME EEEE distance iY direction YOW THEN EXIT DEBUG cise C inom DE OSNES OR PAUSE 200 eeIndex eeIndex 1 Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 145 LOOP ELSE DIMES eden eee try again ENDIF DEBUG Dean VE DEBUGIN operation LOOP Il Vostro Turno Passo 6 Adattare le manovre al Boe Bot Potete sostituire il comando PAUSE 200 con una semplice routine per pilotare il Boe Bot Ecco come V Rinominate e salvate con il nome di DebugRecordBoeBotPlayback bs2 Aggiungete questa dichiarazione di variabile nella Sevione Variabili del programma pulseCount VAR Byte Sostituire il comando PAUSE 200 con questo blocco di codice FOR pulseCount 1 TO distance SELECT direction CASE F PULSOUT 13 850 PULSOUT 12 650 CASE B PULSOUT 13 650
10. 10 0 0 PULSIN 9 0 eames Measure store data pulses PULSIN 9 0 time 1 PULSIN 9 0 time 2 PULSIN 9 0 time 3 PULSIN 9 0 cameo PULSIN 9 0 a bilo oo PULSIN 9 0 time 6 PULSIN 9 O E PUGS LN 9 0 time 8 PULSIN 9 0 time 9 PULSIN 9 0 cime 10 PULSIN 9 0 cime 11 HORMEN O Display 12 pulse measurements DEBUEVCRSR O rs ae RARE ene Reais e Ln NEXT LOOP Repeat main loop come funziona RecordAndDisplayPwm bs2 La dichiarazione della variabile time crea un array con dodici elementi word Il programma usa anche una variabile nibble chiamata index time VAR Word 12 index VAR Nib un singolo comando DEBUG con molto testo ed argomenti crea l intestazione delle colonne per le informazioni che devono essere visualizzate DEBUG time ARRAY CR PWM MEASUREMENTS CR Element Duration 2 us CR Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 29 Il blocco di codice in questo ciclo DO LOOP continua a misurare gli impulsi alti positivi fino a trovarne uno maggiore di 2 ms il che significa che deve trattarsi dell intervallo tra gli impulsi del messaggio IR DO PULSTN 9 1 Cimento LOOP UNTIL time 0 gt 1000 Quando il comando PULSIN termina la misura dell impulso di intervallo ed il programma st decidendo cosa fare successivamente il telecomando st inviando l impulso di start Questo il momento giusto per attivare dodici comandi PULSIN di seguito p
11. GOSUB Send Pulse lt Modified If operation is 3 execute the following Boe Bot routine CASE 3 eS New IF IN9 0 THEN operation 1 lt New GOSUB Get_Ir_Distances Calculate proportional outputs pulseLeft SetPoint distanceLeft Kpl CenterPulse pulseRight SetPoint distanceRight Kpr CenterPulse GOSUB Send Pulse ENDSELECT PEN mne SELECT Operation Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 127 OR Repeat Main Routine aa suore cere Oe a Y SONY TV IR remote subroutine loads the remote code into the remoteCode variable Gen ir Remote codes remoteCode 0 Clear all bits in remoteCode DO Wait for rest between messages RG LIME ake Degas LOOR WwW Tie wees OOO PULSIN Treber 0 1 ePulse Measure pulse wE er ioe 3500 THEN rcemoteCoce BrO 1 Ew et lor leave le EE RCTIME LeDet O irPulse Measure next pulse IF irPulse gt 300 THEN remoteCode BIT1I 1 1 Set lor leaye clear birtc 1 EG DEMME DE O ESE ESE iE Leese gt 300 THEN rcemoreCoce BLITZ 1 ROME eee Le LePulse gt 300 THEN eno Code BITI 1 RESUME ADS eine Leer kee gt 300 THEN remoteCoce BLIT4A 1 EGIRIMERtED O O EESE ie LePulse gt 300 THEN rcemorteCoce BITS 1 EBGERIMECIESDe Eee Eee IF irPulse gt 300 THEN remoteCode BIT6 1 Adjust remoteCode so that keypad keys correspond to the value LE SORES IF remoteCode lt 10 THEN remoteCode IF remoteCo
12. IF operation R THEN Routine Record Instructions ELSEIF operation P THEN Routine Play Back Instructions ENDIF LOOP Per supportare questa routine principale dovrete dichiarare un altra variabile di grandezza byte chiamata operation A parte questo il prossimo programma esempio quello che il vostro codice dovrebbe essere dopo le modifiche Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 143 Programma Esempio DebugRecordPlaybackWithMenu bs2 Salvate DebugRecordPlaybackFiltered bs2 come DebugRecordPlayback WithMenu bs2 V Modificatelo in modo che corrisponda a quello seguente V Lanciatelo Usate il Terminale di Debug per verificare che potete digitare R per registrare S K direzioni e distanze e P per eseguirle Verificate anche che qualsiasi altro carattere far visualizzare il messaggio Invalid character try again Salvate il vostro programma U Tiele a ee IR Remote for the Boe Bot DebugRecordPlaybackWithMenu bs2 Use the Debug Terminal to select between record and playback modes STAMP BS2 PRASSI _ EEPROM Data 2 Maneuver_ List DATA GS Distance_List DATA 35 ico l e eS Ia aana direction VAR Byte distance VAR Byte eeIndex VAR Byte operation VAR Byte dea PAMETNO ENS ER LEBUGECISE WR RE COT Ge a CRE TREE back CR Choose operation DEBUGIN operation DEBUG CR IEP OPERE WRW THEN Routine Record Instructions eeIndex
13. Il Vostro Turno Fare Copie di Backup delle Vostre Applicazioni Userete e riuserete 1 programmi applicativi che avete sviluppato dalla Attivit 2 alla Attivit 4 Create una cartella separata per i vostri programmi applicativi Fate copie di backup di IrRemoteButtons bs2 7BitRemoteBoeBot bs2 e IrRemoteKeypad bs2 ATTIVIT 5 DIREZIONE E DISTANZA DEL BOE BOT A TASTIERA In questa attivit programmerete il Boe Bot per ricevere le informazioni di direzione e distanza da un telecomando remoto ad infrarossi ecco come funzioner il programma e Premere rilasciare un tasto CH o VOL per selezionare una di quattro manovre avanti indietro ruota a destra ruota a sinistra e Poi usate la tastiera per inserire il numero di impulsi da inviare e Quando viene premuto rilasciato il tasto ENTER il Boe Bot esegue le manovre Scrivendo una routine principale per il Boe Bot main routine per IrRemoteKeypad bs2 potrete fare uso dei codici di questi tasti o della funzione di inerimento con la tastiera Questo porter alla scrittura di una routine principale che vi permette di scegliere la direzione con 1 tasti CH e VOL quindi inserire un numero di impulsi con la tastiera molto pi semplice nello sviluppo Dovrete chiamare la subroutine Get_Ir_Remote_Code per attivare i tasti CH VOL per la direzione Dopo di ch potrete chiamare la subroutine Get_Multi Digit_Value per ottenere il numero degli impulsi Programma Esempio KeypadDire
14. RETURN Capitolo 2 Creare ed usare Applicazioni Remote Pagina 73 Come Funziona 7BitRemoteBoeBot bs2 La dichiarazione SELECT CASE all interno del ciclo Do Loop della routine principale perfetto per inviare comandi PULSOUT in base al valore della variabile remoteCode GOSUB Get_Ir Remote Code SELECT remoteCode CASE 2 Chup Forward PULSOUT 13 850 PULSOUT 12 650 CASE 4 VolDn Rotate Left PULSOUT 13 650 PULSOUT 12 650 CASE ELSE Hold Position PULSOUT 13 750 PULSOUT 12 750 ENDSELECT Notare che le dichiarazioni CASE stanno usando costanti come ChUp e VolDn dal modello della sezione di dichiarazione delle costanti di IrRemoteButtons bs2 iniziano COS a eS I SEZ a ZZZ ZE a ad E REA ZZZ SONY TV IR remote constants for non keypad buttons Enter CON de ChUp CON 16 ChDn CON bai VolUp CON 18 VolDn CON 19 Power CON 21 Il Vostro Turno Aggiungere il tasto POWER Potete sfruttare il pulsante Power come interruttore di funzionalit del Boe Bot In altre parole se il pulsante Power viene premuto il Boe Bot pu essere programmato per cessare di rispondere ai comandi del telecomando In questo esempio il pulsante Reset sulla Board of Education deve essere premuto e rilasciato per far ripartire il programma Nella vostra versione modificata di 7BitRemoteBoeBot bs2 inserite una dichiarazione CASE per il pulsante POWER con un comando END y Provatelo e se necessario risolvete i problemi
15. Select message to display CASE 0 TO 9 DEBUG DEC remoteCode CASE Enter DEBUG ENTER CASE ChUp DEBUGS ORS CASE CADA DEBWG Ghee CASE VoLUp DEBUG wy ONTA CASE VolDn DEBUG VOn CASE Mute DEBUG MUTE CASE Power DEBUG POWER CASE Tvlaste DEBUG LAS CASE ELSE DEBUG DEC remoteCode unrecognized ENDSELECT LOOP PS Repeat main DOs s LOOP MESSO E e o e a S a O Y SONY TV IR remote subroutine loads the remote code into the remoteCode variable Get_Ir_Remote_Code remoteCode 0 SELECT SSTAMP CASE BS2 BS2E BS2PE DO Y Wait for end of resting stace RCTIMNE LrDet l irPulge LOOP UNTILIO ircrPuLlse gt Thresholastarct PURSE DE O A EESE Get data pulses IF irPulse gt ThresholdPulse THEN remoteCode BITO 1 BC LIME LrDet 0 irPuLlse IF irPulse gt ThresholdEdge THEN remoteCode BIT1l 1 RCTIME LrDet 0 irPuLlse IF irPulse gt ThresholdEdge THEN remoteCode BIT2 1 RGREEME ED 0 irPulsge IF irPulse gt ThresholdEdge THEN remoteCode BIT3 i RCTIME Peete O irPuLlse IF irPulse gt ThresholdEdge THEN remoteCode BIT4 1 RC VIER abet 0 irPulse Pagina 174 Controllo Remoto ad IR per il Boe Bot THEN remoteCode BIT5 I IF irPulse gt ThresholdEdge RCTIME LrDet 0 ike ues IF irPulse gt ThresholdEdge CASE BS2SX BS2P DO i PAS bh eis Webs e008 easier uke HOOP UNTIL teribse Tires hors tars THEN remoteCode BIT6 I Wart fror start pulse
16. THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0 RETURN Pagina 90 Infrarossi per il Controllo a Distanza del Boe Bot IT eee eva Lei up to 65535 and store 1c Lim the value variable Speaker beeps each time a key is pressed Get_Multi Digit Values value 0 remoteCode 0 DO value value 10 remoteCode DO GOSUB Geb Tr Remote Code IF remoteCode lt 10 THEN DEBUG You pressed DECI remoteCode CR GOSUB Beep_Valid EXIT ELSEIF remoteCode Enter THEN DEBUG You pressed ENTER CR GOSUB Beep_Valid EXIT ELSE DEBUG sO SRO RENFER SCR SGroWise lie on iWdieseone ENDIF LOOP LOOP UNTIL remoteCode Enter RETURN Mi ae DE ROTE e cnOn ats tba S ig ASS IS IS IS SS ah SP Call this subroutine to acknowledge a key press Beep_Valid BEREQOUT Speaker LOO 3500 PAUSE 200 RETURN n l Subroutine see epalrork o rr gt gt W Call this subroutine to reject a key press be ope FREQOUT Speaker 100 3000 Capitolo 2 Creare ed usare Applicazioni Remote Pagina 91 PAUSE 200 RETURN Come Funziona KeypadDirectionDistance bs2 A IrRemoteKeypad bs2 devono essere aggiunte due variabili una per la memorizzazione della direzione del Boe Bot e l altra per contare il numero di impulsi di un ciclo FOR NEXT Boe Bot navigation variables direction VAR Byte counter VAR Byte Il primo comando interno al ciclo DO LOOP un comando DEBUG che
17. Title IR Remote for the Boe Bot 7BitRemoteBoeBot bs2 With an IR remote conkiguracd tOo control a SONY TYV pOint the remote at the Boe Bot and press and hold the 1 9 keys for different maneuvers You can also use CH and VOL SSTAMP BS2 TCSP BAS ITONA OG cas TESS A re Gag NA e LES a aa a a a a aaah oe U SONY TV IR remote declaration input receives from IR detector IrDet PIN 9 i E Comando SONY TV IR remote constants for non keypad buttons Enter CON LI ChUp CON 16 Capitolo 2 Creare ed usare Applicazioni Remote Pagina 71 Chpn CON L7 VolUp CON 18 VolDn CON 19 Power CON ZA rimini NESS root i io SONNE ARV LE a etiiieie a OSS irPulse VAR Word remoteCode VAR Byte a Peter beato DEBUG Press and hold a key PRE OO Wd 4 2000 3000 e Moro bia ah rene e eet Boe Bot DUP on COnmerods robe DO oto O Sarei since Ss mouse Call subroutine that loads the IR message value into the remoteCode variable GOSUB Get Dre Remote Code the value of the remoteCode variable SELECT remoteCode CASE 2 Chn p AOU SOMME StS ESO EUS CU kz es SSO CASERA Vorb IPAQ HE Re 650 RUPS Oris CASE 6 Vol p ROBE SHO OMe HO PADIS OIU Ee aL revel CASH 87 CNDA BUS Uil Ae 00 RUSSO 450 CESTI ITS O UR Miles ees RUTSOVME 450 CASEROS PS OU Ae ISO EMS OMe aise ao CASER Send PULSOUT durations for the various maneuver
18. decodificarli significa convertire una serie di misura delle durate di impulsi in un singolo valore che 1l vostro programma PBASIC possa usare per prendere decisioni Decodificare a convertire come nel caso di un messaggio codificato in una forma intelleggibile b riconoscere ed interpretare un segnale elettronico Fonte Dizionario OnLine Merriam Webster www merriam webster com In questa attivit scriverete proggrammi che decodificano i messaggi PWM inviati dal telecomando infrarosso Indagherete anche le relazioni tra questi valori decodificati ed 1 tasti sul telecomando Se esiste una relazione ci faciliter la realizzazione dei programmi per telecomando Se pi facile scrivere un programma per un applicazione remota sarete in grado di scrivete con meno lavoro applicazioni per il Boe Bot pi potenti Contare in Binario e Contare in Decimale Ecco come si conta fino a 20 con 1 numeri binari Binario 0 1 10 11 100 101 110 111 1000 1001 1010 1011 Decimale 0 1 2 3 4 5 6 7 8 9 10 11 Pagina 48 Infrarossi per il Controllo a Distanza del Boe Bot Binario 1100 1101 1110 1111 10000 10001 10010 10011 10100 Decimale 12 13 14 15 16 17 18 19 20 Notare che ci vogliono per contare fino a 15 quattro bit o meno mentre per contare fino a 20 sia necessario un quinto bit Nella numerazione binaria le cifre vengono normalmente chiamate bit Laddove una cifra puo essere da 0 a 9 nella nnumerazione decimale un bit n
19. gt 500 AND time 0 lt 500 AND time 0 gt 500 AND time 0 lt 500 AND time 0 gt 500 THEN THEN THEN THEN THEN THEN THEN Avere familiarit con il blocco di codice precedente torner utile per approfondire la tecnica di conteggio in binario che studieremo nel prossimo Capitolo Quest un altra dichiarazione IF THEN che potete usare e che esegue le stesse funzioni in modo pi efficiente Mentre le dichiarazioni IF THEN con tre argomenti possono dover controllare il valore della variabile time 2 fino a otto volte questa non controlla mai la variabile pi di due volte IF time 2 lt 500 THEN IF time 1 lt 500 AND time 0 lt 500 THEN PULSOUT 13 750 PULSOUT 12 650 ELSEIF time 1 lt 500 AND time 0 gt 500 THEN ENDIF ELSEIF time 2 gt 500 THEN IF time 1 lt 500 AND time 0 lt 500 THEN PULSOUT 13 750 PULSOUT 12 750 ELSEIF time 1 lt 500 AND time 0 gt 500 THEN Pagina 38 Infrarossi per il Controllo a Distanza del Boe Bot ENDIF ENDIF La prossima modifica che deve essere fatta molto pi subdola e la ragione per il cambiamento non necessariamente cos ovvia Per prima cosa ecco la modifica che deve essere fatta Cambiare il comando PULSIN in un ciclo DO LOOP che scansiona l intervallo tra gli impulsi da questo DO PULSIN 9 1 time 0 LOOP UNTIL time 0 gt 1000 Ad un comando RCTIME Quando avete terminato le modifiche dovrebbe
20. osservando come stato sostituito pulseRight 850 con pulseRight 750 speed Quando speed piccolo la ruota destra gira molto lentamente in senso antiorario e quando speed prossima a 100 essa gira in senso antiorario alla massima velocit Programma Esempio IrRoamingWithSpeedControl bs2 Questo programma esempio una versione modificata di FastIrRoaming bs2 da Robotica con il Boe Bot Capitolo 7 Attivit 5 1 commenti nel listato del programma vi mostreranno quali righe dovrete aggiungere o cambiare per completare le modifiche Prima di lanciare IrRoamingWithSpeedControl bs2 il Terminale di Debug vi richieder di digitare una velocit tra 0 e 100 Dopo che avete inserito la velocit desiderata 11 Boe Bot navigher a quella percentuale della velocit massima V Digitate e lanciate IrRoamingWithSpeedControl bs2 y Quando lanciate il programma il Terminale di Debug vi richieder la percentuale della velocit massima a cui volete che il vostro Boe Bot navighi Digitate la velocit desiderata nella Finestra di Trasmissione del Terminale di Debug Per un ripasso su come usare la Finestra di Trasmissione del Terminale di Debug vedere la Figura 1 12 a pagina 22 Provate a lanciare il programma alcune volte ogni volta selezionando una differente percentuale della velocit massima IR Remote for the Boe Bot IrRoamingWithSpeedControl bs2 Higher performance IR object detection assisted navigation The
21. pressione di tasti che istruiscono il Boe Bot ad andare in avanti per 40 impulsi ruotare a sinistra per 20 impulsi ruotare a destra per altri 20 impulsi quindi andare indietro per 40 impulsi e POWER per inizializzare la programmazione e CH 40 ENTER per 40 impulsi in marcia avanti e VOL 20 ENTER per 20 impulsi di rotazione a sinistra e VOL 20 ENTER per 20 impulsi di rotazione a destra e CH 40 ENTER per 40 impulsi di marcia indietro e ENTER unaseconda volta esce dalla modalit di programmazione e ENTER unaterza volta f eseguire le manovre al Boe Bot e ENTER di nuovo f ripetere al Boe Bot la sequenza delle manovre e POWER per programmare una nuova sequenza di manovre Che cosa una interfaccia utente Si inizia dai pulsanti It starts with the buttons dischi combinatori display e sistemi di men che usate per indicare alle macchine alle applicazioni ed ai programmi per computer che cosa volete che facciano Probabilmente l aspetto pi importante di ogni interfaccia utente il comportamento in risposta alla pressione del vostro pulsante rotazione del disco combinatorio etc Se l interfaccia utente di un dato prodotto difficile da apprendere o non sensata otterr rapidamente una cattiva reputazione e la gente non lo vorr comprare L interfaccia utente spesso abbreviata in UI dall inglese User Interface La parte stimolante nello scrivere codice per l interfaccia utente UI assicurarsi
22. speed CR DEBUG Romani 4 CR Press any key to CR interrupt roaming CR CR PAUSE 250 Pause for debounce ENDIF FREQOUT 8 1 38500 Check IR Detectors irDetectLeft IN9 FREQOUT 2 1 38500 irDetectRight INO Decide how to navigate IF irDetectLeft 0 AND irDetectRight 0 THEN PULSOUT 13 750 speed Backward PULSOUT 12 750 speed ELSEIF irDetectLeft 0 THEN PULSOUT 13 750 speed Rotate right PULSOUT 12 750 speed ELSEIF irDetectRight 0 THEN PULSOUT 13 750 speed Rotate left PULSOUT 12 750 speed ELSE PULSOUT 13 750 speed Forward PULSOUT 12 750 speed ENDIF PAUSE 15 Between servo pulses LOOP Repeat main routine Salvate e lanciate il vosto programma modificato Per interrompere la navigazione del Boe Bot puntategli il telecomando e premete un pulsante qualsiasi Il Boe Bot emetter due beep per indicare che ha N amp Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 113 ricevuto il segnale Assicuratevi di rilasciare il pulsante che avete premuto non appena udite 1 beep y Usate la tastiera numerica del telecomando per digitare il nuovo valore percentuale dlla velocit da 0 a 100 Premete il pulsante ENTER per far riprendere al Boe Bot la sua navigazione con la nuova velocit Come Funziona RoamingWithRemoteSpeedControl bs2 Normalmente durante la rivelazione IR un comando FREQOUT f emettere al LED IR dei lampi di infrarossi alla
23. tutte le reispettive durate Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 25 e Continuate ad eseguire il comando PULSIN fino a che non viene rilevato l intervallo tra gli impulsi e Usate altri dodici comandi PULSIN per acquisire i successivi dodici impulsi di dati e memorizzarli in un array di variabili word e Opzionale usate un ciclo FOR NEXT per visualizzare gli elementi dell array La Figura 1 13 mostra la dichiarazione della variabile array time VAR Word 12 La dichiarazione crea dodici diverse variabili word ciascuna delle quali pu memorizzare il proprio valore Nel caso della dichiarazione dell array di variabile time esistono time 0 time 1 time 2 e cos via fino a time 11 Ciascuno degli elementi dell array time pu memorizzare un valore diverso tra 0 e 65535 time VAR Word 12 Figura 1 13 Dodici variabili Elementi chiamate time nell array di ciascuna delle quali pu memorizzare un diverso valore word variabili time S g 0000000 0000 O 3 3 LL Vv DN UI0DSWWN ro E O pra L per L 4 ka 4 Ll 4 L 1 L dans Ll ps L 4 Lc pa ka f L 4 L SZ I AnA AMDn 3 Pagina 26 Infrarossi per il Controllo a Distanza del Boe Bot Il prossimo pProgramma Esempionon user un ciclo per impostare il valore di ciascun elemento dell array time A causa del fatto che il tempo tra gli impulsi invia
24. 1 Comunicazione a Distanza con Infrarossi 1 INIZIare sassate aaa 1 Contenomdel Ki coca a E T E 2 In che Modo il Telecomando invia Messaggi 5 Attivit 1 Configurazione del Vostro Telecomando 7 Attivit 2 Caratterizzazione dei Messaggi IR 9 Attivit 3 Ricezione dei Messaggi IR 21 Attivit 4 Navigazione Base del Boe Bot con Telecomando IR 31 Attivit 5 Aggiungere Prestazioni al Vs Semplice IR Boe Bot 35 SOMMA era illa de 42 Capitolo 2 Creare ed Usare Applicazioni Telecomandate 44 Programm RUSADE ae lalla 44 Attivit 1 Interpretazione dei Messaggi IR 44 Attivit 2 Progettare un Programma Telecomandato Riusabile 44 Attivit 3 Collaudo dell Applicazione per la Navigazione del Boe Bot 44 Attivit 4 Inserimento di Grandi Numeri con la Tastiera 44 Attivit 5 Tastiera del Boe Bot Direzione e Distanza 44 SOMMO placcati iii 44 Capitolo 3 Ulteriori Applicazioni con Telecomando IR 44 Espandere i Programmi Applicativi 44 Attivit 1 Navigazione Autonoma con Controllo di Velocit Telecomandato 44 Attivit 2 Boe Bot M
25. 1 RCTIME ke Debs 0 Rude i eter ise gt 300 THEN rcemoteCoce BITA 1 RETIME leet O EENES E IF irPulse gt 300 THEN remoteCode BIT5 1 Rei Mieke O Eee he LePuLse SERENE motto des BITO 1 pulse leaye celear bit 0 next pulse leaye clear bict 1 Adjust remoteCode so that keypad keys correspond to the value NT te sie sat Capitolo 2 Creare ed usare Applicazioni Remote Pagina 83 IF remoteCode lt 10 THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0 RETURN ea Scocca a A TE a aa a a a a a ES Acquire multi digit value up tO 65935 anc store irt in the value variable Speaker beeps each time a key is pressed Get Multi Digit_Value value 0 remoteCode 0 DO value value 10 remoteCode DO GOSUB Get_Ir Remote Code IF remoteCoce lt 10 THEN DEBUG You pressed DECI remoteCode CR GOSUB Beep_Valid EXIT ELSEIF remoteCode Enter THEN DEBUG You pressed ENTER CR GOSUB Beep_Valid EXIT ELSE BISWA ema atone UC el Qn ENER SR iO Slay Maisie Cr inh ie one ENDIF LOOP LOOP UNTIL remoteCode Enter RETURN Call this subroutine to acknowledge a key press Beep_Valid FREQOUT Speaker 100 3500 PAUSE 200 RETURN Pagina 84 Infrarossi per il Controllo a Distanza del Boe Bot dea Me C ROTEL ENEE O pioneer Call this subroutine to reject a key press BESPENALONE FREOQOUT Speaker L100 3000 PAUSE 200 RETURN
26. Boe Bot Ecco come assemblare il programma Primo ciascuno dei tre programmi che userete per assemblare questo programma pi grande dovranno essere funzionanti e collaudati 7BitRemoteBoeBot bs2 stato sviluppato in questo testo al Capitolo 2 Attivit 3 gli altri due programmi sono stati sviluppati in Robotica con il Boe Bot FastIrRoaming bs2 stato sviluppato nel Capitolo 7 Attivit 5 e FollowingBoeBot bs2 stato sviluppato nel Capitolo 8 Attivit 2 y Caricate lanciate e testate 7BitRemoteBoeBot bs2 Caricate lanciate e testate FastIrRoaming bs2 Caricate lanciate e testate FollowingBoeBot bs2 Quando avete lanciato e verificato che ciascuno dei tre programmi funziona correttamente da solo sarete pronti ad iniziare la loro integrazione y Salvate una copia di 7BitRemoteBoeBot bs2 con il nome di IrMultiBot bs2 Aggiornate il titolo e il commento descrittivo nella sezione Titolo 1 ___ Title IR Remote for the Boe Bot IrMultiBot bs2 Select one of three Boe Bot behaviors with the IR remote 1 3 keys Press POWER key to interrupt the Boe Bot s operation Then press one of these digit keys to select a new mode 1 Control Boe Bot with 1 9 keys and or CH and VOL keys 2 Roam and avoid objects 3 Follow objects Note Startup default is mode 1 SSTAMP BS2 PBASIC 2 5 Troverete utile la direttiva Speaker PIN Aggiungete questa dichiarazione alle
27. CR DO GOSUB Get_Ir Remote Code SELECT remoteCode CASE ChUp TO VolDn Enter GOSUB Beep_Valid EXIT CASE ELSE DaBUG Press Cht VOL Or ENTER CR COSUPRRESPENAAON ENDSELECT Pagina 152 Controllo Remoto ad IR per il Boe Bot LOOP enne nasale emessa WRITE eeIndex Maneuver List direction PE ceiLrecction Enter THEN EXLT DEBUG Enter number of pulses CR GOSUB Get_Multi_Digit_Value DEBUG DEG velue palesi CR CR WRITE elindex Distance List value eeIndex eeIndex 1 LOOP ELSEIF remoteCode Enter THEN Routine playback data GOSUB Beep_ Valid DUD SUE Sein gkigkep any ah ran ORTOR eeIndex 0 direction 0 DO UNTIL eeIndex 19 READ eeIndex Maneuver_List direction READ wecdmcdex Distance sist sree iy cireccion Enter THEN EXIIT HORMONE OE SELECE Greer don CASE ChUp PURSOUL Serv7Oleisi lt 6 20 PULSOUT ServoRight 650 CASEDA PUTSOVMESSnVONe aeS PRUMOVE SEn OR ONS CASE VolUp PUG SOUR kee ee Bere PULSOUT ServoRight 850 CASE VoLDn PWESOU wervrOolern ROS PULSOUT ServoRight 650 ENDSELECT PAUSE 20 NEXT eeIndex eeIndex 1 Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 153 LOOP ELSE GOaUB PE ian BNDICE LOOP plana Ko a e a e a a a a eda Y SONY TV IR remote subroutine loads the remote code into the remoteCode variable Get_Ir_Remote_Code remoteCode 0 Clear all bits in remoteCode DO Wait for rest between messages RETIME Trie
28. Controllo a Distanza del Boe Bot Aggiungendo una condizione alla dichiarazione IF THEN che causi al programma il salto ad una etichetta chiamata Servo_Pulses se remoteCode memorizza il valore della costante Last DO GOSUB Get_Ir_ Remote Code IF remoteCode Last THEN GOSUB Beep_Valid GOTO Servo_Pulses ELSEIF remoteCode lt ChUp OR remoteCode gt VolDn THEN DEBUG Select direction CH VOL CR GOSUB Beep Error ENDIF LOOP UNTIL remoteCode gt ChUp AND remoteCode lt VolDn Aggiungete questa etichetta Servo_Pulses tra i due comandi DEBUG mostrati di seguito DEBUG The value is DEC value CR Servo_Pulses lt Add this label DEBUG RIM ye CR CR Attenzione al Codice Spaghetti Confuso Molti istruttori programmatori di computer direttori di progetto di robot ed altri spesso aggrottano le sopracciglia quando si usa un comando GOTO per saltare ad una etichetta da qualche altra parte del programma La ragione per cui vengono chiamati codice spaghetti data dalla difficolt che si incontra cercando di trovare un errore in un programma con troppi comandi GOTO Capire come funziona il programma diventa come seguire visualmente un singolo spaghetto dentro un piatto Un modo di implementare il tasto LAST con codice non spaghetti di spostare il blocco di codice che invia impulsi ai servo in una subroutine In questo modo si pu usare un comando a GosuB al posto di un comando GoTo I comandi Go
29. IR Remote for the Boe Bot 3BitRemoteBoeBot bs2 I Control your Boe Bot wrth keys 1 8 on a remote set CO control a SONY FV FSSTAMP BS2 1f SPBASIC 2 5 time VAR Word 3 ESON eno EREQOUT 4 2000 3000 Start reset indicator DEBUG resse shold oE e DO Beginning of main Loop DO Wait for rest between messages ROTTE ele ENO LOOR UNTIG am MORO PULSIN 9 0 time 0 Measure store data pulses BUMS Mey O ae PULSIN 9 0 cime 2 Decide which maneuver to execute depending on the combination of pulse durations stored in the first three pulse measurements ir time 2 lt 500 AND time 1 lt 500 AND time 0 lt 500 THEN PULSOUT 13 750 PISO MIE 46570 BLSELE time 2 lt 500 AND Games lt 500 AND cime 0 gt 500 TEISEN pULSOUT 13 850 RUSOV SO aoe time 2 lt 500 AND time gt 500 AND t ime 0 lt 500 TESNI BUTS OUME ESO PULSOULT 12 750 ELSEIF time 2 lt 500 AND time 1 gt 500 AND time 0 gt 500 THEN PULSOUT 13 650 PUMSOUD 27 6 530 EARS eel cme time 2 gt 500 AND edo CONIATO 500 TEIEN pPULSOUT L13 750 PUL SOU O SAS time 2 gt 500 AND time lt 500 ND cime 0 gt 500 TEISNI BAUME SGU GES Icy SO PULSOUL 12 850 ELSEIF time 2 gt 500 AND time 1 gt 500 AND ctime 0 lt 500 TEISENI PU SOU 50 PULDSOUD 12 850 BLSE time 2 gt 500 AND time 1 gt 500 AND cime 0 gt 500 TEISENI Capitolo 1 Comunicazione a Distanza con gli Inf
30. Il primo impulso l impulso di start e dura 2 4 ms I dodici impulsi successivi potranno durare sia 1 2 ms binario 1 che 0 6 ms binario 0 I primi sette impulsi dei dati contengono il messaggio IR circa quale tasto stato premuto Gli ultimi cinque impulsi contengono un valore binario che specifica a quale periferica TV VCR CD DVD destinato il messaggio Gli impulsi vengono trasmessi nell ordine LSB il che significa il bit meno significativo verr trasmesso per primo cio il primo impulso sar bit 0 l impulso successivo sara bit Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 7 a l e cos via Se premete e mantenete premuto un tasto del telecomando lo stesso messaggio verr trasmesso in continuazione con una pausa di 20 30 ms tra i messaggi Figura 1 4 Diagramma di Temporizzazione di un Messaggio IR Resting state Resting states between message between data pulses packets 20 30 ms 0 6 ms t Start JO JO JO JO JO 111101111 JO Of O JO La Ra Ly La La luna Bit 1 Bit 3 Bit 5 Bit 7 Bit 9 Bit 11 I Start pulse Binary 0 Binary 1 duration 2 4 ms data pulse data pulse durations 0 6 ms durations 1 2 ms In questo Capitolo inizierete con programmi semplici per far interpretare al vostro modulo BASIC Stamp 2 l insieme degli impulsi inviati dal telecomando e farlo agire di conseguenza Espanderete quindi questi programmi per guidare il Boe Bot con il telecomando ad infr
31. PULGIN IEDet OCES E Get data pulses iv LePulse gt ThresholcPulse TREN cemoceCocde BITO 1 PULSIN tebe 0 iris IF irPulse gt ThresholdPulse THEN remoteCode BIT1 1 PUN ADS aO CESS IF irPulse gt ThresholdPulse THEN remoteCode BIT2 1 BRUIS TNEE De a ESS IF irPulse gt ThresholdPulse THEN remoteCode BIT3 1 BULLS IN IrDet 0 irpPuLlse ie RE gt ThresholeoPulse THEN remocteCode BITA 1 BUESTINW Ebers IP LePulse gt ThresholcPlulse THEN cemoceCode BITS 1 PULSIN sleek 0 irPulLlse i LePuLlse gt ThresholcPulse TREN rcemoctceCocde BITO 1 CASE ELSE ERROR BASIC Stamp version ENDSELECT Now Supported by Chis program i Map cigit keys tO actual values IF remoteCode lt 10 THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0 RETURN Serie BASIC Stamp 2 Esempio Applicazione Multi Cifra Potete usare la tastiera del telecomando per l immissione di valori sostituendo il ciclo DO LOOP nella routine principale di IrRemoteButtonDisplay bs2 con quella mostrata sotto Funziona per valori da 0 a 65535 digitate il valore sulla tastiera quindi premete 11 tasto ENTER del telecomando Aggiungete questa dichiarazione ad IrRemoteButtonDisplay bs2 nella sezione Variabili value VAR Word Stores multi digit value Sostituite con il programma mostrato sotto il ciclo Do LooP nella routine principale di IrRemoteButtonDisplay bs2 Lanciate il programma e seguite le richi
32. Programma Esempio IrRemoteButtons bs2 V Digitate salvate e lanciate IrRemoteButtons bs2 Premere e rilasciare ciascun tasto sul telecomando e verificate che venga visualizzata la cifra corretta Provate i tasti ENTER CH CH VOL VOL e POWER Verificare che i valori visualizzati coincidano con le direttive con del programma Vi converr salvare molte copie di questo file per poi modificare queste copie per effettuare una variet di funzioni diverse con il Boe Bot Assicuratevi di salvare questo programma con il nome IrRemoteButtons bs2 Questo un esempio di slavataggio e modifica di una copia di IrRemoteButtons bs2 Usate il comando File gt Save As per salvare una copia di questo programma Usate il nome TestIrRemoteButtons bs2 Sostituite la routine main esistente con questo blocco di codice DO GOSUB Get_Ir_ Remote Code DEBUG CLS Remote code SELECT remoteCode CASE 0 TO 9 DEBUG DEC remoteCode CASE Enter DEBUG ENTER CASE ChUp DEBUG CH Capitolo 2 Creare ed usare Applicazioni Remote Pagina 63 CASE ChDn DEBUG CH CASE VolUp DEBUG VOL CASE VolDn DEBUG VOL CASE Power DEBUG POWER CASE ELSE DEBUG DEC remoteCode unrecognized ENDSELECT DEBUG CLREOL LOOP y Lanciate TestIrRemoteButtons bs2 e provate i tasti del telecomando cos come gli altri tasti elencati nella sezione dichiarazione delle costanti Provate i tasti SLEEP MUTE e LAST che cosa succe
33. Remote Code IF remoteCode lt 10 THEN DEBUG You pressed DECI remoteCode CR GOSUB Beep_Valid EXIT ELSEIF remoteCode Enter THEN DEBUG You pressed ENTER CR GOSUB Beep_Valid EXIT ELSE DEBUG Press 0 9 or ENTER CR GOSUB Beep_Error ENDIF LOOP LOOP UNTIL remoteCode Enter DEBUG CR The value is DEC value CR CR LOOP Aggiungete queste due subroutine alla fine del vostro programma rr RES POUG Iie Seca Call this subroutine to acknowledge a key press Beep_Valid FREQOUT Speaker 100 3500 PAUSE 200 RETURN ica UD LOUL Ine Benetti SSS SS e Call this subroutine to reject a key press Beep_Error FREQOUT Speaker 100 3000 PAUSE 200 RETURN Pagina 79 Pagina 80 Infrarossi per il Controllo a Distanza del Boe Bot N N Provate questa soluzione e verificate che funzioni Salvate il vostro lavoro Aggiungere la funzione di Inserimento da Tastiera per la vostra Applicazione Copiando la parte funzionale di EnterLargeValues bs2 in una subroutine di IrRemoteButtons bs2 avrete un nuovo programma applicativo che potr sia leggere la presssione di un singolo tasto da un telecomando remoto che l acquisizione di valori grandi tramite la tastiera Quale funzione verr eseguita dipende da quale subroutine viene chiamata Programma Esempio IrRemoteKeypad bs2 N N N Aprire EnterLargeValuesYourTurn bs2 e salvare in IrRemoteKeypad bs2 Aggiungere una subroutine chia
34. Rimuovere il ciclo FOR NEXT che visualizza la durata degli impulsi Usate le informazioni degli impulsi nella Table 1 1 per creare le dichiaraioni IF THEN che scelgono gli argomenti Duration di PULSOUT per una manovra basata su quattro possibili combinazioni di valori che time 0 e time 1 possono memorizzare C_ lt _ Fe e Tornate alla Table 1 1 e date un occhiata alle misure memorizzate nell array time per 1 tasti da 1 a 4 Osservando time 1 e time 0 Se confrontate le misure degli impulsi a 500 esistono solamente quattro possibili combinazioni 1 Sia time 1 che time 0 sono minori di 500 2 time 1 minore di 500 ma time 0 maggiore di 500 3 time 1 maggiore di 500 ma time 0 minore di 500 4 Sia time 1 che time 0 sono maggiori di 500 Queste decisamente sono informazioni sufficienti per scrivere una dichiarazione IF THEN simile a quelle che guidavano il Boe Bot con la navigazione tattile e con gli infrarossi IF time 1 lt 500 AND time 0 lt 500 THEN PULSOUT 13 850 PULSOUT 12 1650 ELSEIF time 1 lt 500 AND time 0 gt 500 THEN PULSOUT 13 650 PULSOUT 12 850 ELSEIF time 1 gt 500 AND time 0 lt 500 THEN PULSOUT 13 850 PULSOUT 12 850 ELSEIF time 1 gt 500 AND time 0 gt 500 THEN PULSOUT 13 650 PULSOUT 12 650 ENDIF Programma Esempio 2BitRemoteBoeBot bs2 Potete premere e mantenere premuto i tasti 1 2 3 o 4 per selezionare una di quattr
35. che non confonda la persona che usa il telecomando Questo un elenco di funzioni che il Pagina 132 Controllo Remoto ad IR per il Boe Bot programma dovrebbe avere per rendere il vostro Boe Bot pi semplice da programmare con un telecomando e Riconoscere e scartare le pressioni scorrette dei tasti e Uscire dalla modalit di programmazione se viene premuto due volte di seguito il tasto ENTER e Uscire dalla modalit di programmazione senza richiedere il numero degli impulsi e Permettere all utente di ripetere molte volte la sequenza di movimenti e Ricordare il movimento pi recente anche se viene tolta l alimentazione e poi ridata Questo un altro progetto che dovrebbe essere suddiviso in un processo passo passo La maggior parte del lavoro di sviluppo verr effettuato con l aiuto del Terminale di Debug Dopo che la funzionalit del programma stata provata con il Terminale di Debug adattarlo alla maschera per il controllo con telecomando ad infrarossi dovrebbe essere relativamente semplice Passo 1 Usate il comando READ per recuperare e visualizzare 1 valori che erano stati memorizzati nella EEPROM in fase di compilazione con la dichiarazione DATA Passo 2 Uscire da una routine senza richiedere ulteriori informazioni quando viene ricevuto un carattere di terminazione Passo 3 Memorizzare valori nella EEPROM durante la fase di funzionamento con il comando WRITE quindi recuperarli e visualizzarli Pa
36. ciascun CASE il valore memorizzato in remoteCode SELECT CASE anche molto adatto per la navigazione del Boe Bot Invece dei comandi DEBUG ciascuna dichiarazione CASE pu contenere blocchi di codice che inviano impulsi per manovre differenti del Boe Bot questo pu essere messo in evidenza ripetendo le funzionalit di 4BitRemoteBoeBot bs2 dal Capitolo 1 Attivit 5 La differenza questa volta che sar estremamente facile scrivere ed anche di pi modificare ed espandere Capitolo 2 Creare ed usare Applicazioni Remote Pagina 69 Tutto quello che dovete fare con il prossimo programma esempio aprire il programma IrRemoteButtons bs2 salvarlo con un nuovo nome e modificare la routine principale Il codice per la lettura del telecomando IR viene inserito in una subroutine quindi potrete dedicarvi alla programmazione del Boe Bot e tutto quello che dovrete sapere il valoro della variabile remoteCode dopo aver chiamato la subroutine Get_Ir_Remote_Code Programma Esempio 7BitRemoteBoeBot bs2 Questo esempio vi mette a disposizione tutti 1 tasti numerici di 4BitRemoteBoeBot bs2 dal Capitolo 1 Attivit 5 pi i tasti CH e VOL del Capitolo 1 Attivit 4 Aprite IrRemoteButtons bs2 e salvatelo con il nome 7BitRemoteBoeBot bs2 Aggiungete una sezione di inizializzazione subito prima della routine principale i ese Apice bio lecci DEBUG Press and hold a key 1 9 or CH VOL FREQOUT 4 2000 3000 Start
37. comando PULSIN che misura impulsi positivi per fargli misurare impulsi negativi 6 Ci sono diverse durate di impulsi bassi trasmesse dal telecomandi ad infrarossi e ciascuna di esse ha il suo significato In che modo potete programmare il BASIC Stamp per filtrare solo una durata particolare e scartare le altre 7 Che cosa dura pi a lungo il messaggio del telecomando IR o l intervallo tra messaggi Nota la vostra risposta pu essere corretta per il controllo di TV SONY ma pu essere differente per altri protocolli 8 che genere di variabile funziona meglio per memorizzare misure successive di durate di impulsi Come dichiarate questa variabile 9 In base alla durata degli impulsi come fattore per prendere decisioni quali valori di soglia sono stati usati per operare delle scelte Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 43 Esercizi 1 Dichiarare un array grande abbastanza per contenere una stringa di otto caratteri 2 Spiegate quale sarebbe la differenza con la Figura 1 14 a pagina 27 se fosse stato premuto e mantenuto premuto il tasto 4 invece del tasto 5 Progetti 1 Scrivete un programma che somma tutti gli impulsi IR e visualizza la durata di un messaggio IR in microsecond Suggerimento iniziate per prima cosa da RecordAndDisplayPwm bs2 annotando e sommando tutti gli impulsi dei dati Quindi filtrate acquisite e sommate gli intervalli tra messaggi l intervallo tra impulsi moltiplicati per do
38. degli impulsi sono 1 binario o 0 binario Dichiarazioni IF THEN seguono ciascuna di queste misure degli impulsi per abilitare o disabilitare da remoteCode BIT1 a remoteCode BIT6 basandosi su questo valore di 300 Programma Esempio PulsesToByteValue bs2 Questo programma illustra 1 concetti che sono stati spiegati fino ad ora decodificando il messaggio PWM del telecomando e visualizzandolo come valore decimale Ogni volta che vorrete sapere qual il codice per uno dei tasti del telecomando potrete usare questo programma Quando conoscete qual il codice di ogni tasto del telecomando scrivere programmi che fanno agire il Boe Bot in base ai messaggi PWM ricevuti usando IF THEN SELECT CASE diviene molto pi facile Digitate e lanciate PulsesToByteValue bs2 Premere 1 vari tasti del telecomando e trovate qual 11 valore decimale di ciascuno Testate 1 tasti da 1 a 9 e spiegate la relazione esistente tra il valore decimale visualizzato nel Terminale di Debug ed il valore del numero della tastiera Provate il tasto 0 il valore del tasto zero presenta un problema di programmazione Confrontate la versione binaria della variabile remoteCode visualizzata nel Terminale di Debug con le vostre annotazioni nella Table 1 1 a pagina 31 se un certo bit nella variabile remoteCode 1 la misura corrispondente di time index nella Table 1 1 dovrebbe essere maggiore di 500 se il bit in remoteCode 0 il valore corrispondente nella misur
39. di Sinistra P10 220 Q Red Ya LED Vss Indicatore LED per la Coppia IR di Sinistra Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 103 P2 1kQ IR Ya LED Vss Vdd Figura 3 1 PO Circuiti della 220 Q Rivelazione IR per il Test Vss e la Navigazione Coppia IR di Destra P1 220 Q Red Ya LED Vss Indicatore LED per la Coppia IR di Destra Pagina 104 Controllo Remoto ad IR per il Boe Bot To Servos To Servos Terminale pi Lungo anodo Terminale pi Lungo anodo Figura 3 2 Schemi di Cablaggio dei Circuiti di Rivelazione IR Teste e Navigazione p HomeWork Board XS Board of Education Rev C 2000 2003 REY Passo 2 Testare il programma di Navigazione con la Rilevazione IR di Oggetti Il Capitolo 7 Attivit 5 di Robotica con il Boe Bot presenta una versione ad alte prestazioni della navigazione con gli IR Questo programma controlla per la presenza di un oggetto prima dell invio di ogni impulso ai servo che avviene circa 40 volte al secondo quindi il Boe Bot molto rapido a reagire quando rileva ostacoli In seguito modificherete questo programma quindi andate avanti e rinfrescate la conoscenza del suo funzionamento anche importante assicurarsi che il programma originale funzioni con il vostro circuito prima di effettuare altre modifiche y R
40. dovrebbe suonare due volte Premere rilasciare il tasto 3 Il Boe Bot dovrebbe ora navigare in modalit inseguitore Collaudarlo per assicurarvi che si agganci e segua un oggetto Premere rilasciare il tasto POWER Il Boe Bot dovrebbe suonare due volte Premere rilasciare il tasto 1 Questo dovrebbe far tornare 11 Boe Bot in modalita controllo con telecomando tasti CH VOL e numerici Zon An Pelo ele Title PSS SS AFFRETTATI ATA A ana IR Remote for the Boe Bot IrMultiBot bs2 Select one of three Boe Bot behaviors with the IR remote 1 3 keys Press POWER key to interrupt the Boe Bot s operation Then press one of these digit keys to select a new mode 1I Control Boe Bot with ILS keys and or CH andi VOL keys 2 ROAM anci avoid ODJeEects 3 Follow Objects Note Startup default is mode 1 SSTAMP BS2 SD BAG RCs 2 5 es aos MSC vis Sen nio a aci ciclo SONY TV IR remote declaration input receives from IR detector IrDet PIN 9 Speaker PIN 4 nio lkConsteresdtke cara SONY TV IR remote constants for non keypad buttons Enter CON ILI ChUp CON 16 ChDn CON L7 VolUp CON 18 VolDn CON 19 Pagina 124 Controllo Remoto ad IR per il Boe Bot Power CON 21 BoOe BOot proportional control constants From FollowingBoeBot Dbs2 Kpl CON 35 Kpr CON 35 SetPoint CON 2 CenterPulse CON 7150 sese e eo celiaci ee WESONKETR SERerenot rara dies irPulse VAR Word remoteCode VAR Byte
41. essere simile a questo DO RCTIME 9 1 time 0 LOOP UNTIL time 0 gt 1000 Assicuratevi che tutti i vostri programmi da questo momento in poi usino RCTIME invece di PULSIN per rilevare l intervallo tra messaggi Questa la ragione per cui questa modifica deve essere fatta I comandi PULSIN combinati con le dichiarazioni IF THEN per le decisioni possono impiegare pi a lungo del tempo che impiega il messaggio IR a completarsi Non per il momento il caso ma questo potrebbe cambiare man mano che aggiungete prestazioni Il comando PULSIN deve rilevare sia il fronte di salita che di discesa all inizio ed alla fine dell intervallo mostrato nella Figura 1 17 Non appena i comandi PULSIN combinati con la parte decisionale eccedono il tempo di completamento del messaggio IR il comando PULSIN perder il fronte di salita dell intervallo tra messaggi Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 39 RCTIME Pin 1 Variable Measures from any point on a high signal until it detects its falling edge I N Figura 1 17 Confonto fra Falling edge PULSIN e RCTIME per la Rivelazione dell Intervallo tra Rising edge Messaggi N 7 PULSIN Pin 1 Variable Measures from rising to falling edge Se il comando PULSIN non rivela il fronte di salita dell intervallo il ciclo che cerca un impulso alto continuer a cercare impulsi per trovarne uno maggiore di 1000 Eventualmente magari circa 80 ms pi tardi
42. essere ben organizzati con ciascun compito eseguito in una subroutine Anche 1 piedini I O le variabili e le costanti devono essere definite e documentate nella Sezione Dichiarazioni Quando 1 programmi applicativi seguono queste convenzioni possibile combinare 1 due o pi di questi programmi applicativi per eseguire obbiettivi robotici pi avanzati e complessi Le prime due attivit sono state incentrate su come mescolare ed integrare pi di un programma applicazitivo in un programma pi complesso che esegue pi compiti In ciascuna di queste attivit le subroutine dei vari programmi vengono copiate ed incollate in programmi pi ampi si opera in modo simile con le costanti le variabili ed altre dichiarazioni In base al fatto che 1 programmi applicativi sono scritti in forma modulare non si dovuto modificare nessuna delle subroutine Invece esse sono utilizzate ed orchestrate nella routine principale Affidandosi alla funzionalit delle subroutine la routine principale pu essere scritta in termini pi semplici e che eseguono compiti pi complessi Nelle prime due attivit stata enfatizzato il collaudo dei programmi e dei circuiti che sono stati usati in Robotica con il Boe Bot Si deve esssere sicuri che ciascun programma e circuito funzionino individualmente prima che possano essere combinati in un circuito e o programma pi grande stato presentato SELECT CASE come mezzo di scelta tra opzioni alternative di ro
43. ha sviluppato programmi applicativi con costanti dichiarazione di variabili e subroutine che servono come mattoni che potrete usare in programmi pi grandi Questi programmi applicativi hanno ridotto 1 programmi del capitolo 1 in qualche modo complicati a poche righe nella routine principale dell applicazione Sono state studiate tecniche per la modifica di programmi applicativi esempio e per l uso delle loro funzioni a vantaggio del Boe Bot Gli esempi inclusi usano le costanti con nomi utili nel prendere decisioni il richiamo delle subroutine per acquisire 1 messaggi IR l aggiunta di dichiarazioni delle variabili le direttive PIN e le routine che adattano il programma applicativo per l uso con i servo del Boe Bot Domande l Che cosa significa decodificare un messaggio IR di un telecomando universale 2 Come viene normalmente chiamata una cifra binaria 3 Come potete calcolare il valore che la particolare posizione di un bit rappresenta 4 che cosa significa impostare o azzerare un bit Pagina 98 Infrarossi per il Controllo a Distanza del Boe Bot 5 Come si usa BIT per Impostare o azzerare 1 bit di una variabile 6 Come vengono usate le costanti in IrRemoteButtons bs2 7 Che cosa significa quando si applica la funzione antirimbalzo ad un tasto 8 Perche usereste un altoparlante con un pulsante o con una tastiera Esercizi 1 Contare da 0 a 7 in binario Come deve essere 24 in binario Calcolare il moltiplicato
44. irDetectLeft Pagina 120 Controllo Remoto ad IR per il Boe Bot FREQOUT 2 1 irFrequency irDetectRight INO distanceRight distanceRight irDetectRight NEXT RETURN E Poa OU ne Send PULLS 6 eee Gee rar eee Send_Pulse PULSOUT 13 pulseLeft PULSOUT 12 pulseRight PAUSE 5 RETURN Sostituite la routine di inizializzazione con quella mostrata di seguito Peas Trbraeltazation a a eee ee ae ee 3 DEBUG Press POWER to select CR mode of operation CR CR 1 Remote control 1 9 amp CH VOL CR 2 Autonomous IR roaming CR 3 Object find and follow CR CR FREQOUT Speaker 2000 3000 operation 1 Initialize to remote V Modificate la sezione della routine principale per renderla simile a quella seguente Sebbene possiate abbondantemente prendere in prestito copiare tagliare ed incollare dalle routine principali dei programmi che avete caricato e testato dovrete ancora fare degli aggiustamenti a ciascuna delle dichiarazioni CASE Le righe modificate o nuove avranno commenti come lt Modificato 0 lt Nuovo DO SELECT operation PS NUOVO If operation 1 execute a modified version of 7BitRemoteBoeBot bs2 that also allows you to change the operation variable with the POWER key CASE 1 1 1 lt Nuovo Modified main routine from 7BitRemoteBoeBot bs2 goes here Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 121 GOSUB Get_Ir Remote _ Code Chec
45. lampeggi IR con una pausa tra ciascun impulso di circa mezzo millisecondo Il risultato sono tredici impulsi negativi dal rivelatore IR che il BASIC Stamp pu facilmente misurare Il primo impulso l impluso di start che dura 2 4 ms I successivi dodici impulsi dureranno 1 2 ms 1 binario o 0 6 ms 0 binario I primi sette impulsi dei dati contengono il messaggio IR che indica quale tasto premuto Gli ultimi cinque impulsi contengono un valore binario che specifica se il messaggio deve essere inviato ad un TV VCR CD DVD player etc Gli impulsi sono trasmessi a partire dal bit meno significativo sequenza LSB first quindi il primo impulso dei dati il bit 0 l impulso successivo bit 1 e cos via Se premete e mantenete premuto un tasto sul telecomando lo stesso messaggio verr reinviato dopo una pausa di 20 30 ms Pagina 168 Controllo Remoto ad IR per il Boe Bot Resting state Resting states between message between data pulses packets 20 30 ms 0 6 ms t Start JO JO JO Of JO 1 FOF 1 10 Of O 10 La di Ly a La Foal Bit 1 Bit 3 Bit 5 Bit 7 Bit 9 Bit 11 ji Start pulse Binary 0 Binary 1 duration 2 4 ms data pulse data pulse durations 0 6 ms durations 1 2 ms Diagramma di Temporizzazione IR I valori sono approssimativi e possono variare leggermente da un telecomando all altro Circuito di Rivelazione IR Per le prove tutto ci che serve questo circuito rivelatore IR e
46. lanciate CountRestingStates bs2 Puntate il telecomando verso il rivelatore IR premete e mantenete premuto il tasto 5 Assicuratevi che vengano rilevati impulsi alti nella gamma da 20 a 35 ms 20 000 to 35 000 us y Annotate qui la durata dell intervallo tra messaggi Pagina 18 Infrarossi per il Controllo a Distanza del Boe Bot IR Remote for the Boe Bot CountRestingStates bs2 Capture and count the number of 20 ms high resting states STAMP BS2 EISPEASITORASI time VAR Word counter VAR Word DEBUG RESTING SANER REPGETESONS Current Duracion CR y microseconds er ee Clr DO PULSIN 9 L time IF time gt 1000 THEN CONE ie ei DEBUGECRS RISI DEC counter CRISPI DES Sie ENDIF LOOP Come Funziona CountRestingStates bs2 CountRestingStates bs2 semplicemente CountStartPulses bs2 con alcune modifiche La prima modifica era semplicemente l intestazione nella finestra del Terminale di Debug Il comando DEBUG START PULSES CR stato cambiato in DEBUG RESTING STATE CR Quindi il programma deve cercare impulsi alti della durata da 20 a 35 ms invece di impulsi bassi che durano appena 2 4 ms Per misurare gli impulsi alti invece degli impulsi bassi il comando PULSIN 9 0 time stato cambiato in PULSIN 9 1 time Per misurare durate di 20 35 ms invece di durate di 2 4 ms la condizione del blocco di codice IF ENDIF stata cambiata da IF time gt 975 AND time lt 1425 THEN in I
47. lt Add comments indicate new commands lines of code The lt Change comments indicate lines of code that should be changed STAMP BS2 f SPBASIC 2 5 papers VAR Bit J Variable Declaracions irDetectRight VAR BILE pulseLeft VAR Word pulseRight VAR Word speed VAR Byte PREOOUT 20007 S000 DEBUG CLS Enter percent of CR i Mui spesel 0 10 1007 i DEBUGIN DEC speed i PESTIGRZI ora Ei ong i DO PRM OOU lL oy OO irDetectLeft IN9 ed OOM arn ea irDetectRight INO IF irDetectLeft 0 AND irDetectRight pulseLeft 750 speed pulseRight 750 speed i BESEIE ebetecthert 0 THEN pulseLeft 750 speed pulseRight 750 speed ELSEIF irDetectRight 0 THEN pulseLeft 750 speed i pulseRight 750 speed ELSE pulseLeft 750 speed pulseRight 750 speed i ENDIE PULSOUT 3 pes ehe PULSOUL WZ oul semi ohe PAUSE 23 LOOP Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 107 lt oe TEE Bee DI 0 Add Signal program start reset Add Add Add Add Mata tO mash Check IR Detectors Decide how to navigate THEN Change Change Change Change Change Change Change Change Apply the pulse Repeat main routine Come Funziona IrRoamingWithSpeedControl bs2 Nella sezione Dichiarazioni viene aggiunta una variabile di controllo della velocit La variabile saggiamente chiamata speed speed VAR Byte 1 1 lt Add un c
48. maneuver i CH Forward CH Backward VOL Right VOL Left 2 Type in a cdistance 1 to 255 pulses 3 Press ENTER SSTAMP BS2 1 f SPBASIC 2 5 Se UE zia i e a a ee SONY TV IR remote declaration input receives from IR detector IrDet BANN 9 Speaker PIN 4 Boe Bot Servo Pins pero PIN IS ServoRight PIN L2 e Beet eee E EE I EE I EE IE I SONY TY IR remote constants for non keypad ibuttons Enter CON 11 ChUp CON 16 ChDn CON 17 VolUp CON 18 VolDn CON 19 Power CON Zio dica Yerdiables rsesstesetee eee E SONY hi nobe aes irPulse VAR Word Single digit remote variables remoteCode VAR Byte value VAR Word Stores multi digit value Boe Bot navigation variables Pagina 88 Infrarossi per il Controllo a Distanza del Boe Bot direction VAR Byte Counter VAR Byte U Tn wen elie een DEBUG SEP ARESE y CR CR FREQOUT Speaker 2000 3000 DEBUG Wee CH MONE Onea ORS uchen type cistance up tO Y CR 1255 then press ENTER CR CR dica MMA ROMP Ne t ae aes DO DEBUG Selece Gdireckion Chay Olnt eo CR DO GOSUB Geb Tr Remote Code IF remoteCode lt ChUp OR remoteCode gt VolDn DEBUG Sebecke direckion We A Oli 2s CR Goes cene ENDIE LOOP UNTIL remoteCode gt ChUp AND direction remoteCode GOSUB Beep_Valid DEBUG Vanter number Of pulses CR GOSUB Get_Multi_Digit_Value DEBUG The value iss DEC value CR PE BUG ERIR CNO ORTOR BORROMEI ONE
49. memorizzazione dei dati nella EEPROM durante la fase di Funzionamento In questa attivit espanderete il programma del passo precedente in modo che possiate scrivere nella EEPROM durante la fase di funzionamento Mentre il comando READ estrae un DataItem da una Locazione nella EEPROM il comando WRITE memorizza un DataItem in una Locazione Questa la sintassi del comando WRITE presente nella guida Sintattica dell Editor del BASIC Stamp WRITE Locazione Word Dataltem Word Dataltem Pagina 138 Controllo Remoto ad IR per il Boe Bot Il seguente il ciclo Do LooP che memorizza le istruzioni con i comandi WRITE Aggiungendolo a DebugPlaybackYourTurn bs2 potrete assemblare il vostro elenco di caratteri nella EEPROM durante la fase di funzionamento Routine Record Instructions eeIndex 0 DO UNTIL eeIndex 19 DEBUG CR F B R L Q CR Enter Direction DEBUGIN direction WRITE Maneuver_List eeIndex direction IF direction O THEN DEBUG CR CR EXIT ENDIF DEBUG CR Enter distance DEBUGIN DEC distance WRITE Distance List eeIndex distance eeIndex eeIndex 1 LOOP Questo blocco di codice vi permetter di impostare 1 valori delle variabili direction e distance con la Finestra di Trasmissione del Terminale di Debug Ciascuno di questi valori verr memorizzato nella EEPROM con il comando WRITE nello stesso modo in cui sono stati estratti dalla EEPROM in DebugPlayback bs2 Osservia
50. reset indicator Nella routine principale sostituite il ciclo Do LOoP con questo ciclo DO Call subroutine that loads the IR message value into the remoteCode variable GOSUB Get_Ir_ Remote Code Send PULSOUT durations for the various maneuvers based on the value of the remoteCode variable SELECT remoteCode CASE 2 ChUp Forward PULSOUT 13 850 PULSOUT 12 650 CASE 4 VolDn Rotate Right PULSOUT 13 650 PULSOUT 12 650 CASE 6 VolUp Rotate Left PULSOUT 13 850 PULSOUT 12 850 CASE 8 ChDn Backward PULSOUT 13 650 PULSOUT 12 850 CASE 1 Pivot Fwd left PULSOUT 13 750 PULSOUT 12 650 Pagina 70 Infrarossi per il Controllo a Distanza del Boe Bot CASE 3 Pivot Fwd right PULSOUT 13 850 PULSOUT 12 750 CASE 7 Pivot back left PULSOUT 13 750 PULSOUT 12 850 CASE 9 Pivot back right PULSOUT 13 650 PULSOUT 12 750 CASE ELSE Hold position PULSOUT 13 750 PULSOUT 12 750 ENDSELECT LOOP A seguire c una copia completa del programma y Lanciate e provate il progamma Verificate che i tasti da 1 a 9 funzionano come previsto Provate anche i tasti CH e VOL e verificate che operino correttamente Considerate come questo approccio stato molto pi semplice dell approccio che stato usato nel Capitolo 1 Attivit 4 e 5 Salvate il vostro lavoro salverete anche copie di questo programma per modificarle in seguito Ll 22 L 1
51. ripartito spontaneamente a causa di pile scariche In questa attivit useremo anche il cicalino piezoelettrico per segnalare che il Boe Bot ha rilevato e compreso quando avete premuto un tasto sul telecomando Questo specialmente utile quando digitate valori a cifre multiple sulla tastiera numerica del telecomando Scriverete anche comandi che inviano dtoni differenti ad indicare che stato premuto il tasto sbagliato y Se non lo avete gi fatto aggiungete il circuito altoparlante mostrato in Figura 2 6 nella vostra area prototipale del vostro Boe Bot Capitolo 2 Creare ed usare Applicazioni Remote Pagina 75 P4 D 3 Figura 2 6 ad Altoparlante per l avviso di Tasto Premuto Vss Conversione di Sequenze di Cifre in numeri Decimali Diciamo che volete inviare al Boe Bot un valore molto grande come il valore decimale 635 per inviare questo numero dovrete premere e rilasciare il 6 poi il 3 quindi il 5 per finire con il tasto ENTER Il BASIC Stamp dovr successivamente ricevere ciascuna cifra moltiplicarla per 10 quindi aggiungere l ultima cifra ricevuta Quando viene premuto 11 tasto ENTER viene inviato il valore 11 che significa che la la routine moltiplica per dieci e somma finita Questo un elenco passo passo di come il BASIC Stamp deve processare 1 messaggi in ingresso per ricostruire il valore 635 e E stata ricevuta la cifra 6 quindi si memorizza 6 e E stata ricevuta la cifra 3 quindi si mo
52. value SELECT direction CASE ChUp PULSOUT ServoLeft 850 PULSOUT ServoRight 650 CASE ChDn PULSOUT ServoLeft 650 PULSOUT ServoRight 850 CASE VolUp PULSOUT ServoLeft 850 PULSOUT ServoRight 850 CASE VolDn PULSOUT ServoLeft 650 PULSOUT ServoRight 650 ENDSELECT PAUSE 20 NEXT LOOP Un listto completo del programma incluso al termine delle istruzioni elenco di verifica Salvate quindi lanciate il vostro programma modificato Assicuratevi l interruttore a tre posizioni del vostro Boe Bot sia in posizione 2 Premere rilasciare il tasto CH per selezionare avanti Premere rilasciare i numeri 1 6 2 Premere rilasciare il tasto ENTER L Ll L L L Il Boe Bot dovrebbe andare avanti per circa un metro o yarda se state pensando in sistema anglosassone y Premere rilasciare il tasto VOL per selezionare ruota a destra Premere rilasciare i numeri 2 0 Premererrilasciare il tasto ENTER Il Boe Bot dovrebbe ruotare per circa 90 gradi in senso orario verso destra Capitolo 2 Creare ed usare Applicazioni Remote Pagina 87 Per un ripasso circa impulsi e distanze vedere Robotica con il Boe Bot al Capitolo 4 y Far pratica dell invio di direzioni e distanze fino a che non abbiate sufficiente dimestichezza con la navigazione del vostro Boe Bot U Title ee eee ee Se Se ee eee IR Remote for the Boe Bot KeypadDirectionDistance bs2 Each Boe Bot maneuver involves three Passos 1 Select a
53. 1 e di 0 6 ms binario 0 Nota il rivelatore IR sul Boe Bot invia segnali bassi che corrispondono allo schema emesso dal telecomando Il BASIC Stamp pu quindi essere programmato per rilevare misurare memorizzare ed interpretare la durata degli impulsi bassi di questo schema per capire quale tasto del telecomando stato premuto Figura 1 3 Messaggi Infrarossi emessi dal Telecomando Pagina 6 Infrarossi per il Controllo a Distanza del Boe Bot Il ricevitore di IR usato dal Boe Bot per la rilevazione di oggetti tramite infrarossi in Robotica con il Boe Bot lo stesso rivelatore presente in molti televisori e videoregistratori Questi ricevitori inviano un segnale basso ogni volta che rivelano infrarossi con una frequenza di 38 5 kHz ed un segnale alto per il resto del tempo Quando il rivelatore IR invia dei segnali bassi il processore all interno del TV o del VCR misura quanto lungo ciascun segnale basso Quindi usa queste misure per capire quale tasto stato premuto sul telecomando Come per il processore interno al TV od al VCR il BASIC Stamp 2 pu essere programmato per rivelare misurare memorizzare ed interpretare la sequenza di impulsi bassi che riceve dallo stesso tipo di rivelatore IR Modulazione a larghezza di impulso PWM la durata dell impulso viene usata in molte applicazioni alcune delle quali sono conversione da digitale ad analogico controllo di motori e comunicazione Quando il rivelatore IR invia degli
54. 2 750 ELSEIF time 2 lt 500 AND time 1 lt 500 AND time 0 lt 500 THEN yV Lanciate e provate il programma e cercate gli errori se il caso Pagina 42 Infrarossi per il Controllo a Distanza del Boe Bot SOMMARIO Questo capitolo ha spiegato come il BASIC Stamp possa rilevare e memorizzare messaggi inviati da un telecomando universale stato presentato e spiegato il segnale specifico usato per il controllo delle TV SONY quindi stato misurato in dettaglio usando un circuito rivelatore ad infrarossi La modulazione a larghezza di impulso PWM per la comunicazione stata presentata come la base per la comunicazione tra il telecomando ed i componenti dei sistemi di intrattenimento Le applicazioni comprendenti il controllo diretto a distanza del Boe Bot hanno dimostrato come acquisire ed interpretare questi messaggi con l aiuto dei comandi PULSIN e RCTIME e degli array di variabili Domande 1 che cosa significa PWM e quali sono 1 suoi usi Immaginate che il LED del telecomando IR stia lampeggiando a 38 5 kHz Quindi si ferma per un certo tempo prima di ricominciare Quale segnale rileva il rivelatore IR durante questa pausa 3 che cosa significa programmare un telecomando universale per inviare messaggi ad un TV SONY 4 Quali sono i tre argomenti del comando PULSIN e cosa f ciascuno dei tre 5 come dovrete configurare un comando PULSIN per misurare un impulso positivo Che cosa dovete fare per cambiare un
55. 2 Creare ed usare Applicazioni Remote Pagina 57 Figura 2 5 Temporizzazione dell Esecuzione dei Comandi in Relazione agli impulsi IR in arrivo DO RCTIME 9 1 time LOOP UNTIL time gt 1000 PULSIN 9 0 time IF time gt 500 THEN remoteCode BITO 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT1 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT2 1 2 4 ms 0 6 ms 1 2 ms 0 6 ms La ragione per cui per misurare il prossimo impulso deve essere usato RCTIME perch la dichiarazione IF THEN non termina che dopo l inizio del prossimo impulso di dati Dal momento che l impulso di start il suo fronte negativo stato perso mentre veniva eseguita la dichiarazione IF THEN statement PULSIN non pu rilevare correttamente l nizio dell impulso Invece PULSIN perderebbe quell impulso dati e misurerebbe il successivo rendendo possibile solamente l acquisizione di met degli impulsi dati di un messaggio IR D altra parte pu essere usato RCTIME per misurare ci che rimane dell impulso dati e per misurare anche tutti gli altri impulsi dati rimanenti Tramite esperimenti simili a quelli del Capitolo 1 Attivit 2 le misure successive di RCTIME memorizza in time valori intorno a 450 per un impulso 1 binario o 150 per un Pagina 58 Infrarossi per il Controllo a Distanza del Boe Bot impulso 0 binario 300 a mezza strada tra questi due valori e viene usato per decidere se il resto delle misure
56. A Indirizzo Word Dataltem Dataltem AT Per vedere le informazioni circa il comando DATA nella guida sintattica del PBASIC clickate dl Help nell Editor del BASIC Stamp e selezionate Index Digitate DATA nella casella di o ricerca quindi doppio click sulla voce quando appare nell elenco in basso La Figura 3 4 mostra esempi delle due direttive DATA nel prossimo progamma esempio DebugPlayback bs2 e di come si relazionano alla sintassi del comando La maggior parte di questa sintassi stata spiegata in Robotica con il Boe Bot v2 0 nel Capitolo 4 Attivit 6 Un elemento che pu esservi nuovo l argomento opzionale Indirizzo Viene usato nei due esempi di direttive DATA per memorizzare 1 DataItems in indirizzi specifici della EEPROM del BASIC Stamp Nella prima direttiva DATA 15 memorizza il primo DataItem all indirizzo EEPROM 15 La F viene memorizzata all indirizzo 15 la L all indirizzo 16 la R all indirizzo 17 etc Il simbolo opzionale Maneuver_List verr automaticamente impostato a 15 dall Editor del BASIC Stamp durante la Fase di Compilazione Potete usare questo simbolo nel vostro programma al posto del numero 15 e vedrete rende molto pi facile scrivere programmi per l accesso alla EEPROM Pagina 134 Controllo Remoto ad IR per il Boe Bot Simbolo DATA Indirizzo Dataltem Dataltem Figura 3 4 Come puo essere usata la sintassi della Direttiva DATA Maneuver_ List DATA Ms t
57. Altoparlante Piezo vari Ponticelli di filo Pagina 32 Infrarossi per il Controllo a Distanza del Boe Bot Assemblate riassemblate e collaudate i circuiti dei servo del Boe Bot il rivelatore IR ed dell altoparlante piezo mostrati nella Figura 1 15 come mostrato Vin To Servos Figura 1 15 Schemi elettrici e diagrammi di collegamento dei circuiti Servo Rivelatore IR ed altoparlante piezo Vdd II servo di sinistra del Boe Bot deve essere collegato a P13 ed il suo servo di destra deve essere collegato a P12 P9 220 Q P4 Board of Education Rev C 2000 2003 WY Ritorno alle Istruzioni IF THEN per la Navigazione Il prossimo programma esempio una versione modificata di RecordAndDisplayPwm bs2 ecco che cosa si deve fare al programma per fargli controllare il Boe Bot Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 33 Rimuovoere la dichiarazione della variabile index Riducete la dimensione dell array time a due elementi Aggiungere FREQOUT 4 2000 3000 prima del primo Do Rimuovere tutti i comandi DEBUG Rimuovere tutti 1 comandi PULSIN eccetto quelli che memorizzano le misure di tempo in time 0 e time 1
58. Beep Valid aaa aaa Call this subroutine to acknowledge a key press Beep_Valid FREQOUT Speaker 100 3500 PAUSE 200 RETURN L I Subroutine 9 MCN ety Teal Oe Call this subroutine to reject a key press beccata FREQOUT Speaker 100 3000 PAUSE 200 RETURN Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 155 Il Vostro Turno Avvisi Ottici con LED ed Organizzazione del Programma Per rendere completo questo programma un paio di LED possono facilitare la programmazione del Boe Bot senza il Terminale di Debug Questo pu essere utile in alcuni contesti di navigazione NI NI Rinominate il vostro programma come RemoteRecordBoeBotPlaybackLed bs2 Progettate ed implementate gli avvisi ottici con LED che coincidano con le informazioni del T gt erminale di Debug Scrivete un manuale di istruzioni per il vostro Boe Bot descrivendo come usare il telecomando per programmare il Boe Bot affidandosi solamente sull altoparlante e sui LED Usate il foglio istruzioni che accompagnava il telecomando universale come esempio Le routine di programmazione e di funzionamento dovrebbero essere ttrasformate in subroutine NI Fatelo quindi salvate il vostro lavoro Potreste volerle usare in altri programmi Pagina 156 Controllo Remoto ad IR per il Boe Bot SOMMARIO In questo capitolo sono stati studiate altre applicazioni che potete realizzare con l applicazione per il telecomando IR I programmi applicativi devono
59. Bot bs2 ENDSELECT LOOP Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 129 Quando il programma viene lanciato il valore di operation per default viene inizializzato a zero Questo potrebbe essere un problema perch nessuna delle dichiarazioni CASE accetta uno zero Per questa ragione stato aggiunto un comando per Impostare ad 1 operation nella sezione Inizializzazione rese E nee tiga Lon eras se Se se SS Se Se Se SSIS operation 1 Initialize to remote La routine principale di 7BitRemoteBoeBot bs2 stata modificata per permettervi di cambiare il valore della variabile operation con il telecomando Per farlo si dovuto aggiungere una dichiarazione CASE per gestire la pressione rilascio del tasto POWER SELECT remoteCode CASE Power FREQOUT Speaker 100 3500 PAUSE 100 FREQOUT Speaker 100 3500 PAUSE 200 DEBUG Select operation mode CR GOSUB Get_Ir Remote Code operation remoteCode DEBUG operation CR Running CR FREQOUT Speaker 100 3500 PAUSE 100 FREQOUT Speaker 100 3500 PAUSE 200 Un problema che cosa accade se premete rilasciate il tasto POWER quando operation 2 navigazione o 3 inseguitore In queste due modalit non c modo di cambiare con il telecomando il valore della variabile remoteCode Una soluzione semplice di inserire una riga di programma all inizion delle routine di navigazione e di inseguimento che controlli se ci sono messaggi in arrivo dal telecoma
60. CASE 2 Modified main routine from FastIrRoaming bs2 goes here IF IN9 0 THEN operation 1 l FREQOUT 8 1 38500 i irDetectLeft IN9 FREQOUT 2 1 38500 irDetectRight INO IF irDetectLeft 0 AND irDetectRight pulseLeft 650 pulseRight 850 ELSEIF irDetectLeft 0 THEN pulseLeft 850 pulseRight 850 ELSEIF irDetectRight 0 THEN pulseLeft 650 pulseRight 650 ELSE pulseLeft 850 pulseRight 650 ENDIF GOSUB Send_Pulse If operation is 3 execute the following CASE 3 IF IN9 0 THEN operation 1 i GOSUB Get_Ir Distances Calculate proportional output SetPoint distanceLeft SetPoint distanceRight pulseLeft pulseRight GOSUB Send_Pulse ENDSELEGT LOOP Il programma completato mostrato sotto nel caso dobbiate errori Assemblate salvate e lanciate IrMultiBot bs2 lt Modificato Boe Bot routine lt Nuovo lt Nuovo Kpl CenterPulse Kpr CenterPulse lt NUOVO End SELECT operation Repeat Main Routine controllarlo per la ricerca di Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 123 Testate 1 tasti CH VOL e numerici e verificate che funzionino correttamente Premere rilasciare il tasto POWER Il Boe Bot dovrebbe suonare due volte Premere rilasciare il tasto 2 Il Boe Bot dovrebbe suonare due volte quindi iniziare la navigazione autonoma e ad evitare gli ostacoli Premere rilasciare il tasto POWER Il Boe Bot
61. Definizioni I O Speaker PIN 4 Quindi vi serviranno le costanti le variabili ed un paio di subroutine da FollowingBoeBot bs2 Dal momento che FollowingBoeBot bs2 assemblato su Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 119 FastIrRoaming bs2 non vi serviranno costanti variabili o subroutine aggiuntive da FastIrRoaming bs2 Aggiungete queste dichiarazioni di costanti nella sezione Costanti del programma Boe Bot proportional control constants from FollowingBoeBot bs2 Kpl CON 35 Kpr CON 35 SetPoint CON 2 CenterPulse CON 750 y Copiate queste dichiarazioni di variabili da FollowingBoeBot bs2 ed incollatele nella sezione Variabili di IrMultiBot bs2 Boe Bot navigation variables from FollowingBoeBot bs2 fregSelect VAR Nib irFrequency VAR Word irDetectLeft VAR Bit irDetectRight VAR BIE distanceLeft VAR Nib distanceRight VAR Nib pulseLeft VAR Word pulseRight VAR Word y Aggiungete due ulteriori dichiarazioni di variabili per le funzioni di IrMultiBot bs2 IrMultiBot bs2 variables counter VAR Nib lt New operation VAR Nib lt New Alla fine del programma aggiungete queste due subroutine Paese k o UDT TnS m Get R Distances aaa sso S SSS SS SSS See Get_Ir Distances distanceLeft 0 distanceRight 0 FOR fregSelect 0 TO 4 LOOKUP fregSelect 37500 38250 39500 40500 41500 irFrequency FREQOUT 8 1 irFrequency lrDetectLeft IN9 distanceLeft distanceLeft
62. ER GLI INSEGNANTI Il sommario di ciascun capitolo contiene un insieme di domande esercizi e progetti comprensivi di soluzioni Una guida per insegnanti disponibile anche per questo testo Contiene un ulteriore gruppo di domande esercizi e progetti risolti a volte ci sono anche soluzioni espanse o alternative per 1 materiali richiesti dal testo La guida per insegnanti disponibile gratuitamente sia in formato Word che PDF associandosi al Forum Educatori Prefazione Pagina xi della Parallax o puo essere richiesta tramite e mail stampsinclass parallax com Per ottenere questi file dovrete fornire la prova del vostro status di insegnanti LA SERIE DIDATTICA STAMPS IN CLASS La Parallax ha creato il programma didattico Stamps in Class per soddisfare la richiesta di risorse elettroniche ed ingegneristiche a basso costo IR Remote for the Boe Bot una sequenza della nostra guida per studenti Stamps in Class pi popolare Robotica con il Boe Bot Potete continuare I vosti studi con una qualsiasi delle nostre guide per studenti elencate di seguito Tutti 1 libri elencati sono disponibili per il download gratuito dal sito www parallax com Le versioni citate sotto sono quelle correnti al momento della revisione finale di questo libro Per ottenere le ultime revisioni controllate 1 nostri siti web www parallax com o www stampsinclass com ci sforziamo continuamente di migliorare il nostro programma didattico Guide per studenti Stamps in Clas
63. F time gt 1000 THEN Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 19 a Il Vostro Turno Misurare l intervallo tra gli impulsi dei dati Potete modificare ancora la condizione del blocco IF ENDIF questa volta per misurare gli impulsi alti molto brevi tra gli impulsi dei dati Salvate CountRestingStates bs2 con il nome CountRestingStatesYourTurn bs2 y Cambiate la condizione del blocco di codice IF ENDIF da IF time gt 1000 THEN a IF time gt 1 AND time lt 1000 THEN y Aaggiungete un comando PAUSE 100 subito prima del comando Loop yV Lanciate il programma ed annotate qui l intervallo tra gli impulsi Diagramma di Temporizzazione dei messaggi IR La Figura 1 10 mostra un diagramma di temporizzazione di un messaggio IR proveniente da un telecomando Questo diagramma mostra la temporizzazione mentre il tasto 5 della tastiera del telecomando viene premuto e mantenuto premuto Il vostro compito sar di compilare la lista delle misure con i dati che avete annotato in questa Attivit Ricordate che ci sono 1000 us in ciascun millisecondo Le vostre misure sono state effettuate in microsecondi quindi dovrete dividere ciascuna misura per 1000 per inserire le misure in millisecondi nel diagramma di temporizzazione Usate le misurazioni che avete annotato in questa Attivit per ottenere le misure in millisecondi nella Figura 1 10 V Asommata tutti i tempi per calcolare il tempo totale del messagg
64. Finestra di come fo El Trasmissione Data Bits Flow Control 4 Tx IT DTR RTS fs E for El enr osr ects Figura 1 12 Uso del Terminale di Debug per digitare Caratteri in un Array Clickare sulla finestra di trasmissione quindi digitare cinque caratteri Finestra di Ricezione Macros Pause Clear Close I Echo Off Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 23 Digitate e lanciate ArrayEsempio bs2 Clickate la finestra di tasmissione del Terminale di Debug Digitate cinque caratteri Quando il Terminale di Debug visualizza You typed verificate che il BASIC Stamp abbia inviato gli stessi caratteri che avete digitato Lili IR Remote for the Boe Bot ArrayEsempio bs2 Set array element values with DEBUGIN and display them with DEBUG SSTAMP BS2 0 fSPBASIC 2 5 characters VAR Byte 5 index VAR Nib FOR nde lt 0 Os 4 DEBUG Eve char ae cr DEG andes 7 DEBUGIN characters index DEBUG CR NEXT DEBUG MOR ROV EOC dell HORES AE NORO DEBUG characters index NEXT END Come Funziona ArrayEsempio bs2 Viene dichiarato un array di cinque byte chiamato characters insieme con una variabile nibble chiamata index characters VAR Byte 5 index VAR Nib un ciclo FOR NEXT ripete cinque volte il blocco di codice tra le istruzioni FOR e NEXT A ciascuna iterazione del ciclo il valore di index viene incrementato di 1 in questo modo il comando DEBUGIN memoriz
65. Indice Pagina v Controllo remoto ad IR per il Boe Bot Scritto da Andy Lindsay VERSIONE 1 0 PRALAX 7 Garanzia La Parallax garantisce i suoi prodotti contro difetti dei materiali e di manifattura per un periodo di 90 giorni dal ricevimento del prodotto Se scoprite un difetto Parallax a suo giudizio lo riparera o sostituira la merce o rimborsera il prezzo di acquisto Prima di restituire il prodotto a Parallax richiedete un numero Return Merchandise Authorization RMA Scrivere il numero RMA fuori dalla scatola utilizzata per restituire la merce a Parallax Per favore includete le seguenti informazioni insieme alla merce restituita il vostro nome numero telefonico indirizzo della spedizione e una descrizione del problema La Parallax restituira il vostro prodotto o la sua sostituzione utilizzando lo stesso metodo di spedizione utilizzato per inviare il prodotto a Parallax Garanzia soddisfatti o rimborsati di 14 giorni Se entro 14 giorni dal ricevimento del vostro prodotto trovate che non soddisfa le vostre necessit potete restituirlo per un rimborso completo La Parallax rimborser il prezzo di acquisto del prodotto esclusi costi di spedizione gestione Questa garanzia nulla se il prodotto stato modificato o danneggiato Copyright e marchi BASIC Stamp Stamps in Class e Board of Education sono marchi registrati dalla Parallax Inc se decidete di utilizzare i nomi BASIC Stamp Stamps in Class e o Board of Educat
66. Le R rie y OY Distance_List DATA a 40 20 20 40 0 programmi di questa attivit useranno solamente valori di grandezza byte quindi non sar necessario il modificatore opzionale Word Per maggiori informazioni ed esempi del modificatore Word provate gli esempi della direttiva DATA con il modificatore Word mnella guida sintattica PBASIC dell Editor del BASIC Stamp Potrete anche trovare esempi che fanno uso del modificatore Word in Che Cosa un Microcontrollorer ed in Robotica con il Boe Bot La seconda direttiva DATA usa anche l argomento Address ed i suoi DataItems iniziano dall indirizzo 35 il risultato che il numero 40 viene memorizzato all indirizzo 35 il numero 20 all indirizzo 36 e cos via Ambedue le direttive DATA hanno il nome simbolico opzionale Simbolo Il nome simbolico per questa seconda direttiva DATA Distance _List e diventer una costante 35 che userete anche in DebugPlayback bs2 Questa la sintassi del comando READ READ Locazione Word Variabile Word Variabile Locazione l indirizzo EEPROM che memorizza il valore che volete recuperare e Variabile il nome della variabile che riceve il valore estratto dalla EEPROM Se consultate la spiegazione di questo comando nella Guida Sintattica dell Editor del BASIC Stamp dice proprio questo circa Locazione e Variabile e Locazione una variabile costante espressione 0 255 sul BSI 0 2047 su tutti gli altri moduli BASIC Stamp c
67. P pu avere una dichiarazione SELECT CASE annidata al suo interno Una delle dichiarazioni CASE pu contenere un elenco dei possibili valori che volete sostituire prima di continuare con il programma Il blocco di codice per questa dichiarazione CASE dovrebbe contenere il comando EXIT per interrompere il ciclo Do Loop dal momento che il suo blocco di codice verr eseguito quando uno dei valori desiderati contenuto dalla variabile della dichiarazione SELECT L altra dichiarazione CASE ELSE dovrebbe contenere un blocco di codice che verr eseguito quando si ricever il valore sbagliato Dal momento che non contiene un comando EXIT il ciclo DO LOOP si ripeter fino a che uno dei valori desiderati non verr memorizzato nella variabile della dichiarazione SELECT Se non viene rilevato alcun oggetto verr eseguita la dichiarazione CASE ELSE Questa case imposta le variabili usate per i comandi PULSOUT dei servo sinistro e destro Il valore di pulseLeft sar 750 50 700 Per calcolare la durata dell impulso moltiplicate l argomento durata del comando PULSOUT per 2 US 700 x 0 000002 s 0 0014 s 1 4 ms Il valore di pulseRight sar 750 50 800 che invia un impulso di 1 6 ms Pagina 160 Controllo Remoto ad IR per il Boe Bot E2 Accanto al ciclo Do Loop della routine principale c un ENDSELECT Inserite questo blocco di codice subito prima di ENDSELECT If operation is 4 execute the YourProgram bs2 CASE 4 M
68. PULSOUT 12 850 CASE L PULSOUT 13 650 PULSOUT 12 650 CASE R PULSOUT 13 850 PULSOUT 12 850 ENDSELECT PAUSE 20 NEXT Pagina 146 Controllo Remoto ad IR per il Boe Bot y Lanciate il programma e verificate che possiate programmare e riprogrammare la sequenza dei movimenti con il Terminale di Debug Salvate il vostro programma modificato Passo 7 Adattamento del programma al Telecomando ad Infrarossi Aquesto punto siete abbastanza vicini al completamento della realizzazione di un Boe Bot programmabile con telecomando Potete usare la routine principale del Passo 6 di DebugRecordBoeBotPlayback bs2 e dopo opportuni adattamenti inserirlo nel programma IrRemoteKeypad bs2 questa un elenco che vi fornisce una idea generale degli adattamenti che debbono essere fatti Al posto di DEBUGIN si usa GOSUB Get_Ir_Remote_Code Al posto di DEBUGIN DEC si usa GOSUB Get_Multi Digit_Value ChUp ChDn VolUp e VolDn vengono usati invece di F B R ed L Si usa ENTER al posto di Q POWER ed ENTER vengono usati invece di P ed R Segue una descrizione dettagliata di come DebugRecordBoeBotPlayback bs2 viene adattato ed integrato in IrRemoteKeypad bs2 N N Aprite IrRemoteKeypad bs2 e salvatene una copia con il nome di RemoteRecordBoeBotPlayback bs2 Aggiornate la Sezione Titolo per includere il nome corretto del programma una breve descrizione e le istruzioni di uso L S225 a he 7 SSS
69. Pagina 96 Infrarossi per il Controllo a Distanza del Boe Bot GOSUB Servo _ Pulses Salvate lanciate e provate il programma Verificate che si comporti nello stesso modo dell implementazione con il comando Goro Capitolo 2 Creare ed usare Applicazioni Remote Pagina 97 SOMMARIO La decodifica il processo di conversione di un segnale elettronico in qualche cosa di comprensibile ed usabile Nel caso del messaggio remoto dal telecomando IR la decodifica consiste nella conversione della misura della durata degli impulsi in valori binari 1 e 0 in una variabile byte Ogni volta che il processo si completa la variabile byte memorizza un numero codice che corrisponde con un tasto della tastiera Per comprendere il processo di decodifica sono stati studiati 1 concetti del conteggio binario e della conversione da binario a decimale stato studiato il modificatore BIT come modo per impostare ed azzerare singoli bit in una variabile Sono state scritte dichiarazioni IF THEN che esaminano misure di impulsi per determinare il valore di un bit in una variabile che memorizza il valore decodificato della larghezza dell impulso modulato in larghezza del messaggio del telecomando Queste dichiarazioni IF THEN impiegano il modificatore BIT per impostare un bit di una variabile se la misura dell impulso corrispondente era maggiore di un certo valore o azzerare il bit se la misura dell impulso era minore di un certo valore Questo capitolo
70. Press POWER to reprogram i IMA STAMP directive US f SPBASIC 2 5 JO PBASITC directive EEPROM Data 1 5er aside data for lists of Maneuver List and Distance List Maneuver _List DATA 15 20 bytes for Maneuver_List Distance List DATA 35 20 bytes for Distance List a CEX0SDorbnecelonsWe sese SONY TV IR remote declaration input receives from IR detector IrDet PIN 9 Speaker PIN 4 Boe Bot Servo Pins SeryoLleft PIN 13 ServoRight PIN 12 ea GC OTe athe Se nan ae Tg Sa a a a a a a a a POON TY IR remote constants fom Non kKevyoad OuCTOnNS s Enter CON Jka ChUp CON 16 ChDn CON T7 VolUp CON 18 VolDn CON 19 Power CON 2l pea Meier OY MSN ISSR eh iii ei ille altel otal oici PE SONY 2h ERevemobor wart ables Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 151 irPulse VAR Word Single digit remote variables remoteCode VAR Byte index VAR Nib value VAR Word V GtOres multi digit value Boe Bot navigation variables direction VAR Byte counter VAR Word ee Index VAR Byte ea agro tan cilecca cre DEBUG Press POWER Go record CR Uor BNTER tO Playback CR CR COSUB Ger Ir Remote Coge IF remoteCode Power THEN Routine Record data GOSUB Beep_Valid eeIndex 0 DO UNTIL eeIndex 19 DEBUG Menu CR Z OH KOCwarTOW CR Win Backwerdc CR U NAO ERI ROTTE u BNTER DOne recording CR
71. RCTIME LEDet 0 irpuLlse ie LePuLlse gt 300 THEN rcemorteCocde BITO sk BITO 1 Bordin BI BIT3 1 BIT4 1 Bilo ol Ja Adjust remoteCode so that See Ost E TE THEN remoteCode THEN remoteCode memotetode lt 10 remoteCode 10 0 RETURN Main Routine Gers Lee RemoterC ode enaa Clear all bits in remoteCode Wait for rest between messages Measure Set or Measure Set or STC remoteCode 1 pulse leave clear next pulse leave clear keypad keys correspond to the value bit 0 Drise Capitolo 2 Creare ed usare Applicazioni Remote Pagina 65 Come Funziona IrRemoteButtons bs2 Questa dichiarazione PIN da un nome ai piedini I O che sentono l uscita del rivelatore IR Potete ora usare il nome IrDet al posto di IN9 Potete anche usarlo come argomento di un comando cos invece di PULSIN 9 0 IrPulse potete usare PULSIN IrDet 0 IrPulse essss E E O De rina tnt rss rese SONY TV IR remote declaration input receives from IR detector IrDet PIN 9 Questi nomi di costanti possono essere usati al posto dei valori della tastiera Questo vi permette di prendere decisioni sul valore dal telecomando infrarosso con nomi significativi come ad esempio E
72. RoamingWithSpeedControl bs2 quali saranno le durate degli impulsi per 1 servo sinistro e destro se nessun oggetto viene rilevato e la velocit 50 Pagina 158 Controllo Remoto ad IR per il Boe Bot 2 La scelta nella sezione routine principali nell attivit 2 mostra il nucleo della dichiarazione SELECT CASE Espandete questo nucleo in maniera che contenga un caso per 4 valori ed un caso alternativo per qualsiasi altro valore 3 Scrivete comandi READ per recuperare 1 valori 7 e 13 usando My_List nell argomento Locazione Assumete di aver dichiarato una variabile myValue 4 Modificate questo blocco di codice in modo che accetti solamente valori tra 16 e 19 DO DEBUG CR E B Ry Lp 0 CR Enter Direction DEBUGIN direction SELECT direction ASETAT ys By Rio RL MON EXIT CASE ELSE DEBUG CR Invalid character CR ENDSELECT LOOP 5 Con RemoteRecordBoeBotPlayback bs2 elencate la sequenza di pressioni dei tasti del telecomando per far percorrere al Boe Bot un rettangolo di 50 impulsi per 100 Progetti 1 Usate 7BitRemoteBoeBot bs2 dal capitolo 2 Attivit 3 come punto di partenza Aggiungete una routine che annulli le istruzioni del telecomando e fermi il Boe Bot prima che collida con un oggetto In questo modo potrete provare a guidare il Boe Bot contro un ostacolo ma il porgramma non ve lo permetter 2 Espandete IrMultiBotYourTurn bs2 in modo che potete premere 1 seguenti tasti numerici per le seguenti
73. SS SS a Se eS Se IR Remote for the Boe Bot RemoteRecordBoeBotPlayback bs2 Press key sequences to program motion routines into the Boe Bot s EEPROM and replay them Press POWER key to program or ENTER key to play program In programming mode press a CH VOL key to choose a maneuver Use the keypad to enter the number of pulses then press ENTER Pressing ENTER again terminates programming Pressing ENTER a third fourth etc time replays the program Press POWER to reprogram SSTAMP BS2 LSPBASIC 2 5 PN w N Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 147 Inserite questa sezione tra la sezione direttive Stamp PBASIC e la sezione Definizioni I O EEPROM Data Set aside data for lists of Maneuver List and Distance List Maneuver_ List DATA 15 20 bytes for Maneuver_ List Distance List DATA 35 20 bytes for Distance List Copiate queste dichiarazioni nella sezione Definizioni dei Piedini Boe Bot Servo Pins ServoLeft PIN 13 ServoRight PIN 12 Copiate queste dichiarazioni nella sezione Variabili Boe Bot navigation variables direction VAR Byte counter VAR Word eeIndex VAR Byte Se esaminate attentamente il prossimo ciclo DO LOOP vedrete che ha la stessa funzione generale e la stessa struttura della routine principale di DebugRecordBoeBotPlayback bs2 Sostituire il ciclo DO LooP della routine principale con
74. T1 1 Set or leave clear bit 1 RCTIME 9 0 time etc IF time gt 300 THEN remoteCode BIT2 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT3 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT4 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT5 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT6 1 Perch usare PULSIN per misurare il primo impulso ed RCTIME per misurare il resto Risparmiare sei variabili word vale un p di ginnastica con il codice Questa routine usa solamente una variabile time non un array di sette come negli esempi del capitolo 1 La Figura 2 5 mostra la temporizzazione dell esecuzione dei comandi in relazione agli impulsi IR dei messaggi in arrivo Da sinistra a desta c abbastanza tempo per il ciclo DO LOOP di rilevare quando un impulso positivo maggiore di 1000 perch l impulso di start che segue dura 2 4 ms C anche tempo sufficiente per eseguire un comando PULSIN per acquisire il primo impulso dati Il problema si verifica quando viene eseguita la prima dichiarazione IF THEN Ricordate che stiamo cercando di usare solamente una variabile time per acquisire le misure di tutti gli impulsi non un array di sette variabili A causa del fatto che la variabile time deve essere riusata per misurare il prossimo impulso il valore corrente deve essere esaminato per abilitare o disabilitare remoteCode BITO Capitolo
75. TT Echo Off Digitate Salvate e Lanciate SetAndClearWithDotBit bs2 Quando apparir la richiesta Type bit index 0 to 7 decidete quale bit volete cambiare e digitate quella cifra Quando apparir la richiesta Type 1 to set or 0 to clear digitate i tasti 1 o 0 Il programa far una pausa di mezzo secondo quindi azzerer il display Capitolo 2 Creare ed usare Applicazioni Remote Pagina 53 V Contollate ed assicuratevi che i cambiamenti che avete operato appaiano in Binary value y Sperimentate con l abilitazione e la disabilitazione nel Binary value IR Remote for the Boe Bot SetAndClearWithDotBit bs2 Use the Debug Terminal s Transmit Windowpane to choose a bit in the value variable and set or clear it SSTAMP BS2 SPBASIC 2 5 value VAR Byte index VAR Nib setClear VAR Bit DO DEBUG CLS BINS value lt Binary value CR 76543210 lt Bir index CR CR Type bir ince 0 to 7 3 DEBUGIN DEC1 index DAHRUCHOR TOC dl co seb om OOE E DEBUGIN BINI setClear IE index 0 THEN value Bl TO serelear IF index 1 THEN value BIT l setClear IF index 2 THEN value BIT2 setClear IF index 3 THEN value BIT3 setClear IF index 4 THEN value BIT4 setClear wE index 5 THEN yvalue Bits setClear IF index 6 THEN value BIT6 setClear IF index 7 THEN value BIT7 setClear PAUSE 500 LOOP Come Funziona SetAndClearWithDotBit bs2 La variabile va
76. UT ServoLeft 650 PULSOUT ServoRight 650 ENDSELECT PAUSE 20 NEXT eeIndex eeIndex 1 LOOP ELSE GOSUB Beep Error ENDIE LOOP Programma Esempio RemoteRecordBoeBotPlayback bs2 Viene di seguito mostrato il programma completato Digitate e lanciate il programma e seguite le richieste del Terminale di Debug per la programmazione remota y Provate la seguente sequenza di tasti POWER per iniziare la programmazione CH 40 ENTER per andare a marcia avanti per 40 impulsi VOL 20 ENTER per ruotare a sinistra per 20 impulsi VOL 20 ENTER per ruotare a destra per 20 impulsi CH 40 ENTER per andare a marcia indietro per 40 impulsi ENTER una seconda volta per uscire dalla modalit programmazione ENTER una terza volta per far eseguire le manovre al Boe Bot ENTER di nuovo f ripetere al Boe Bot la sequenza delle manovre L L L L L Ll L L Pagina 150 Controllo Remoto ad IR per il Boe Bot POWER per programmare una nuova sequenza di manovre IR Remote for the Boe Bot RemoteRecordBoeBotPlayback bs2 Press key sequences to program motion routines into the Boe Bot s EEPROM and replay them Press POWER key to program or ENTER Key to play program In programming mode press a CH VOL Key to choose a maneuver Use the keypad to enter the number of pulses then press ENTER Pressing ENTER again terminates programming Pressing ENTER a third fourth etc time replays the program
77. a a premere un pulsante od un interruttore per un tempo individuale Specialmente quando si inserisce la stessa cifra pi volte importante programmare il microcontrollore per assicurarsi che vengano riconosciute le tendenze naturali durante la pressione dei pulsanti Aprite IrRemoteButtons bs2 quindi salvatelo come EnterLargeValues bs2 V Aggiungete questa direttiva alla sezione Definizioni I O Speaker PIN 4 Aggiungete questa variabile alla sezione Variabili del programma Main Routine Variables value VAR Word Stores multi digit value Nella routine principale sostituite il ciclo Do LOOP con questo DO DEBUG Type a value up to 65535 CR Then press ENTER CR CR value 0 remoteCode 0 DEBUG Digits entered DO value value 10 remoteCode GOSUB Get_Ir_ Remote _ Code IF remoteCode gt 0 AND remoteCode lt 9 THEN DEBUG DEC remoteCode ENDIF FREQOUT Speaker 100 3500 PAUSE 200 Capitolo 2 Creare ed usare Applicazioni Remote Pagina 77 LOOP UNTIL remoteCode Enter DEBUG CR The value is DEC value CR CR LOOP y Seguite le richieste del Terminale di Debug E digitate un numero sulla tastiera del telecomando come se di stesse digitando dei numeri sulla tastiera di una calcolatrice y Premere e rilasciare il tasto ENTER Verificate che il valore memorizzato dal BASIC Stamp sia corretto Per inviare e memorizzare numeri con diverse cifre al BASIC Stamp usate 1 tasti nu
78. a certa gamma Per questo scopo IF THEN funzionale Per esempio IF time gt 975 AND time lt 1425 THEN filtra gli impulsi maggiori di 1950 us e minori di 2850 us Gli intervalli durano pi a lungo Un array di variabili pi funzionale per la memorizzazione di misure successive e correlate Sommate il numero degli elementi all argomento Size della dichiarazione di variabile tra parentesi conveniente usare un valore di 500 per distinguere tra impulsi che normalmente ricadono tra 300 0 6 ms e 600 1 2 ms characters VAR Byte 8 l elemento time 2 dell array sar probabilmente 364 mentre time 1 e time 0 saranno circa 660 Questo stato ottenuto con l aiuto della Table 1 1 a pagina 31 Iniziate con RecordAndDisplayPwm bs2 ed usate vari elementi nell array time per misurare gli elementi del messaggio dodici impulsi di dati l intervallo tra i messaggi dodici intervalli tra gli impulsi l impulso di start IR Remote for tche Boe Bot CapicololRrojecti bs2 Add all the pulse durations for total message time SSTAMP BS2 1 T SPBASIC 2 5 EL LA DO Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 45 me VAR Word 12 dex VAR Nib DO i EUS Noe eos IS LOOP UNTIL tiame 0 gt L000 PUES PN oss SE ame HM EU io Rhino O ee PUL TE 9 10s E PULSIN 9 0 time 3 PUES IN O O ene PULSIN 9 0 time 5 PULSIN 9 0 time 6 EUS ENEO O e PULSIN 9 0 time 8
79. a time index dovrebbe essere minore di 500 L L L Ll L IR Remote for the Boe Bot PulsesToByteValue bs2 Display the binary and decimal values of the lower seven bits of IR message SSTAMP BS2 1f SPBASIC 2 5 time VAR Word SONY TV remote variables remoteCode VAR Byte DEBUG Binary Value Decimal Value CR Display heading Bit 76543210 va CR Capitolo 2 Creare ed usare Applicazioni Remote Pagina 59 DO Beginning of main loop remoteCode 0 Clear all bits in remoteCode DO Wait for rest between messages RCGIEME SS NE LOOP UNTIL cime gt 1000 PULSIN 9 0 cime Measure pulse IP cine gt 500 TREN rcemoteCoce BLITO 1 1 5er lor leave clear birt 0 RCTIME 9 0 time Measure next pulse IFE cime gt 300 THEN remoteCode BITL 1 5er or leaves clear Oui Gall RCTIME oe 0 Time Eu he cime gt 300 THEN rcemoreCoce BITZ 1 RCTIME 9 0 time IF time gt 300 THEN remoteCode BIT3 1 RCTIME 9 me Le cime gt 300 THEN cemoreCoce BITA 1 REMMER O OF me E cine gt 300 THEN rcemoreCoce BLTS 1 RCTIME 9 O Ttime Le time gt 300 THEN rcemorceCoce BITO 1 DEBUG CRSRXY 4 3 BIN8 remoteCode Display keypad code CRSRXY 14 3 DEC2 remoteCode LOOP Repeat main loop Come Funziona PulsesToByteValue bs2 Per questa applicazione non ci interessa se il telecomando sta inviando messaggi ad un TV VCR o Decoder quindi il bit pi significa
80. a variabile byte e due variabili bit come mostrato sulla sinistra della Figura 3 3 Commentate le dichiarazioni delle variabili pulseLeft e pulseRight Sostituite tutte le istanze di pulseLeft con PULSOUT 13 Fate attenzione qui il risultato della vostra prima sostituzione dovrebbe essere PULSOUT 13 750 speed Sostituite tutte e 4 le istanze di pulseRight con PULSOUT 12 Di nuovo il risultato delle vostre quattro sostituzioni dovrebbero essere PULSOUT 12 750 speed Decommentate i due comandi PULSOUT che nel programma vengono dopo il comando ENDIF inserendo un apostrofo alla sinistra di ciascuno dei due comandi Salvate lanciate e provate il programma modificato Se necessario risolvete 1 problemi Riaprite la Mappa della Memoria e verificate che in REG 0 siano allocate solamente una variabile byte e due variabili bit come mostrato sulla destra nella Figura 3 3 Pagina 110 Controllo Remoto ad IR per il Boe Bot Figura 3 3 La porzione della Mappa RAM nella Mappa della Memoria IrRoamingWithSpeedControl bs2 sinistra Versione Modificata ne Il Vostro Turno destra MRAM Legend EE Pins E bpe E Bit E wod EE Nibbe C3 Unused E Fins E Bpte E Bit E Word E Nibble CI Unused Passo 4 Integrare la Navigazione con il Controllo della Velocit nella Maschera IR Combinando IrRoamingWithSpeedControl bs2 con IrRemoteKeypad bs2 potrete usare il telecomando IR pe
81. aggio che dice che stato ricevuto il carattere sbagliato Dopo ENDSELECT il ciclo LOOP forzer DO LOOP a ripetersi fino a che non venga ricevuto il carattere giusto Ecco come potete cambiare il programma in modo che filtri solamente 1 caratteri desiderati V Rinominate e salvate il programma come DebugRecordPlaybackFiltered bs2 Sostituite questi due comandi DEBUG CR F B R L Q CR Enter Direction T DEBUGIN direction Con questo blocco di codice DO DEBUG CR F B R L Q CR Enter Direction DEBUGIN direction SELECT direction CASE TEM TBM R TEN WON EXIT CASE ELSE DEBUG CR Invalid character CR ENDSELECT LOOP Pagina 142 Controllo Remoto ad IR per il Boe Bot y Rilanciate il programma e verificate che accetti solamente i caratteri F B R LELE e O Salvate il programma modificato Passo 5 Annidate le Routine di Memorizzazione e lettura in un Ciclo con le Opzioni da Men le routine di memorizzazione e lettura della EEPROM ora funzionano abbastanza bene In questa attivit modificherete il programma in modo che vi dia la scelta di registrare R o eseguire P Playback Questi caratteri possono essere usati per scegliere tra le routine di registrazione o esecuzione Questo un esempio del nucleo che contiene le vostre routine di registrazione e di esecuzione DO DEBUG CLS R Record CR P Play back CR Choose operation DEBUGIN operation DEBUG CR
82. allax SX Tech Discussione circa la programmazione del microcontrollore SX con strumenti di programmazione assembler Parallax e compilatori BASIC e C di altri fornitori Circa 600 membri Javelin Stamp Discussione degli applicativi e progetti con il Javelin Stamp un modulo Parallax che si programma usando un sottoinsieme del linguaggio di programmazione Java della Sun Approssimativamente 250 membri ERRATA Sebbene venga fatto un grande sforzo per assicurare l accuratezza dei nostril testi alcuni errori possono tuttavia ancora persistere Se trovate un errore per favore comunicatecelo inviandoci un e mail ad editor parallax com Ci sforziamo continuamente di migliorare i nostri materiali educativi e la nostra documentazione quindi revisioniamo in continuazione i nostri testi Saltuariamente un foglio di Errata con una lista di errori conosciuti e di correzioni per un determinato testo sar inserito nel nostro sito www parallax com Vi preghiamo di controllare nei download gratuiti le singole pagine di prodotto per file di errata Indice Prefazione aaa ix Un Robot Autonomo ed un telecomando e Ix OONO celere alate Ix Gruppi di Supporto e Discussione i x Guida pergi Insegnanila salle ila eba x Le Serie Didattiche Stamps in Class xi Traduzioni in Altre LINQUE Error Bookmark not defined Contributi Speciali section xiii Capitolo
83. are il vostro telecomando e provare a programmarlo con i codici dei VCR SONY Uno di questi di solito opera facendo funzionare il telecomando con la stessa codifica PWM dei controlli per i TV SONY Ricordatevi che tutto ci funziona con alcuni non con tutti i telecomandi universali tasti per il VCR possono quindi essere usati per abilitare le funzioni di controllo del VCR Premesso che abbiate programmato il codice giusto la maggior parte dei tasti con le funzioni TV continueranno a funzionare Potete usare IrRemoteButtons bs2 per visualizzare i valori di remoteCode per ciascun tasto di controllo del VCR ed espandere il vostro elenco di costanti la direttiva CON valori della variabile remoteCode per i tasti di controllo del VCR STOP PAUSE PLAY REWIND FAST FORWARD e RECORD dovrebbero avere valori tra 24 e 29 Pagina 68 Infrarossi per il Controllo a Distanza del Boe Bot ATTIVIT 3 COLLAUDO DELL APPLICAZIONE CON LA NAVIGAZIONE DEL BOE BOT Ci sono molti kit applicativi note applicative ed articoli di mensili che mostrano come usare 1 moduli microcontrollori BASIC Stamp con tutti 1 tipi di sensori attuatori e coprocessori Potete usare molte di queste risorse per aggiungere funzioni al vostro Boe Bot Molti programmi esempio gi scritti in queste risorse sono formattati in modo simile all applicazione IrRemoteButtons bs2 nell Attivit che avete appena terminato Vedrete spesso dichiarazioni di costanti per significare n
84. arossi ATTIVIT 1 CONFIGURAZIONE DEL TELECOMANDO In questa attivit programmerete il vostro telecomando universale in modo che esso invii messaggi PWM usando il protocollo SONY In questo caso il termine programmazione si riferisce alla sequenza di tasti che verranno premuti sul telecomando per istruirlo ad emettere impulsi secondo il protocollo SONY AT Se cambiate le pile del vostro telecomando probabilmente dovrete ripetere passi di J questa attivit Perch Perch quando rimuovete le pile dal vostro telecomando verranno op persi dati di impostazione pr il protocollo SONY Pagina 8 Infrarossi per il Controllo a Distanza del Boe Bot Componenti per il telecomando ad Infrarossi 1 telecomando Universale 1 Manuale di istruzioni per il telecomando 2 pile alkaline AA Come Configurare il telecomando per il Kit Parallax Queste istruzioni sono specifiche per il particolare telecomando fornito con il kit applicativo IR Remote AppKit Se stete usando un telecomando diverso controllate sul suo manuale di istruzioni per trovare il modo di programmarlo per controllare un TV SONY Manuali di Istruzioni mancanti kit IR Remote AppKit venduto dalla Parallax stato collaudato con queste attivit ed completo del manuale di istruzioni per il modello di telecomando fornito Se volete provare queste attivit con un telecomando gi in vostro possesso dovrete necessariamente avere il relativo manuale di istruz
85. arossi Tuttavia alcune delle attivit successive di questo capitolo faranno uso dell intero circuito di rivelazione di IR per la navigazione autonoma combinata con il controllo remoto Pagina 4 Infrarossi per il Controllo a Distanza del Boe Bot Figura 1 2 Componenti del Boe Bot Kit Elenco Componenti 2 Rivelatori di Infrarossi 2 LED IR corpo chiaro 2 LED IR Assieme di schermo 2 Resistenze 220 Q 2 Resistenze 1 KQ 1 Altoparlante Piezo 2 LED rossi 1 2 3 Longer lead x i Flattened edge Gold T Silver or Blank m ZINA Red Brown 220 Q Red Gold f Silver or Blank a Brown Red 1 kQ Black Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 5 COME IL TELECOMANDO INVIA I MESSAGGI La Figura 1 3 mostra come il telecomando pu essere usato per inviare messaggi al Boe Bot Quando viene premuto un tasto del telecomando esso f lampeggiare il suo LED IR a 38 5 kHz emettendo un codice per quel tasto Il codice viene prodotto controllando il tempo di lampeggiamento del LED IR La sequenza di lampeggi IR emessa mostrata nella figura corrisponde all inizio del codice che dice ad un TV SONY che stato premuto il tasto n 3 Per inviare messaggi ad un TV SONY il telecomando deve emettere infrarossi per 2 4 ms segnalando che un messaggio st per iniziare Il messaggio che segue consiste in una combinazione di emissioni di 1 2 ms binario
86. ate questa durata di messaggio IR con quella che avete calcolato sommando tutte le componenti del messaggio IR ATTIVIT 3 ACQUISIZIONE DEI MESSAGGI IR In questa Attivit scriverete programmi per misurare ed acquisire ciascun impulso del messaggio PWM inviato dal telecomando ad infrarossi In ogni messaggio ci sono un totale di dodici impulsi di dati e ciascuno pu essere acquisito e memorizzato Programmando il BASIC Stamp per acquisire e memorizzare questi impulsi avrete l ngrediente base per l invio di messaggi al vostro Boe Bot con il telecomando Introduzione alle Variabili Array Le misure di dodici impulsi devono essere memorizzate separatamente perch essi costituiscono ciascuno una componente unica del messaggio Ma anche cos essi sono correlati tra di loro Sono tutte misure di impulsi e devono essere esaminati per determinare quale tasto sul telecomando stato premuto Il modo migliore per memorizzare un gruppo di valori correlati con un tipo particolare di variabile chiamata variabile array Una variabile array un gruppo di variabili che hanno tutte lo stesso nome Dichiarare una variabile array simile alla dichiarazione di molte altre variabili La sola differenza che viene aggiunto tra parentesi un numero vicino all argomento Size che indica quante variabili dovranno essere create che condivideranno lo stesso nome Questa la sintassi della dichiarazione di una variabile array name VAR Size n quest
87. ctionDistance bs2 Aprite IrRemoteKeypad bs2 e salvatelo come KeypadDirectionDistance bs2 Aggiungete queste direttive PIN Capitolo 2 Creare ed usare Applicazioni Remote Pagina 85 Boe Bot Servo Pins ServoLeft PIN 13 ServoRight PIN 12 Aggiungete questa dichiarazione nella sezione delle Variabili Boe Bot navigation variables direction VAR Byte counter VAR Byte Aggiungete la routine di inizializzazione per l indicazione di start reset del Boe Bot insieme con alcune istruzioni operative per il Terminale di Debug Questa sezione dovrebbe essere inserita subito prima della sezione Routine Principale n ass RRS es rs ee ec a a S DEBUG Program Starting CR CR Start reset indicator FREQOUT Speaker 2000 3000 DEBUG Use CH VOL for direction CR Debug instructions then type distance up to CR 255 then press ENTER CR CR Sostituite 11 codice della sezione Routine Principale con DO DEBUG Select direction CH VOL CR DO GOSUB Get_Ir_Remote_Code IF remoteCode lt ChUp OR remoteCode gt VolDn THEN DEBUG Select direction CH VOL CR GOSUB Beep_Error ENDIE LOOP UNTIL remoteCode gt ChUp AND remoteCode lt VolDn direction remoteCode GOSUB Beep_Valid DEBUG Enter number of pulses CR GOSUB Get_Multi_Digit_Value Pagina 86 Infrarossi per il Controllo a Distanza del Boe Bot DEBUG The value is DEC value CR DEBUG Runnings CR CR FOR counter 1 TO
88. d il Terminale di Debug Circuit o di Rivelazione IR Rivelatore IR visto dall alto Per la piedinatura vedere anche la Figura del Contenuto del Kit BASIC Stamp 2 Esempio Basilare IrRemoteCodeCapture bs2 Questo programma esempio spiega come acquisire e visualizzare un codice remoto con il BASIC Stamp 2 Se modificate la direttiva STAMP pu anche essere usato con il BASIC Stamp 2e o 2pe Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 169 Assicuratevi di configurare il vostro telecomando universale per controllare un TV SONY Usate la documentazione allegata al vostro telecomando universale Premere il tasto TV sul vostro telecomando in modo che sappiate di emettere segnali per TV Scaricate o digitate e poi lanciate IrRemoteCodeCapture bs2 Puntare il telecomando verso il rivelatore IR e premere e rilasciare 1 tasti numerici Provate anche i tasti POWER CH VOL ed ENTER per vedere i codici di questi valori L _C_ A Ir Remote Application IrRemoteCodeCapture bs2 Process incoming SONY remote messages amp display remote code SSTAMP BS2 MS PRESTI NSOE Enno aio irPulse VAR Word Stores pulse widths remoteCode VAR Byte Stores remote code DEBUG BPress release remote lemons ss DO mn DOS OOP remoteCode 0 DO Wait for end of resting state RGMIMES o gt E S OESE LOOR UNTILL LePuULse gt 1000 PULSIN 9 0 irPulse Get data pulses IF irPulse
89. de 10 THEN remoteCode remotetode 1 I RETURN ria ee le ae rashes ABN GORE Get_Ir Distances distanceLeft 0 distanceRa ght Q FOR freqSelect 0 TO 4 LOOKUP fregSelect 37500 38250 39500 40500 41500 irFrequency BREOOW I 167 ly ise bacequiencey lrDetectLeft IN9 distanceLeft distanceLeft irDetectLeft FREQOUT 2 1 irFrequency irDetectRight INO Pagina 128 Controllo Remoto ad IR per il Boe Bot distanceRight distanceRight irDetectRight NEXT RETURN lucana cuoco rene ee enzo ice lea ae ie ae ne mn a ce ee a STO VEU Mere PULSOUT 13 pulseLeft Bo Ozio les Racine PAUSE 5 RETURN Come Funziona IrMultiBot bs2 Come menzionato in precedenza la routine principale seleziona una di tre diverse routine in base al valore memorizzato nella variabile operation A ciascuna iterazione del ciclo DO LOOP Se operation 1 viene eseguita la routine presente nella dichiarazione CASE 1 Questa la routine per il controllo remoto del Boe Bot con il telecomando usando 1 tasti CH VOL ed i tasti numerici Se operation 2 viene eseguita la routine presente nella dichiarazione casE 2 Questa la routine per la navigazione autonoma Se operation 3 viene eseguita la routine presente nella dichiarazione cASE 3 Questa la routine per il Boe Bot inseguitore DO SELECT operation CASE 1 Modified 7BitRemoteBoeBot bs2 CASE 2 Modified FastIrRoaming bs2 CASE 3 Modified FollowingBoe
90. de La porzione Il Vostro Turno di questa attivit vi dar qualche suggerimento per la soluzione di questo problema a Title e oe IR Remote for the Boe Bot IrRemoteButtons bs2 Capture and store button codes sent by a universal remote conFigurad to ECONO SONY TY SSTAMP BS2 SETS anna ME Ono Tan e ron RESERO ROERO RO a SONY TV IR remote declaration input received from IR detector IrDet PIN 9 A AT RiGee co ane RR nn SONY TV IR remote constants for non keypad buttons Enter CON I CRUPD CON 16 ChDn CON Ig VolUp CON 18 MONEDA CON 19 Power CON Zali A ia RE lean III Pagina 64 Infrarossi per il Controllo a Distanza del Boe Bot Y SONY TV IR remore tre aes VAR VAR Word Byte irPulse remoteCode Replace this DO LOOP with your own Code DO GOSUB Get_Ir Remote Code DEBUG CLS Remote code DEC remoteCode PAUSE 100 LOOP Subroutine Y SONY TV IR remote subroutine loads the remote code into the remoteCode variable Geb le Remote lode remoteCode 0 DO RCTIME IrDet 1 irPulse LOOP UNTIL irPulse gt 1000 RUSTNE ADS CESS ie eee gt Cb Siew gt 500 THEN rcemoceCode RCTIME LrDet 0 irpulse ie LePuLlse gt 300 THEN remoceCode RCTIME ise ber 0 dete leer Pe LePulse gt 300 THEN remoceCode RCTIME LrDet 0 irPuLlse iF icPulse gt 300 THEN remotceCode ROMMERE O se LE LePuULse gt 300 THEN remotetode ROEMER RADSIN ie LePuLlse gt 300 THEN rcemoceCode
91. di lanciate e testate il programma ATTIVIT 2 BOE BOT MULTI FUNZIONI CON SELEZIONE REMOTA Con la pressione di un tasto del telecomando potrete selezionare una fra tre differenti funzioni del Boe Bot e Boe Bot controllato dal telecomando e Boe Botanavigazione autonoma e Boe Bot inseguitore Pagina 116 Controllo Remoto ad IR per il Boe Bot Selezionare tra Routine Principali Il prossimo programma esempio inizia con 7BitRemoteBoeBot bs2 da questo testo La routine principale da questo programma e la routine principale da FastIrRoaming bs2 e da FollowingBoeBot bs2 da Robotica con il Boe Bot possono tutte essere mescolate in dichiarazioni CASE La routine principale di questo nuovo programma pu quindi usare una grande singola dichiarazione SELECT CASE che usa una variabile chiamata operation per selezionare quale routine eseguire Il risultato un Boe Bot con tre funzioni selezionabili da telecomando IR e Ricordate che le direttive PIN le dichiarazioni di costanti e di variabili e le subroutine ww devono anch esse essere importate da FastlrRoaming bs2 e da FollowingBoeBot bs2 Far funzionare tutte le routine insieme necessita di alcuni aggiustamenti Ci deve essere un qualche modo per interrompere il compito corrente del Boe Bot che sia la navigazione il controllo remoto o l inseguimento in modo che gli possiate comunicare di eseguire un compito differente Dal momento che 1 tasti numerici di canale e di volume so
92. di nuovo hardware spiegazione dei funzionamenti e dimostrazione di nuove tecniche con il PBASIC Eseguendo le attivit rispondendo alle domande risolvendo gli esercizi ed 1 progetti accrescerete la vostra capacit di programmazione elettronica e robotica man mano che apprenderete circa la comunicazione ed il controllo tramite infrarossi La conoscenza e le capacit che acquisirete vi saranno utili per i vostri progetti futuri di robotica e o progettazione di prodotti NOTA Per completare l argomento di questo testo dovrete gi avere un robot Parallax Boe Bot completamente assemblato e funzionante La IR Remote AppKit Documentation riassume alcune delle attivit di questo libro in poche pagine principalmente lo stretto indispensabile perch un entusiasta con le capacit di programmazione medio alte del BASIC Stamp capisca come funziona la comunicazione tramite infrarossi e come usare gli applicativi sviluppati in questo testo Potete trovarlo sia in forma di inserto nella confezione del Parallax IR Remote AppKit sia nella Appendice A di questo testo NOTA non richiesto un robot Boe Bot potete usare il vostro progetto BASIC Stamp Questo libro e la IR Remote AppKit Documentation sono ambedue disponibili per il download gratuito dal sito www parallax com o Pagina 2 Infrarossi per il Controllo a Distanza del Boe Bot CONTENUTO DEL KIT Il kit IR Remote AppKit contiene un telecomando universale simile a quello most
93. dici e l impulso di start Dopo che avrete sommato gli impulsi dei dati potete usare un elemento dell array time per memorizzare il totale ed altri tre per le altre misure 2 Modificate 4BitRemoteBoeBot bs2 in modo che faccia eseguire un cerchio completo ogni volta che viene premuto il tasto 5 3 Modificate 4BitRemoteBoeBot bs2 in modo che 1 tasti CH e VOL funzionino insieme agli altri tasti Pagina 44 Infrarossi per il Controllo a Distanza del Boe Bot Soluzioni Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 El E2 PI PWM st per Pulse Width Modulation modulazione a larghezza di impulso e pu essere usata per la conversione da digitale ad analogico per il controllo di motori e per le comunicazioni Un segnale alto A pagina 6 si dice il termine programmazione si riferisce alla sequenza di tasti che verranno premuti sul telecomando per istruirlo ad emettere impulsi secondo il protocollo SONY Pin seleziona il piedino I O che controller l impulso in arrivo State configura il comando PULSIN per misurare impulsi sia positivi che negativi Variable una variabile che memorizza le misure delle durate degli impulsi in unit di 2 us l argomento State deve essere posto ad 1 per misurare impulsi positivi mentre deve essere cambiato a 0 per misurare impulsi negativi Usate un ciclo per continuare a misurare gli impulsi ma attivate un particolare blocco di codice solamente se la durata rientra in un
94. e BITO setClear IF index 1 THEN value BIT setClear IF index 2 THEN value BIT2 setClear IF index 3 THEN value BIT3 setClear IF index 4 THEN value BIT4 setClear IF index 5 THEN value BIT5 setClear IF index 6 THEN value BIT6 setClear IF index 7 THEN value BIT7 setClear Dopodich PAUSE 500 attende per mezzo secondo quindi il ciclo DO LOOP main si ripete Quando lo f lo schermo viene cancellato e viene visualizzata la nuova rappresentazione della variabile value Capitolo 2 Creare ed usare Applicazioni Remote Pagina 55 Il Vostro Turno Aggiungere la Conversione Decimale al Programma Questo programma pu essere anche un utile strumento per esaminare la relazione tra numeri binari e decimali Salvate SetAndClearWithDotBit bs2 in SetAndClearWithDotBitYourTurn bs2 Modificate il comando DEBUG in modo che sia DEBUG CLS BIN8 value lt Binary value CR 76543210 lt Bit index CR Decimal value DEC3 value CR CR Type bit index 0 to 7 CR V Lanciate la vostra versione modificata del programma Dovrebbe ora visualizzare l equivalente decimale del numero binario 1 cui bit voi state abilitando o disabilitando Partendo con il bit pi a destra bit 0 abilitatelo annotate il valore e disabilitatelo Ripetere con bit 1 quindi con bit 2 su fino a bit 7 Spiegate che cosa avete osservato Quindi provate ad abilitare e disabilitare 1 bit in modo che possiate conta
95. e funzioni di rilevazione IR dal programma TestIrPairsAndIndicators bs2 ed incollatele nel vostro progetto di programma subito prima della dichiarazione SELECT nella routine principale FREQOUT 8 1 38500 irDetectLeft IN9 FREQOUT 2 1 38500 irDetectRight INO yV Modificate questa dichiarazione CASE CASE 2 ChUp PULSOUT 13 850 PULSOUT 12 650 In modo che sia CASE 2 ChUp IF irDetectLeft 1 AND irDetectRight 1 THEN PULSOUT 13 850 PULSOUT 12 650 ELSE FREQOUT Speaker 3 4500 ENDIF P2 Aggiungete dichiarazioni case per ciascuna funzione nella SELECT CASE esterna del ciclo DO LooP della routine principale Ricordate di aggiornare l elenco del men nella routine di Inizializzazione DO SELECT operation CASE 1 Pagina 162 Controllo Remoto ad IR per il Boe Bot CASE CASE DE CASE LE pu pu 2 3 operation is 4 put Boe Bot in servo centering mode 4 IN9 0 THEN operation 1 lseLeft 750 lseRight 750 GOSUB Send Pulse If operation is 5 run slow roaming routine for the lead Boe Bot CASE 5 Modified main routine from FastIrRoaming bs2 goes here IF IN9 0 THEN operation 1 FREQOUT 8 1 38500 Check IR Detectors irDetectLeft IN9 FREQOUT 2 1 38500 irDetectRight INO Decide how to navigate IF irDetectLeft 0 AND irDetectRight 0 THEN TOGGLE 1 TOGGLE 10 pulseLeft 725 pulseRight 775 ELSEIF irDetectLeft 0 THEN TOGGLE 10 pulseLeft 775 pulseRig
96. e rilasciare i tasti Accertatevi che il Terminale di Debug riporti il tasto giusto Iniziate con i numeri canale volume etc Potete modificare od espandere la dichiarazione SELECT CASE per provare 1 tasti VCR definiti nella sezione Costanti Play Stop Rewind etc Ci sono di solito diversi differenti codici per la configurazione dei telecomandi universali per controllare VCR SONY quindi potreste dover fare un p di prove prima di trovare il codice che parli lo stesso linguaggio PWM del controllore TV Potete stabilire se il codice funziona perch 1 tasti numerici CH VOL e POWER continueranno a funzionare dopo aver premuto il tasto VCR Oe Title Pee eee ee ee ee ee ep ae ee A Re ee ee ae ae Ir Remote Application IrRemoteButtonDisplay bs2 Process incoming SONY remote signals and display the corresponding button in the Debug Terminal DoS VAMP BSZ RE CALA 23x 26r 20 OL 2e OPRA TO o V1 0 Supports most SONY TY anci YCR CONTtTroLl buttons i SUPpores BASIC Stramo 2 295X 2e 29 and 208 modules s uan ere SPAN re te aoa gc ar re a a ee rni SONY TV IR remote declaration input receives from IR detector IrDet PIN 9 I O pin tOo IR detector output A alae BC ane RR e Pulse duration constants for SONY remote SELECT SSTAMP CASE BS2 BS2E BS2PE U PULSE durations Tire shold stark CON Aloo Message rest vs data rest ThresholdPulse CON 500 SE Ener l vs 0 for PULSIN ThresholdEdge CON 300 wy B
97. elatore di IR per un messaggio remoto Componenti del rivelatore Infrarosso Tutti 1 componenti della attivit precedente 1 Rilevatore Infrarosso 1 Resistenza 220 Q rosso rosso marrone 2 Ponticelli in filo ll circuito di rivelazione IR necessario un solo rivelatore IR per ricevere messaggi dal telecomando IR vedere la Figura 1 6 Assemblate questo circuito sull area prototipale del vostro Boe Bot I numeri 1 2 3 sul rivelatore IR sono mostrati anche sulla mappa dei piedini in Figura 1 e do 2 potete usarla come guida per assicurarvi che il rivelatore IR sia correttamente collegato Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 11 Vdd Figura 1 6 Circuito di Rilevazione IR Misurare gli impulsi di Start e dei Dati Il comando PULSOUT che avete usato per inviare impulsi ai servo del Boe Bot ha un comando complementare chiamato PULSIN La sintassi del comando PULSIN PULSIN Pin State Variable Pin chiaramente usato per scegliere il piedino I O su cui misurare l impulso State viene usato per determinare se l impulso debba essere alto 1 o basso 0 Variable memorizza la durata misurata dal BASIC Stamp Impulso A
98. ella numerazione binaria pu solamente essere 1 o 0 La Figura 2 1 mostra uno schema dei bit di un numero binario ad otto bit byte Il bit pi a destra bit 0 il successivo bit 1 quindi bit 2 fino a bit 7 Figura 2 1 Bit in un Byte Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Binario a Ciascuna casella pu contenere 1 o 0 Ciascun bit in un numero binario indica se una certa potenza di 2 contenuta o no Bit 0 indica se il valore 1 presente o no nel numero binario bit 1 indica se il valore 2 presente o meno bit 2 indica se 4 presente e cos via Anche se avete un numero binario molto grande potete sempre conoscere il valore di un singolo bit perch JR Questo un esempio di come prendere 2 ed elevarlo alla potenza della sua posizione di bit Bit 0 indica che il valore 1 perch 2 1 Similmente bit 1 indica che 2 presente perch 2 2 Bit 2 indica che 4 presente perch 2 4 Bit 6 indica che 64 presente perch 2 2x2x2x2x2x2 64 La Figura 2 2 mostra come convertire un numero binario fino ad otto bit byte nel suo corrispondente valore decimale e Per prima cosa inserite il numero il numero binario nelle caselle della riga superiore Assicuratevi di inserire il bit pi a destra nella casella pi a destra quindi continuate nella casella successiva verso sinistra fino ad inserire tutti ed otto 1 bit nelle caselle Capitolo 2 Creare ed usare Applica
99. ento dopo l inserimento dell ultima cifra l uno del numero 0001 e inserito il vostro codice significherebbe che il codice non stato accettato dal microcontrollore interno al telecomando ripetete la procedura A Se il LED indicatore rimanesse acceso o emettesse alcuni lampeggi dopo che avete Il Vostro Turno provare il telecomando su altri dispositivi Se desideraste provare il telecomando sul vostro TV VCR etc provate a seguire le istruzioni del telecomando per verificarne il funzionamento sulle vostre apparecchiature Prima di affrontare la prossima attivit se avete seguito le istruzioni del punto precedente assicuratevi di riprogrammare il telecomando per un TV SONY ATTIVIT 2 CARATTERIZZAZIONE DEI MESSAGGI IR Questa Attivit affronta la misurazione degli impulsi che il rivelatore IR del Boe Bot invia quando rileva messaggi dal telecomando La Figura 1 5 mostra un diagramma di temporizzazione dell uscita del rivelatore IR all inizio di un messaggio IR a distanza Il rivelatore IR invia un segnale basso quando rileva infrarossi alternati ad una frequenza di 38 5 KHz Quando il rivelatore IR non rileva un segnale infrarosso a 38 5 kHz invia un segnale alto Prima che il messaggio possa venire interpretato dal modulo BASIC Stamp le durate di questi segnali bassi dovranno essere misurate e memorizzate Pagina 10 Infrarossi per il Controllo a Distanza del Boe Bot Figura 1 5 Uscita del riv
100. er acquisire 1 dodici dati degli impulsi Notare come ciascuno venga memorizzato in elementi diversi dell array Questi dodici comandi PULSIN dimostrano anche come possono essere usati valori costanti come ad es 0 1 2 fino ad 11 per indicizzare gli elementi di un array PULSIN 9 0 time 0 PULSIN 9 0 time 1 PULSIN 9 0 Cime 2 PULSIN 9 0 time 11 Il prossimo un altro esempio di come indicizzare l indice dell array in un altro modo con una variabile In questo caso la variabile index e viene incrementata a ciascuna iterazione di un ciclo FOR NEXT L ultimo argomento del comando DEBUG DEC time index Dal momento che il valore di index aumenta di uno ad ogni iterazione del ciclo FOR NEXT il comando DEBUG visualizza il valore memorizzato in ciascun elemento successivo dell array time Alla prima iterazione del ciclo il comando DEBUG visualizza time 0 alla seconda iterazione visualizza time 1 e cos via FOR index 0 TO 11 DEBUG CRSRXY 0 4 index time DEC index CRSRXY 9 4 index DEC time index NEXT LOOP Pagina 30 Infrarossi per il Controllo a Distanza del Boe Bot L ultimo comando LooP invia il programma indietro al primo comando bo Il blocco di codice inserito in questo DO LOOP esterno si ripete continuamente processando 1 messaggi man mano che il telecomando li invia Il Vostro Turno Acquisizione della mappa degli impulsi per ciascun tasto Le due Attivit segue
101. eration remoteCode lt New DEBUG 2 perat om sok lt New EINE oop CR lt New FREQOUT Speaker 100 3500 lt New PAUSE 100 New FREQOUT Speaker 100 3500 lt New PAUSE 200 lt New CASE 2 Ch 2 Forwarcl PU SOUR aS SO RUS OMlaeZ 86 a0 CASE 4 orn Rotate Left PUM Ue ws e650 RUMS OVIE 16 510 CASE 6 VolUp Rotate Right PULSOUT 13 850 PULSOUT 12 850 CASE 87 ChDA Backward RUPS CAGE ke enone IEA ONS CUO Me ak a s rove CASEI Bivyvot Rd Mes ints RUMS OUER RUINS OVIE SO CASE 3 PS Pivot Fwa right PAV SOU Sees ESS OIC RM patra 750 CASE 7 RE vo Back left BU SOW Ase ee ES OU deze asa CASE 9 Pivot Back right Pagina 126 Controllo Remoto ad IR per il Boe Bot PW SOUsE 165 250 a0 PESO Use ze ro CS Bian Biter Es Hold Posicion PULSO L3 790 FeO Ties COR aye O ENDSELECT If operation 2 execute modified FastIrRoaming bs2 CASE 2 cana Modified main routine from FastIrRoaming bs2 goes here IF IN9 0 THEN operation 1 u lt New HREOOUT Sa 33500 Check IR Detectors ie ete Ge beret NO EERE OUR ez ce learns 00 irDetectRight INO Decide how to navigate IF irDetectLeft 0 AND irDetectRight 0 THEN pulseLeft 650 pulseRight 850 BUSELE GseDebect Lert 0 THEN pulseLeft 850 pulseRight 850 ELSEIF irDetectRight 0 THEN pulseLeft 650 pulseRight 650 ELSE pulseLeft 850 pulseRight 650 ENDIF
102. es bs2 Il primo impulso che esamineremo usando il comando PULSIN l impulso di start da 2 4 ms Questo impulso non sar esattamente di 2 4 ms 2400 us ma dovrebbe esserci abbastanza vicino pi o meno 250 us Questo l impulso che significa che altri dodici impulsi di dati verranno inviati dal telecomando CountStartPulses bs2 conta il numero di impulsi bassi ricevuti la cui duraata ricade nella gamma da 1 95 a 2 85 ms La Figura 1 8 mostra ci che il vostro Terminale di Debug dovrebbe visualizzare dopo che avete premuto un tasto numerico per un paio di secondi puntando il telecomando verso il rivelatore IR La durata mostrata nel Terminale di Debug per un impulso campione di start 2562 us Sebbene non sia esattamente 2400 us ampiamente entro i 250 us L ita Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 13 a ty Debug Terminal 1 of x Com Port Baud Rate ity COME E 9600 Data Bits Flow Control Tx DIR RTS oI ZI RX DSR CTS Figura 1 8 Terminale di Debug di CountStartPulses bs2 Macros Pause Clear Close TT Echo Off Digitate e lanciate CountStartPulses bs2 Puntate il telecomando verso la lente del rivelatore di infrarossi Premere e mantenere premuto uno dei tasti numerici 0 9 sul telecomando Assicuratevi che vengano rilevati impulsi nella gamma 2 25 2 75 ms il Terminale di Debug visualizzer valori da 2250 a 2750 us Annotate qu il va
103. este del Terminale di Debug Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 175 Replace the DO LOOP in the Main Routine with this one for multi digit value acquisition up to 65535 Value stored in value variable DEBUG CR CR Type value from CR O to 65535 CR then press ENTER CR CR DO value 0 remoteCode 0 DO value value 10 remoteCode DO GOSUB Get_Ir Remote Code IF remoteCode gt 9 AND remoteCode lt gt Enter THEN DEBUG Use digit keys or ENTER CR PAUSE 300 ELSE DEBUG You pressed IF remoteCode Enter THEN DEBUG Enter CR ELSE DEBUG DEC remoteCode CR ENDIF PAUSE 300 ENDIF LOOP UNTIL remoteCode lt 10 OR remoteCode Enter LOOP UNTIL remoteCode Enter DEBUG value CR Ready for next value CR LOOP Applicazione Boe Bot per il BASIC Stamp 2 Questa nuova applicazione richiede un robot Boe Bot con un modulo BASIC Stamp 2 che sarete in grado di controllare premendo e mantenendo premuti 1 tasti numerici per eseguire le manovre mostrate nella figura Inoltre potrete usare anche CH avanti CH Indietro VOL rotazione a destra VOL rotazione a sinistra A Pagina 176 Controllo Remoto ad IR per il Boe Bot Pivot Forward Pivot Left Right T DI ia Position Y 3 NV Controllo della Direzione con la Rotate sm Rotate Tastiera Numerica 789 Pivot Pivot Left Right Reverse Backward Reverse La seguente routine
104. et_Ir Remote Code DEBUG CLS Remote code DEC remoteCode PAUSE 100 LOOP Il blocco di codice nella subroutine Get_Ir_Remote_Code per la maggior parte il contenuto del ciclo Do LooP del programma PulsesToByteValue bs2 dell Attivit 1 Ci sono due differenze Primo in una subroutine invece che nel ciclo Do LooP della routine principale Secondo questa subroutine ha due dichiarazioni IF THEN subito prima del comando RETURN che sono state studiate nell ultima sezione Il Vostro Turno nell Attivit 1 Esse regolano il valore che la variabile remoteCode memorizza in modo che essa coincida con le cifre dei tasti che vengono premuti dica Subroneite Gee Remove cede lita a RSS RR SONY TV IR remote subroutine loads the remote code into the remoteCode variable Get _Ir Remote Code remoteCode 0 Clear all bits in remoteCode DO Wait for rest between messages RCTIME IrDet 1 irPulse LOOP UNTIL irPulse gt 1000 PULSIN IrDet 0 irPulse Measure pulse IF irPulse gt 500 THEN remoteCode BITO 1 Set or leave clear bit 0 RCTIME IrDet 0 irPulse Measure next pulse IF irPulse gt 300 THEN remoteCode BIT1 1 Set or leave clear bit 1 RCTIME IrDet 0 irPulse etc IF irPulse gt 300 THEN remoteCode BIT2 1 RCTIME IrDet 0 irPulse IF irPulse gt 300 THEN remoteCode BIT3 1 RCTIME IrDet 0 irPulse IF irPulse gt 300 THEN remoteCode BIT4 1 RCTIME IrDet 0 irPulse
105. etto GOSUB Beep_Valid Un altro comando DEBUG vi richiede di inserire il numero degli impulsi usando la tastiera numerica del telecomando DEBUG Enter number of pulses CR La chiamata alla subroutine Get_Multi Digit_Value la parte dove viene usata la tastiera numerica per digitare il numero di impulsi da inviare Questa anche la parte dove il valore di remoteCode cambia che il motivo per cui la direzione che avevate inserito deve essere copiata in un altra variabile A differenza della variabile remoteCode la variabile value non verr sovrascritta prima che gli impulsi siano inviati ai servo Quindi value non deve essere copiata in un altra variabile pu memorizzare il numero degli impulsi GOSUB Get_Multi_Digit_Value Un comando DEBUG vi permette anche di verificare il valore inserito se lasciate 11 Boe Bot collegato al cavo di programmazione Un secondo comando DEBUG mentre ai servo vengono inviati gli imuplsi visualizza il messaggio Running DEBUG The value is DEC value CR DEBUG TRUNDITAGS Lee CR CR La direzione ora memorizzata nella variabile direction ed il numero degli impulsi memorizzato nella variabile value Un ciclo FOR NEXT usa la variabile value per determinare quanti impulsi devono essere inviati ai servo All interno del ciclo FOR NEXT una dichiarazione SELECT CASE usa il valore memorizzato nella variabile direction per decidere di inviare ai servo impulsi di quale durata Dopo
106. frequenza di 38 5 kHz Se questi infrarossi vengono riflessi da un oggetto sul percorso del Boe Bot esso verr rilevato dal rivelatore di IR Ricordate che questo valore deve essere memorizzato in una variabile bit Immediatamente prima del comando FREQOUT Un istante dopo l uscita del rivelatore di IR ritorna in stato alto indicando che non si rilevano infrarossi Durante la navigazione senza che ci siano messaggi IR dal telecomando il ciclo DO LOOP della routine principale viene eseguito in continuazione per controllare con gli IR se ci sono ostacoli e per controllare 1 servo Il modo di intercettare un messaggio IR remoto di controllare lo stato delle uscite dei rivelatori IR prima di emettere infrarossi con 1 LED IR Il momento adatto per far questo all inizio del ciclo Do LooP della routine principale perch questo viene ad essere prima della pausa di 15 ms alla fine del ciclo DO LOOP La dichiarazione IF IN9 0 OR speed 0 THEN effettua il controllo effettivo di un messaggio IR remoto Esso controlla anche se la variabile speed stata impostata o meno La prima volta che il programma viene lanciato il valore di speed inizializzato a zero La dichiarazione IF THEN lo rileva ed il blocco di codice al suo internovi inviata ad inserire una velocit La dichiarazione IF THEN rileva anche quando un telecomando st inviando un messaggio Quando un messaggio infrarosso viene emesso IN9 0 Il blocco di codice inizia
107. funzioni e 1 Boe Bot controllato da remoto e 2 Navigazione IR alla masssima velocit e 3 Boe Bot Inseguitore e 4 Modalit di centratura dei servo e 5 Navigazione a bassa velocit per il Boe Bot guida e 6 Rivelatore di interferenza a lampeggio singolo Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 159 Soluzioni Q1 Q2 Q3 Q4 Q5 Q6 EL Il nome della variabile speed Secondo la Guida Sintattica del PBASIC esso pulisce lo schermo In altre parole esso cancella qualsiasi cosa attualmente visualizzata nella finestra di Trasmissione del Terminale di Debug Se nessuna delle dichiarazioni CASE corrisponde alla variabile di SELECT il programma cerca la parola chiave ENDSELECT e continua da li Potete aggiungere una dichiarazione alternativa CASE ELSE con qualsiasi codice che volete che sia eseguito dalla dichiarazione SELECT CASE se la variabile che stata selezionata contiene un valore che non corrisponde a nessuna delle altre dichiarazioni CASE L operatore Address vi consente di specificare l indirizzo di partenza della EEPROM per il primo DataItem della direttiva DATA Il Simbolo per quella direttiva data sar una costante uguale al valore che segue l operatore Address Questo sar anche l indirizzo del primo DataItem nella direttiva DATA Il comando WRITE contiene un DataItem in una Locazione nella EEPROM il comando READ estrae un DataItem da una Locazione della EEPROM Un ciclo DO LOO
108. gt 500 THEN remoteCode BITO 1 RCTIME 9 0 sist idee Le Perks gt 300 THEN rcemoreCoce BITLI 1 RCTIME 9 0 irPulse IF irPulse gt 300 THEN remoteCode BIT2 1 RCTIME 9 eee ir LePulse gt 300 THEN remorteCoce BITS 1 RCTIME 9 0 irPulse Le er tse 300 THEN rcemoteCoce BLT 1 RCTIME 9 0 irPulse Estense gt 300 THEN cemoreCoce BLITS 1 ROMME O ea IF irPulse gt 300 THEN remoteCode BIT6 1 Pagina 170 Controllo Remoto ad IR per il Boe Bot Map digit keys to actual values IF remoteCode lt 10 THEN remoteCode IF remoteCode 10 THEN remoteCode remoteCode 1 0 DEBUG CLS remoteCode LOOP REPETE NDO OOE Come Funziona IrRemoteCodeCapture bs2 A ciascuna iterazione del ciclo DO LOOP esterno viene azzerato il valore di remoteCode C anche un ciclo DO LOOP interno con un comando RCTIME per rilevare la fine di un segnale alto maggiore di 2 ms Questo indica che l intervallo tra messaggi appena terminato e che st cominciando l impulso di start Il primo comando PULSIN acquisisce il primo impulso dati e la dichiarazione IF THEN successiva usa il valore della variabile irPulse per impostare porre ad 1 binario o meno il bit corrispondente della variabile remoteCode Dal momento che mentre la dichiarazione IF THEN ancora in esecuzione il secondo impulso dati gi iniziato la durata residua del secondo impulso dati viene misurata con un comando RCTIME Anche questo second
109. he specifica l indirizzo della EEPROM da cui leggere e Variabile una variabile normalmente un byte dove il valore verr memorizzato Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 135 La caratteristica maggiore di Locazione che pu essere una variabile costante espressione Una espressione tipicamente una qualche combinazione di variabili e costanti che implicano delle operazioni matematiche Questo un estratto dal prossimo programma esempio che usa le espressioni nell argomento Locazione dei suoi comandi READ eeIndex 0 DO UNTIL direction Q OR eeIndex 19 READ Maneuver_List eeIndex direction READ Distance_List eeIndex distance DEBUG direction ys DEC distance CR PAUSE 200 eeIndex eeIndex 1 LOOP Il primo comando READ aggiunge Maneuver_List una costante uguale a 15 a eeIndex una variabile il cui valore viene incrementato di uno ad ogni iterazione del ciclo Do LOOP Alla prima iterazione del ciclo DO LOOP eeIndex sar zero e Maneuver_List sar sempre 15 Il risultato che 11 comando READ estrae il byte presente all indirizzo 15 della EEPROM e lo memorizza nella variabile direction Dal momento che la direttiva DATA studiata in precedenza all indirizzo 15 memorizzava una F alla prima iterazione del ciclo il comando READ memorizza una F nella variabile direction Nella seconda iterazione eeIndex sar 1 mentre Maneuver_ List ancora 15 Il comando READ est
110. ht 775 ELSEIF irDetectRight 0 THEN TOGGLE 1 pulseLeft 725 pulseRight 725 ELSE pulseLeft 775 pulseRight 725 ENDIE GOSUB Send_Pulse Ses Modified Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 163 LOW 1 LOW 10 If operation is 6 test for ballast interference This versions of the ballast interference tester only triggers once If triggered the remote has to be used to reset the Boe Bot to function 6 to repeat the 1 shot ballast interference detection CASE 6 DO IF IN9 0 THEN operation 1 FOR counter 1 TO 10 FREQOUT 4 40 4500 PAUSE 50 NEXT EXIT ENDIE LOOP CASE ELSE IF IN9 0 THEN operation 1 lt New ENDSELECT tr lt New End SELECT operation LOOP Repeat Main Routine Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 165 Appendice A Documentazione del Kit Applicativo per Telecomando IR m 599 Menlo Drive Suite 100 General info parallax com NZ Zz Rocklin California 95765 USA Technical support parallax com L N M Office 916 624 8333 Web Site www parallax com Fax 916 624 8003 Educational www stampsinclass com INFRARED REMOTE APPKIT 29112 Una Tastiera senza fili per il Vostro Modulo Microcontrollore BASIC Stamp Con un telecomando universale ed un ricevitore infrarosso potrete aggiungere una tastiera senza fili alle vostre applicazioni con il BASIC Stamp Il ricevitore IR poco costoso ed occupa sola
111. i premete 1l tasto Enter Calcolate a mano il valore usando la procedura mostrata in Figura 2 2 Confrontate il risultato del vostro calcolo manuale con quello mostato nel Terminale di Debug Ll L Ll Ll L IR Remote for the Boe Bot BinaryToDecimal bs2 Enter a binary value into the Debug Terminal s Transmit Windowpane and get the decimal value in the Receive Windowpane STAMP BS2 See SPP Areal Gs value VAR Byte DO DEBUG Enter binary value DEBUGIN BIN value DEBUG Decimal MES D E CE OR LOOP Il Vostro Turno Contare in Binario Inserendo ciascuno dei numeri binari elencati all inizio di pagina 44 vi impratichirete nel conteggio binario Specialmente se approfondirete ulteriormente i mocrocontrollori la capacit di contare in binario sar una capacit su cui farete affidamento in continuazione Mentre il programma in funzione inserite nella finestra di trasmissione del Terminale di Debug ciascuno dei ventuno valori binari elencati all inizio di pagina 44 V Assicuratevi che la conversione decimale verifichi che stiate contando correttamente Capitolo 2 Creare ed usare Applicazioni Remote Pagina 51 Abilitare e Disabilitare Bit con il Modificatore BIT Sebbene il modificatore BIN faciliti l inserimento dei numeri binari nel Terminale di Debug non molto utile per la conversione di una serie di impulsi in un numero binario Ciascun impulso corrisponde ad un bit differente nel numero bina
112. iegate come un TV SONY pu distinguere tra i tasti CH e 1 keys ATTIVIT 5 AGGIUNGERE PRESTAZIONI AL BOE BOT CON IR 2BitRemoteBoeBot bs2 pu essere espanso per eseguire pi manovre La Figura 1 16 mostra un disegno della tastiera del telecomando IR con le manovre gi assegnate a ciascun tasto Ottenere tutte queste funzioni complete semplice ma ci vuole un p di lavoro extra per completare il compito In attivit successive apprenderete un modo pi universale di aggiungere o rimuovere tasti pulsanti funzione con molta meno fatica Pagina 36 Infrarossi per il Controllo a Distanza del Boe Bot Pivot Forward Pivot Left N C Right T P Hold Position Y i f y Figura 1 16 Controllo con la Rotate TO M Rotate Tastiera Numerica 7B Pivot J C Pivot Left Right Reverse Backward Reverse Una Temporizzazione Cambia ed Aumentano gli IF THEN Ci sono due modifiche che dovrete fare a 2BitRemoteBoeBot bs2 per fargli accettare questa specifica Potreste gi aver indovinato la prima modifica il programma dovr prendere la sua decisione con massimo tre impulsi forse quattro Date ora un altra occhiata alla Table 1 1 a pagina 31 Se tutto quello che state usando per prendere le vostre decisioni sono time 1 e time 0 il programma pu facilmente confondere il tasto 5 con il tasto 1 similmente con i tasti 2 e 6 e cos via Per risolvere questo problema potete usare il ragionamento IF THEN basato su tre impul
113. ifica che il pulsante non pu pi confondere con il flusso rapido di uno e zero inviati dall incontro delle superfici metalliche della chiusura di un contatto Sia la parte del circuito del pulsante che la parte del programma eliminano questi segnali imprevedibili Q8 L altoparlante ci permette di sapere che la pressione di un tasto ha inviato il messaggio desiderato El 0 1 10 11 100 101 110 111 E2 11000 E3 21 4096 E4 8 4 2 1 15 ES Dopo questi due comandi RCTIME IrDet 0 irPulse IF irPulse gt 300 THEN TtTemoteCode sBIT6 1 Aggiungete due ulteriori comandi per acquisire un altro impulso e quindi impostare azzerare remoteCode BIT7 RCT IMP IrDet 0 irPulse IF irPulse gt 300 THEN remoteCode BIT7 1 E6 SELECT remoteCode CASE Power onOffState onOffState ENDSELECT Pagina 100 Infrarossi per il Controllo a Distanza del Boe Bot PI Questa soluzione richiede il circuito dell altoparlante piezo che era stato aggiunto nell Attivit 4 Effettuate le seguenti modifiche al programma Aggiungete questa dichiarazione nella sezione Costanti RemoteSleep CON 54 Aggiungete una variabile di grandezza bit nella sezione Variabili Chiamandola sleeponoff Boe Bot control bit sleepOnoff VAR Bit Aggiungete questo comando alla sezione Inizializzazione che imposta sleepOnoff ad 1 ace Tnitializatiom henna aaa ae Se eee sleepOnoff 1 Aggiungete questo comando tra la chiamata alla s
114. igital Logic Understanding Signals ed Experiments with Renewable Energy si concentrano maggiormente su argomenti di elettronica mentre StampWorks fornisce una varieta di progetti utili agli hobbisti gli inventori ed 1 progettisti di prodotti interessati a provare differenti modalit progettuali Elements of Digital Logic Student Guide Version 1 0 Parallax Inc 2003 solo in Inglese Experiments with Renewable Energy Student Guide Version 1 0 Parallax Inc 2004 solo in Inglese Stamp Works Manual Version 1 2 Parallax Inc 2001 solo in Inglese Understanding Signals Student Guide Version 1 0 Parallax Inc 2003 solo in Inglese Riferimenti BASIC Stamp Manua Version 2 0c Parallax Inc 2000 Questo libro un riferimento essenziale per tutte le guide peer studenti Stamps in Class E pieno di informazioni sulla serie di moduli a microcontrollore BASIC Stamp sul nostro Editor BASIC Stamp e sul nostro linguaggio di programmazione PBASIC TRADUZIONI IN ALTRE LINGUE I testi educativi della Parallax possono essere tradotti in altre lingue con il nostro permesso e mail stampsinclass parallax com Se desiderate eseguire una traduzione vogliate contattarci in modo che vi si possa fornire 1 documenti in formato MS Word correttamente formattati con le immagini etc Potete anche aderire al gruppo di discussione per traduttori della Parallax da noi mantenuto Le istruzioni per trovare il Forum Translato
115. il ciclo riveler l intervallo dopo l ennesima ripetizione del messaggio IR Finalmente a quel punto il programma si muover ai comandi IF THEN e PULSOUT Questo ritardo causa un problema peer i servo Se il tempo tra gli impulsi servo arriva fino a 90 ms a causa dell incapacit del comando PULSIN di acquisire il primo intervallo tra 1 messaggi 1 servo non funzioneranno correttamente o non funzioneranno affatto La soluzione di questo problema nell uso di RCTIME Date una seconda occhiata alla Figura 1 17 Mentre PULSIN necessita sia del fronte di salita che del fronte di discesa per completare la sua misurazione ad RCTIME serve solamente un fronte di discesa Quindi anche se il programma inizia a controllare l intervallo tra messaggi solo dopo che partito sar ancora in grado di riconoscerlo Programma Esempio 3BitRemoteBoeBot bs2 Questo programma f reagire il Boe Bot quando si preme e si tiene premuto un dato tasto del telecomando Le direzioni di ciascun tasto sono mostrate in Figura 1 16 Il tasto 9 non funziona correttamente ma risolverete questo problema nella sezione Il Vostro Turno meglio assicurarsi che i tasti 1 8 funzionino prima di affrontare il tasto 9 Pagina 40 Infrarossi per il Controllo a Distanza del Boe Bot y Digitate e lanciate 3BitRemoteBoeBot bs2 Testate i tasti e divertitevi per un p a guidare il vostro Boe Bot V Spiegate il problema del tasto 9 usando la Table 1 1 come riferimento
116. il comando SELECT CASE PAUSE 20 mantiene costante l intervallo tra gli impulsi dei servo FOR counter 1 TO value SELECT direction CASE ChUp PULSOUT Servoleft 850 Capitolo 2 Creare ed usare Applicazioni Remote Pagina 93 PULSOUT ServoRight 650 CASE ChDn PULSOUT ServoLeft 650 PULSOUT ServoRight 850 CASE VolUp PULSOUT ServoLeft 850 PULSOUT ServoRight 850 CASE VolDn PULSOUT ServoLeft 650 PULSOUT ServoRight 650 ENDSELECT PAUSE 20 NEXT Il Vostro Turno Ripetere l Azione LAST Per il controllo della TV il tasto LAST in qualche caso etichettato PREV CH vi riporta indietro al canale che stavate vedendo prima del canale che state attualmente vedendo Il tasto LAST pu essere vantaggiosamente impiegato Questo una maniera di modificare il vostro programma per eseguire questo compito Salvate KeypadDirectionDistance bs2 con il nuovo nome di KeypadDirectionDistanceYourTurn bs2 y La sezione Il Vostro Turno dell Attivit 2 consistita nell espansione dll elenco di direttive CON per 1 tasti del telecomando IR Ecco una costante che dovrete aggiungere al vostro programma per il tasto LAST Last CON 59 y Modificate questo ciclo DO LOOP DO GOSUB Get_Ir_Remote_Code IF remoteCode lt ChUp OR remoteCode gt VolDn THEN DEBUG Select direction CH VOL CR GOSUB Beep Brror ENDIF LOOP UNTIL remoteCode gt ChUp AND remoteCode lt VolDn Pagina 94 Infrarossi per il
117. ile alkaline AA vendute separatamente Come Funziona la Comunicazione IR Il telecomando universale invia messaggi emettendo brevi lampeggi di 38 5 kHz dai LED IR Il dato effettivo contenuto nella durata di ciascun impulso Esistono molti protocolli IR diversi ma in generale la durata del segnale a 38 5 kHz trasmette un qualche genere di messaggio Una durata pu indicare l inizio del messaggio mentre un altro indica un 1 binario ed ancora un altro indica uno 0 binario Il piedino di uscita del rivelatore IR invia un segnale basso se rileva la presenza del segnale IR a 38 5 kHz ed un segnale alto se non lo rileva In questo modo un segnale basso di una certa durata pu indicare l inizio del messaggio mentre un altro indica un 1 binario ed un altro ancora indica uno 0 binario Questo tipo di comunicazione viene chiamato modulazione a larghezza di impulso PWM dall inglese pulse width Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 167 modulation perch quando graficizzato con il tempo 1 segnali alti bassi del rivelatore IR formano degli impulsi di differenti larghezze che corrispondono alle loro durate 2 7 Messaggi dal Telecomando ad Infrarossi Estratto da Infrarossi per il Controllo a Distanza del Boe Bot Gli esempi qui presentati si baseranno sul protocollo che 1 Telecomandi Universali usano per controllare gli apparecchi TV SONY Questo protocollo emette tredici
118. impulsi bassi essi possono essere misurati per determinare quale informazione st emettendo il telecomando ad infrarossi esso un esempio dell uso della PWM per la comunicazione Segnale Portante Il telecomando IR usa un segnale portante a 38 5 kHz per trasmettere la durata dell impulso dal telecomando al rivelatore IR Protocollo di Comunicazione Un protocollo di comunicazione un insieme di regole per dispositivi che si debbono scambiare dei messaggi elettronici protocolli di solito hanno regole per le tensioni il tempo di durata dei segnali le frequenze dei segnali portanti e o la lunghezza d onda e molto altro Quando due o pi dispositivi seguono le regole di un dato protocollo dovrebbero essere in grado di conunicare tra loro e scambiarsi informazioni Ci sono molti protocolli di comunicazione differenti che un telecomando pu usare per trasmettere messaggi PWM ai componenti di un sistema multimediale Questo testo si concentrer sul protocollo SONY facile da capire e funziona bene con lo stesso rivelatore di IR che abbiamo usato per la rilevazione degli oggetti e della loro distanza in Robotica con il Boe Bot La Figura 1 4 mostra un esempio di diagramma di temporizzazione per un ipotetico segnale che il rivelatore di IR pu inviare al BASIC Stamp quando riceve dal telecomando un messaggio di controllo con protocollo SONY TV Questo messaggio consiste di tredici impulsi negativi che il pu misurare con facilit
119. inary 1 ys 0 for RCTIME CASE BS2P BS2SX ThreshokdStart CON 2400 Binary l ys start pulse ThresholodPulse CON 500 5 2 Binary 1 ys 0 for PULSIN CASE ELSE ERROR This BASIC Stamp NOT supported ENDSELECT Pagina 172 Controllo Remoto ad IR per il Boe Bot SONY TV IR remote constants for non keypad buttons Enter CON Il CAVE CON 16 Can CON sun VolUp CON 18 VolDn CON L9 Mute CON 20 Power CON Del TvLast CON 59 AKA PREV CH SONY VCR IR remote constants IMPORTANT Before you can make use of these constants you must also follow the universal remote instructions to set your remote 1 CO COnNtrOoL a SONY YCR NOt all remote codes work so you may have to test several Veror OO CON 24 VcrPause CON 25 Vie RE ley CON 26 VcrRewind CON AT VcrFastForward CON 28 VcrRecord CON 29 Function keys FnSleep CON 54 FnMenu CON 96 passa pov tabet kas SaaS ae ea RARA SONY hy UR emote varirab hes irPulse VAR Word Stores pulse widths remoteCode VAR Byte Stores remote code Sees Perote enk tzewiion cere DEBUG Press release remote buttons 1 gr 5355555 3555 SSS 5 SSS SS SS 5 SSS SS SS SS SS SS Rep Lace this button testing DO LOOP with your own code DO CE EDO COWIE Getcs lie Ie ie es Cools Call remote code subroutine DEBUG CLS Remote button Heading Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 173 A SELECT remoteCode
120. io un intervallo tra i messaggi un impulso di start dodici intervalli tra gli impulsi dei dati dodici impulsi dei dati due dei quali sono binary 1 ed 1 dieci restanti sono binary 0 Vv Annotate qui la durata del vostro messaggio IR Pagina 20 Infrarossi per il Controllo a Distanza del Boe Bot Resting state between data pulses duration ms i Start pulse Binary 1 data pulse Binary 0 data pulse duration ms duration ms duration ms Resting state between messages duration ms Il Vostro Turno Conteggio del Numero di Messaggi al Secondo Figura 1 10 Diagramma di Temporizzazione di un messaggio IR Annotate le vostre misurazioni dei tempi indicati nel diagramma Premendo e mantenendo premuto un tasto del telecomando per dieci secondi potete determinare quanti messaggi al secondo invia il telecomando V Lanciate ancora una volta CountStartPulses bs2 era il primo programma esempio di questa Attivit tasto 5 per dieci secondi Dividete il numero dei messaggi per 10 Ll Ll L L di un messaggio IR e di un intervallo tra messaggi Con l aiuto di un orologio o di un cronometro premete e mantenete premuto il Annotate qu il numero dei messaggi al secondo Potete usare la formula seguente per calcolare il tempo impiegato per l emissione Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 21 1 packet _ time messages second y Confront
121. ion nella vostra pagina web o in materiale stampato voi dovrete specificare che BASIC Stamp un marchio registrato di Parallax Inc Stamp s in Class un marchio registrato di Parallax Inc Board of Education un marchio registrato di Parallax Inc rispettivamente a seguito della prima apparizione del nome registrato Altri nomi di marca e di prodotto sono marchi o marchi registrati dei loro relativi proprietari ISBN 1 928982 31 X Rinuncia di responsabilit La Parallax Inc non responsabile di danni speciali accidentali o conseguenti che derivano da qualsiasi violazione della garanzia o sotto qualsiasi teoria legale includendo utili persi tempo di fermo buonuscita danno a o sostituzione dell apparecchiatura o di propriet o qualsiasi costo di ripristino riprogrammazione o riproduzione di qualsiasi dato memorizzato in o utilizzato con in prodotti Parallax La Parallax non inoltre responsabile di qualsiasi danno personale tra cui quello alla vita e alla salute che derivano da utilizzo di un qualunque dei nostri prodotti Vi assumete la responsabilit completa per la vostra applicazione BASIC Stamp qualsiasi rischio per la vita possa costituire Indice Pagina vii Sito WEB e Liste di Discussione Il sito web www parallax com possiede molti canali per il download prodotti applicativi per 1 clienti ed acquisti on line per i componenti usati in questo testo Manteniamo inoltre diverse liste di discussione e
122. ioni Se detto manuale andato perso potreste trovarne una copia pubblicata sul World Wide Web telecomandi universali possono anche essere acquistati presso i negozi di elettrodomestici locali e la maggior parte includono i manuali di istruzioni Controllate la confezione prima dell acquisto di un telecomando particolare per assicurarvi che possa essere configurato per controllare un TV SONY Esempio Configurazione con le Istruzioni Queste istruzioni sono per il telecomando incluso nel kit IR Remote AppKit y Inserite due pile AA alkaline nel telecomando seguendo le istruzioni a pagina 3 del manuale di istruzioni Queste istruzioni sono un riassunto del contenuto di pagina 4 del manuale di istruzioni nella sezione To Manually Program the Remote Control Cercate SONY nella sezione Setup Codes for Television Dovrebbe essere 0001 vedere a pagina 17 Premere e rilasciare il tasto TV y Prmere e mantenere premuto il tasto SET fino a che l indicatore LED sul telecomando si accende e rimane acceso NOTA IL LED pu lampeggiare brevemente appena premete SET ma dovrete mantenere premuto il tasto SET per un paio di secondi prima che il LED rimanga acceso Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 9 a Usate i tasti numerici per inserire 0001 Il LED potrebbe lampeggiare brevemente quando premete ciascun numero Se tutto andato come doveva l indicatore LED dovrebbe spengersi e rimanere sp
123. ivedete il programma FastIrRoaming bs2 e la spiegazione di come funziona in Robotica con il Boe Bot Capitolo 7 Attivit 5 y Aprite o ridigitate e provate FastIrRoaming bs2 seguendo le istruzioni di questa Attivit Passo 3 Modificate il Programma in modo che possiate Controllare la Velocit di Navigazione Le variabili possono essere usate per controllare una quantit di comportamenti del Boe Bot tra le altre cose queste variabili possono indicare al Boe Bot quanto andare veloce Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 105 questo passo e quale compito eseguire il prossimo passo Alcuni esempi di condizioni che possono essere usati per cambiare queste variabili sono e Ingresso da Sensori e Messaggi dal Terminale di Debug e Messaggi da un telecomando IR Nel prossimo programma esempio viene aggiunta una variabile chiamata speed in modo che la velocita dei servo possa essere impostata con un comando DEBUGIN Inserendo un valore tra 0 e 100 potrete far navigare il Boe Bot ad una qualsiasi velocita tra lo 0 ed il 100 della sua velocita massima La dichiarazione IF THEN da FastIrRoaming bs2 in effetti necessita una qualche ristrutturazione prima che possa controllare la velocit Invece di usare 1 valori 650 ed 850 per la massima velocit 1 valori di pulseLeft e di pulseRight dovrebbe essere determinare dichiarando una variabile speed da aggiungere o sottrarre a 750 La Table 3 1 mostra come appare la dichia
124. k for POWER button If yes get remote code otherwise send PULSOUT durations for the various maneuvers based on the value of the remoteCode variable SELECT remoteCode CASE Power lt NUOVO FREQOUT Speaker 100 3500 lt Nuovo PAUSE 100 i lt Nuovo FREQOUT Speaker 100 3500 gas Nuovo PAUSE 200 gessi Nuovo DEBUG Select operation mode CR ec NUOVO GOSUB Get_Ir_Remote_ Code ot Nuovo operation remoteCode t lt Nu ovo DEBUG operation CR lt Nuovo Running CR lt NUOVO FREQOUT Speaker 100 3500 lt Nuovo PAUSE 100 Ma aS Nuovo FREQOUT Speaker 100 3500 lt Nuovo PAUSE 200 reso Nuovo CASE 2 ChUp Forward PULSOUT 13 850 PULSOUT 12 650 CASE 4 VolDn Rotate Left PULSOUT 13 650 PULSOUT 12 650 CASE 6 VolUp Rotate Right PULSOUT 13 850 PULSOUT 12 850 CASE 8 ChDn Backward PULSOUT 13 650 PULSOUT 12 850 CASE 1 Pivot Fwd left PULSOUT 13 750 PULSOUT 12 650 CASE 3 Pivot Ewd right PULSOUT 13 850 PULSOUT 12 750 CASE 7 Pivot Back left PULSOUT 13 750 PULSOUT 12 850 CASE 9 Pivot Back righ ht PULSOUT 13 650 PULSOUT 12 750 CASE ELSE Hold Position PULSOUT 13 750 PULSOUT 12 750 ENDSELECT If operation 2 execute modified FastIrRoaming bs2 Pagina 122 Controllo Remoto ad IR per il Boe Bot lt Nuovo lt Nuovo Check IR Detectors Decide how to navigate 0 THEN
125. lare la direzione e la velocit dei servo Progamma Esempio RoamingWithRemoteSpeedControl bs2 Seguite questi passi per scrivere il programma Aprire IrRemoteKeypad bs2 y Salvarne una copia con il nome di RoamingWithRemoteSpeedControl bs2 Per trasferire delle sezioni di codice dalla vostra versione di IrRoamingWithSpeedControlYourTurn bs2 in RoamingWithRemoteSpeedControl bs2 potete usare copia ed incolla Aggiungete queste dichiarazioni alla sezione variabili Boe Bot control variables irDetectLeft VAR Bit IR detector bit storage irDetectRight VAR Bit speed VAR Byte Speed control variable Aggiungete una sezione di Inizializzazione con questo codice di avvio per il Boe Bot subito prima della sezione della routine principale eheh Ae ee eG i aa Boe Bot initialization DEBUG Start ing lt lt CR CR Signal program start reset FREQOUT 4 2000 3000 speed 0 Initial speed is zero Sostituite il ciclo po LooP nella routine principale con questo DO Main Routine IF IN9 0 OR speed 0 THEN Check for IR message FREQOUT Speaker 100 3500 Signal remote message Pagina 112 Controllo Remoto ad IR per il Boe Bot PAUSE 100 detected FREQOUT Speaker 100 3500 PAUSE 200 DEBUG Speed range 0 to 100 CR CR Type speed on remote CR keypad then press CR ENTER CR CR GOSUB Get_Multi_Digit_Value Get new speed speed value Set new speed DEBUG
126. le che corrisponda al tasto premuto sulla tastiera In altre parole quando premete 5 remoteCode memorizza 5 quando premete 8 remoteCode memorizza 8 e pi importante quando premete 0 remoteCode memorizza 0 Salvate PulsesToByteValue bs2 con il nome PulsesToByteValueYourTurn bs2 y Modificate il programma inserendo questi due comandi tra l ultima dichiarazione IF THEN ed il comando DEBUG remoteCode 1 0 IF remoteCode lt 10 THEN remoteCode IF remoteCode 10 THEN remoteCode V Lanciate il programma e verificate che il valore memorizzato da remoteCode ora corrisponda al tasto premuto sulla tastiera del telecomando IR Scrivete un breve rapporto spiegando in che modo questi due comandi ottengono lo scopo Aggiornate la Table 2 1 seguente e marcate questa pagina peer riferimento su come i valori numerici corrispondono ai tasti premuti sulla tastiera Capitolo 2 Creare ed usare Applicazioni Remote Pagina 61 Table 2 1 Codici dei Tasti del Telecomando Tasto Valore Decimale vo vee CO E power ATTIVIT 2 PROGETTARE UN PROGRAMMA REMOTO RIUSABILE Fino a questo punto avete completato un programma che effettua l acquisizione e la decodifica di messaggi IR remoti da un telecomando per segnali TV SONY Prima di muoverci ad altre applicazioni per il Boe Bot meglio riscrivere il programma in modo che funzioni dall interno di subroutine Insieme alle subroutine il programma dovrebbe anche ave
127. lito un buco troppo difficile da trovare meglio assicurarsi che ciascuna componente del progetto funzioni prima di integrarla in un sistema pi grande Con questo proposito in mente questa attivit separata in quattro passi Passo 1 Ricostruire testare e collaudare il sistema di rivelazione IR seguendo 1 consigli di Robotica con il Boe Bot Capitolo 7 Attivit 1 e 2 Passo 2 Testare la navigazione con la rilevazione IR di oggetti ed 1 programmi di interferenza IR che sono stati spiegati in Robotica con il Boe Bot Capitolo 7 Attivit 5 Passo 3 Modificate il programma in modo che possiate controllare la velocit di navigazione con un comando DEBUGIN Passo4 Integrate la navigazione con la funzione di controllo della velocit nel programma applicativo di telecomando IR che supporta l inserimento di grandi numeri con la tastiera Passo 1 Ricostruire testare e collaudare il Sistema di Rivelazione IR La Figura 3 1 mostra 1 circuiti per la rivelazione IR e gli indicatori per utente da Robotica con il Boe Bot Capitolo 7 Attivit 2 e la Figura 3 2 mostra un modo di costruire questi circuiti con schemi di cablaggio Costruite i circuiti mostrati nella Figura 3 1 e nella Figura 3 2 Testate i circuiti seguendo le istruzioni da Robotica con il Boe Bot Capitolo 7 Attivit 2 Userete sia TestIrPairsAndIndicators bs2 che IrInterferenceSniffer bs2 Vdd P9 2200 Vss P8 1 KQ IR da LED Vss Coppia IR
128. lore di distanza Dal momento che in realt dopo aver digitato Q non vogliamo acquisire nessuna distanza la dichiarazione IF THEN f saltare il programma all istruzione immediatamente seguente il comando LOOP Programma Esempio DebugRecordPlayback bs2 V Digitate e lanciate DebugRecordPlayback bs2 Questa una versione modificata di DebugRecordYourTurn bs2 Per un risultato migliore azionate sulla vostra tastiera il tasto Caps Lock in modo che i vostri caratteri siano tutti maiuscoli F B L R e Q Seguite le richieste ed usate la Finestra di Trasmissione del Terminale di Debug peer digitare le direzioni e le distanze Verificate che l elenco delle direzioni e delle distanze che avete digitato sia lo stesso elenco che viene eseguito dopo aver digitato il carattere Q Ln e e ee Title ek a et a tk a ts et et es le IR Remote for the Boe Bot DebugRecordPlayback bs2 Use Debug Terminal to Store a list of values to EEPROM then retrieve and display them SSTAMP BS2 1 ISPBASIC 2 5 Pagina 140 Controllo Remoto ad IR per il Boe Bot _ EEPROM Data 2 Maneuver List eee CERES Distance LISE DATA Q 35 fase Leva 0iesk eases ge se ee en aa gale as a a a a ae a aes ee direction VAR Byte distance VAR Byte eeIndex VAR Byte da Ea LV SATE NS OEE ON eG e eee Moulin Recore eni eeIndex 0 DO UNTIL eeIndex 19 DEBUG CRAS OC Mee Ge Direcctioms a DEBUGINE Gase ein WRITE Maneu
129. lore effettivo dell impulso di start del vostro telecomando Se il valore fosse ogni volta diverso calcolate il valore medio Se il programma non rileva l impulso di start assicuratevi che il vostro telecomando sia impostato per controllare un TV SONY Per prima cosa premete il tasto TV button sul telecomando quindi provate ad inviare un altro messaggio puntando verso il vostro BASIC Stamp Se questo non dovesse funzionare ripetete le procedure dell Attivit 1 Se queste due soluzioni non funzionano controllate i collegamenti del vostro circuito di rivelazione IR cercate eventuali errori nel vostro programma Ancora sfortunati Provate a configurare il telecomando per controllare un TV SONY usando le istruzioni nel manuale del telecomando Non premete i tasti CBL VCR o TV VCR Se premete uno di questi tasti ordinate al telecomando di inviare messaggi ad un dispositivo diverso che sia un VCR o un decoder In ogni caso i messaggi che il telecomando invier useranno un protocollo TV non SONY Il risultato sar che i programmi di questo libro sembrer che non funzionino Se per sbaglio premeste uno di questi tasti semplicemente premete il tasto TV per far ritornare il telecomando ad emettere segnali TV SONY Pagina 14 Infrarossi per il Controllo a Distanza del Boe Bot IR Remote for the Boe Bot CountStartPulses bs2 Capture and Count Che number of 2 4 me Low start pulses STAMP BS2 SPS Rey CAG AS time VAR Wo
130. ltiplica 6 per dieci e si aggiunge il 3 e E stata ricevuta la cifra 5 quindi si moltiplica 63 per dieci e si aggiunge il 5 e E stato ricevuto il valore 11 allora si memorizza il valore 635 e si esce dalla routine Progamma Esempio EnterLargeValues bs2 Questo programma esempio si comporta in modo simile ad un microonde con una tastiera Potrete assemblare numeri pi grandi come 635 premendo e rilasciando i tasti 6 3 e 5 seguiti dal tasto ENTER Questo programma f emettere dal cicalino piezodel Boe Bot un tono per manifestare ogni pressione dei tasti L altoparlante fornisce anche la funzione antirimbalzo per 1 tasti Pagina 76 Infrarossi per il Controllo a Distanza del Boe Bot Che cosa la Funzione Antirimbalzo circuiti elettronici operano ad una velocit molto maggiore delle azioni umane e dei contatti meccanici progettisti di circuiti e di sistemi integrati devono tener conto di questo fatto durante la progettazione di circuiti Quando un interruttore viene chiuso od un pulsante viene premuto c una collisione tra i contatti metallici La superfice metallica tocca e rimbalza alcune volte prima di assestarsi e mantenere un contatto valido Questo a sua volta viene visto dal processore come una rapida successione di uno e zero Un circuito od una routine di programma che renda impossibile a questi zeri e uno di confondere il processore viene chiamato circuito antirimbalzo Gli umani hanno anche la tendenz
131. lto o Impulso Basso se la tensione ad un piedino I O del BASIC Stamp inizialmente bassa poi va alta per un certo tempo prima di ritornare bassa questo un impulso alto Viene anche usato comunemente il termine impulso positivo Il comando PULSIN misura la quantit di tempo in cui il segnale rimane alto se l argomento State I Un impulso basso l opposto il segnale sar inizialmente alto quindi andr basso per un certo periodo di tempo prima di tornare nello stato alto Viene anche chiamato impulso negativo I comando PULSIN misura la quantit di tempo in cui il segnale rimane alto se l argomento State 0 Assumiamo che il vostro programma abbia una variabile di grandezza word chiamata time per la memorizzazione della durata misurata dell impulso Gli impulsi da 2 4 ms 1 2 ms e 0 6 ms mostrati in Figura 1 7 sono impulsi negativi Per misurarli con il circuito rivelatore di IR dovrete usare il comando Pagina 12 Infrarossi per il Controllo a Distanza del Boe Bot PULSIN 9 0 time Figura 1 7 Una visione ingrandita degli Impulsi Il tempo alto tra due impulsi bassi pu essere misurato come impulso positivo vero che non contiene dati ma pu essere utile per calcolare quanto tempo impiega un messaggio IR intero ad essere trasmesso Cambiando l argomento State del comando PULSIN da 0 a 1 potete misurare la durata di un impulso positivo come questo PULSIN 9 1 tin Programma Esempio CountStartPuls
132. lue il byte con 8 bit che voi potete porre a 0 o ad 1 con il Terminale di Debug La variabile index memorizza il valore che determina quale bit in value verr abilitato disabilitato e la variabile setClear memorizza un 1 o uno 0 Pagina 54 Infrarossi per il Controllo a Distanza del Boe Bot value VAR Byte index VAR Nib setClear VAR Bit I rimanenti comandi sono annidati nel ciclo DO LOOP main Un comando DEBUG CLS cancella la finestra di ricezione visualizza la rappresentazione binaria ad 8 bit della variabile value quindi visualizza il valore indice di ciascun bit seguito dalla prima richiesta per l utente voi di inserire un numero DEBUG CLS BIN8 value lt Binary value CR 76543210 lt Bit index CR CR Type bit index 0 to 7 Il valore di index viene impostato con un comando DEBUGIN seguito da un secondo comando DEBUG che visualizza una seconda richiesta Quindi un secondo comando DEBUGIN preleva il valore di setClear dalla finestra di trasmissione del Terminale di Debug DEBUGIN DECI index DEBUG CR Type 1 to set or 0 to clear DEBUGIN BINI setClear Questo blocco di codice memorizza il valore di setClear nel bit che avete scelto nella variabile value La serie di dichiarazioni IF THEN esamina la variabile index Quando viene trovata una corrispondenza al bit corrispondente di value viene assegnato l 1 o lo 0 che era stato memorizzato in setClear IF index 0 THEN valu
133. mail per persone interessate nell uso dei prodotti Parallax Queste liste sono accessibili dal sito www parallax com attraverso il men Support Discussion Groups Le liste con cui noi operiamo sono le seguenti m BASIC Stamps Con oltre 2 500 sottoscrittori questa lista viene largamente utilizzata da tecnici hobbisti e studenti che cos condividono i loro progetti BASIC Stamp e pongono domande al riguardo Stamps in Class Creato per educatori e studenti questa lista ha 500 sottoscrittori che discutono l uso dei curricula Stamps in Class nei loro corsi La lista fornisce una opportunit sia per gli studenti che per gli educatori di fare domande ed ottenere risposte n Parallax Educators Esclusivamente per educatori e per coloro che contribuiscono allo sviluppo dello Stamps in Class Parallax ha creato questo gruppo per avere un response ai nostri curricula e fornire un forum perch gli educatori sviluppino ed ottengano supporto all insegnamento n Parallax Translators Consistente in meno di 10 persone lo scopo di questa lista fornire un canale tra la Parallax e coloro che traducono la nostra documentazione nelle lingue diverse dall inglese La Parallax fornisce documenti Word editabili ai nostri traduttori e cerca di coordinare nel tempo le traduzioni con le pubblicazioni Toddler Robot Un cliente ha iniziato questa lista di discussione per parlare di applicativi e programmazione del robot Toddler della Par
134. mata Get_Multi_Digit_Value in IrRemoteKeypad bs2 Usate Edit Copy ed Edit Paste per muovere ogni cosa mostrata sotto nel programma EnterLargeValuesYourTurn bs2 nella Get_Multi_Digit_Value in IrRemoteKeypad bs2 value 0 remoteCode 0 DO value value 10 remoteCode DO GOSUB Get_Ir_ Remote_Code IF remoteCode lt 10 THEN DEBUG You pressed DECIl remoteCode CR GOSUB Beep_Valid EXIT ELSEIF remoteCode Enter THEN DEBUG You pressed ENTER CR GOSUB Beep_Valid EXIT ELSE DEBUG Press 0 9 or ENTER CR GOSUB Beep_Error ENDIF LOOP LOOP UNTIL remoteCode Enter nuova subroutine Capitolo 2 Creare ed usare Applicazioni Remote Pagina 81 Aggiungete un comando RETURN alla fine della subroutine y Modificate la routine principale in modo simile al seguente Replace this DO LOOP with your own code DO DEBUG Enter a value GOSUB Get_Multi Digit_Value DEBUG The value is DEC value CR CR LOOP Aggiungete commenti al vostro programma spiegando come funziona la dichiarazione DO LOOP UNTIL Dopo che avete fatto questo cambiamenti il vostro programma dovrebbe assomigliare a quello sotto riportato y Lanciate e provate IrRemoteKeypad bs2 Risolvete i problemi se ce ne sono Salvate il programma dopo che lo avete interamente controllato e provato IE Title ss ssrnnsnnnn M IR Remote for the Boe Bot IrRemoteKeypad bs2 Capture and store button codes sen
135. memorizzato nella variabile time il numero di unit di 2 us che il comando PULSIN ha misurato moltiplicando time per 2 con l operatore il comando DEBUG visualizza il reale numero di microsecondi della misura dell impulso Il Vostro Turno Misurare gli impulsi Binary 1 e Binary 0 Modificando le dichiarazioni DEBUG ed IF THEN nel programma esempio potrete rilevare e visualizzare la durata degli impulsi binary 1 e binary 0 Ecco come ottenerlo XY Salvate CountStartPulses bs2 con il nome MeasureBinary Pulses bs2 y Cambiare DEBUG START PULSES CR in DEBUG BINARY 1 PULSES CR V Cambiare IF time gt 975 AND time lt 1425 THEN Pagina 16 Infrarossi per il Controllo a Distanza del Boe Bot in IF time gt 450 AND time lt 750 THEN Salvate il vostro programma modificato Lanciate il programma Premere e mantenere premuto uno dei tasti numerici fino a che il Terminale di Debug non visualizza la durata di un impulso Annotare la durata di binary 1 qui Salvate MeasureBinary1Pulses bs2 con il nome Mesac Binaya bs2 Cambiare Ario Ll MA DEBUG BINARY 1 PULSES CR in DEBUG BINARY 0 PULSES CR Cambiare IF time gt 450 AND time lt 750 THEN in IF time gt 150 AND time lt 450 THEN y Salvate il vostro programma modificato yV Lanciate il programma ed usate uno dei tasti numerici del telecomando per inviare messaggi al vostro Boe Bot V Annotare la durata di binary 0 qui Mi
136. mente un piedino I O Anche i telecomandi universali costano poco facili da trovare e da sostituire inoltre hanno abbastanza pulsanti per la maggior parte delle applicazioni I componenti di questo kit insieme ai programmi esempio rendono possibile l inserimento di valori e controllare i vostri progetti esattamente come fareste con un TV VCR od altri componenti del sistema di intrattenimento Il telecomando IR Remoto pu anche aggiungere una marcia in pi ai vosti progetti robotici Mentre l inserto di questa confezione vi fornisce le informazioni di base essenziali 1 circuiti ed 1 programmi esempio per iniziare potete apprendere molto di pi con Inffrarossi per il Controllo a Distanza con ilBoe Bot Questo testo principalmente la continuazione di Robotica con il Boe Bot ma con il vantaggio del controllo remoto Segue lo stesso formato in termini di presentazione di nuovo hardware spiegare come funzionano le cose e dimostrando nuove tecniche PBASIC Le applicazioni IR remote per il robot Boe Bot includono il controllo remoto il controllo tramite tastiera 1l comportamento ibrido autonomo e controllo remoto e la programmazione di sequenze da telecomando Pagina 166 Controllo Remoto ad IR per il Boe Bot Contenuto del Kit Elenco Componenti 1 020 00001 Telecomando Universale con Manuale 1 350 00014 Rivelatore IR 1 150 02210 Resistenza 220 Q 1 800 00016 Ponticelli in filo rigido busta di 10 Due p
137. merici ed il tasto ENTER della tastiera Come Funziona EnterLargeValues bs2 Questo programma origina da IrRemoteButtons bs2 e sono state modificate soltanto le sezioni Definizioni I O Variabili e la Routine Principale y Viene dichiarata una variabile word di nome value in aggiunta alle variabili per la decodifica del messaggio IR remoto Questa variabile memorizza il valore a pi cifre acquisito dal telecomando La direttiva Speaker PIN 4 vi permette di usare Speaker come argomento Pin del comando FREQOUT SONY TV IR remote variables irPulse VAR Word remoteCode VAR Byte Main Routine variables value VAR Word Stores multi digit value la prima cosa effettuata dalla Routine Principale l azzeramento delle variabili value e remoteCode Quindi un comando DEBUG visualizza il messaggio Digits entered value 0 remoteCode 0 DEBUG Digits entered Il ciclo DO LOOP per l ingresso dalla tastiera condizionale e viene eseguito fino a che non viene premuto il tasto ENTER Man mano che le cifre vengono inviate in successione la variabile value viene moltiplicata per dieci quindi viene sommata al valore la cifra Pagina 78 Infrarossi per il Controllo a Distanza del Boe Bot pi recente memorizzata da remoteCode Sostanzialmente ci che f value value 10 remoteCode Notate che un comando FREQOUT ed un comando PAUSE seguono il comando GOSUB Get_Ir_Remote_Code Questo f emettere un bip al Boe Bot ad
138. mo attentamente 1 due comandi WRITE nel ciclo WRITE Maneuver_List eeIndex direction WRITE Distance List eeIndex distance Dal momento che le direttive DATA non servirebbero perch nell eseguire 1 comandi WRITE Si usano ancora Maneuver_List e Distance _List nelle espressioni Locazione La risposta che le direttive DATA sono ancora presenti all inizio del programma per Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 139 riservare quelle locazioni per spazio di memoria La sola differenza che durante la fase di compilazione non verranno scritti DataItems nella EEPROM Maneuver_ List DATA 15 Distance_List DATA 35 Queste due direttive DATA funzionano come segnaposto Maneuver_List punter ancora all indirizzo EEPROM 15 e Distance_List continuer a puntare alla locazione 35 Essi possono ancora essere usate dai comandi READ e WRITE come segnaposto per 1 due elenchi di dati EEPROM La sola differenza che 1 comandi WRITE memorizzeranno in queste locazioni EEPROM durante la fase di funzionamento Il ciclo DO LooP per la scrittura dei dati nella EEPROM ha un altra funzione simile a quella che abbiamo aggiunto nella precedente attivit della sezione Il Vostro Turno IF direction Q THEN EXIT Dopo il comando WRITE nella Direction _List la variabile direzione potrebbe ancora contenere il carattere Q possiamo usare questa variabile per decidere se uscire o meno dal ciclo DO LOOP prima di acquisire un va
139. mote for the Boe Bot Student Guide Version 1 0 California Parallax Inc 2004 Questo libro citato nella prima pagina di questi allegati al kit Williams Jon The Nuts and Volts of the BASIC Stamps Volume 3 California Parallax Inc 2003 Column 76 Control from the Couch introduce l acquisizione e la decodifica dei segnali IR di controllo dei TV SONY con il BASIC Stamp 2SX o 2p Pagina 178 Controllo Remoto ad IR per il Boe Bot BASIC Stamp un marchio registrato della Parallax Inc Boe Bot Parallax ed il logo Parallax sono marchi di fabbrica della Parallax Inc Sony un marchio registrato della Sony Corporation Japan Indice Pagina 179 Indice e conteggio 45 BIT 48 bit 46 LOWBIT modificatore 49 Board of Education 70 3 Boe Bot funzioni navigazione autonoma con il telecomando 38 5 KHz 4 regolazioni 97 99 vagabondare autonomo 110 9 tasto 39 inseguimento 110 Ae interruzione operazioni 109 altoparlante piezo 70 Altoparlante piezo 3 antirimbalzo 72 array 19 dichiarazione di variabili 19 uso del Terminale di Debug 20 array elementi 19 LOWBIT modificatore 49 index 19 array variabile 19 array dichiarazione di variabile 23 audience vii Bx batterie 2 6 7 BIN 47 BIN modificatore 47 binario sistema numerico 46 binari numeri 45 Bit Meno Significativo 5 bit 46 navigazione IR con controllo velocita 102 menu sistema 136 controllo remoto 110 programma
140. ndex 1 LOOP END Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 137 Il Vostro Turno Passo 2 Uscita dalla Routine senza visualizzare Q o 0 Il ciclo DO LOOP pu essere modificato in modo che salti la visualizzazione della Q e dello 0 al termine dell elenco Lo potrete ottenere rimuovendo l argomento direction Q dalla dichiarazione DO UNTIL Quindi aggiungete una dichiarazione IF THEN con un comando EXIT subito dopo i comandi READ Eseguendo EXIT quando direction o il programma salter il ciclo DO LOOP prima di eseguire il comando DEBUG DO UNTIL eeIndex 19 READ Maneuver_ List eeIndex direction READ Distance _ List eeIndex distance IF direction Q THEN EXIT DEBUG direction gt DEC distance CR PAUSE 200 eeIndex eeIndex 1 LOOP Rinominate e salvate il programma come DebugPlaybackYourTurn bs2 Provate a modificare come mostrato il blocco di codice del ciclo DO LOOP DebugPlaybackYourTurn bs2 Lanciate il programma e verificate che non visualizzi pi la Q e lo 0 Salvate il programma modificato Ll Ll Ll Ll Passo 3 Memorizzazione di Valori durante la Fase di Funzionamento con il Comando WRITE Quando indicate con il telecomando le direzioni del vostro Boe Bot memorizzerete valori nella EEPROM durante il funzionamento Mentre la direttiva DATA fatta per la memorizzazione dei dati nella EEPROM durante la fase di compilazione il comando WRITE fatto per la
141. ndo Questa riga di codice pu essere aggiunta alle altre due routine di navigazione per farle reagire alla pressione del tasto POWER IF IN9 0 THEN operation 1 lt New Con questa singola riga di codice la prima cosa che le routine di navigazione e di inseguimentofanno controllare se ci sono in arrivo messaggi dal telecomando Se Pagina 130 Controllo Remoto ad IR per il Boe Bot IN9 0 allora il valore della variabile operation viene impostato ad 1 Alla prossima interazione del ciclo DO LOOP verr eseguita la routine principale modificata dal programma 7BitRemoteBoeBot bs2 Questa routine ha una dichiarazione CASE per processare il tasto POWER e memorizza un nuovo valore nella variabile operation Questa dichiarazione CASE contiene comandi che vi rendono possibile selezionare una routine differente Il Vostro Turno Correggere Errori ed Aggiungere Commenti Questo programma si perde se premete il tasto POWER poi un tasto numerico diverso da 1 2 o 3 Diciamo che operation sia impostato a 4 In questo caso non c dichiarazione CASE quindi il programma continua indefinitamente a ripetere il ciclo DO LOOP alla ricerca di CASE 4 senza trovarlo La soluzione a questo di aggiungere una dichiarazione che acquisisca tutti i potenziali valori di operation e li reinvii alla routine che vi permette di selezionare con il telecomando la variabile operation Un modo di farlo con una dichiarazione CASE ELSE
142. nfigurato per funzionare come controllore di un TV SONY Ricordate di non premere i tasti VCR TV VCR o CBL Se lo fate per errore premete il e tasto TV per ritornare alla modalit controllo TV SONY Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 27 Y Debug Terminal 1 gt wo I RX DSR CTS Figura 1 14 Terminale di Debug per RecordAndDisplayPwm bs2 Elenco degli impulsi del tasto 5 Pra EI Re yV Digitate e lanciate RecordAndDisplayPwm bs2 Ridimensionate il Terminale di Debug in modo che sia alto quanto il vostro monitor perch altrimenti i vostri dati possono non entrarci tutti y Provate a premere e mantenere premuti i seguenti tasti e verificate che ciascun gruppo binario sia diverso per ciascun tasto 1 2 3 4 5 6 7 8 9 0 VOL VOL CH CH POWER e MENU Ponete particolare attenzione alle variabili da time 0 atime 6 e provate a rilevare lo schema delle durate per ciascun tasto IR Remote for the Boe Bot RecordAndDisplayPwm bs2 Measure all data pulses from SONY IR remote set to control a TV SSTAMP BS2 U f PBASIC 2 5 time VAR Word 12 SONY TV remote variables index VAR Nib Display heading DEBUG time ARRAY CR Pagina 28 Infrarossi per il Controllo a Distanza del Boe Bot PWM MEASUREMENTS CR Je eine Duration 2 us CR DO Beginning of main loop DO Wait for rest between messages PULSIN 9 1l time 0 LOOP UNTTih tame 0
143. nfrarossi per il Controllo a Distanza del Boe Bot Consigli di Codifica il modificatore LOWBIT Il modificatore LOWBIT pu essere usato per trattare i bit di una variabile come elementi di un array Ecco come potete usare il modificatore LOWBIT per sostituire le otto dichiarazioni IF THEN di cui abbiamo appena parlato value LOWBIT index setClear Questa tecnica non pu essere usata con gli esempi di comandi remoti IR in arrivo perch richiederebbe una calibrazione pi sofisticata con le misurazioni degli impulsi IR remoti Ma anche cos un esercizio utile sostituire le otto dichiarazioni IF THEN con questo singolo comando nel prossimo programma esempio Verificate che ambedue le operazioni effettuino la stessa operazione Programma Esempio SetAndClearWithDotBit bs2 La Figura 2 4 smostra un esempio di cosa potete fare con SetAndClearWithDotBit bs2 digitando una cifra nella finestra di trasmissione quando si invitati a farlo per il bit index potete selezionare il bit che volete cambiare nella variabile value Quindi digitando 1 o 0 nella finestra di trasmissionequando mostra 1 to set or 0 to clear potete controllare se il bit in value viene abilitato 1 o disabilitato 0 Debug Terminal 1 i OY x Figura 2 4 come EA ne A o gigi Disabilitare ed r con il Terminale di Debug Usare la Finestra di Trasmissione per Rispondere alle richieste Macros Pause Clear Close
144. no gi stati impegnati per uno dei compiti per interrompere ancora il compito corrente del Boe Bot useremo il tasto POWER Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 117 Ecco come la routine principale del programma funzionera DO SELECT operation If operation 1 execute a modified version of 7BitRemoteBoeBot bs2 that also allows you to change the operation variable with the POWER key CASE 1 Modified main routine from 7BitRemoteBoeBot bs2 goes here If operation 2 execute modified FastIrRoaming bs2 CASE 2 Modified main routine from FastIrRoaming bs2 goes here If operation is 3 execute the FollowingBoeBot bs2 CASE 3 Modified main routine from FollowingBoeBot bs2 goes here ENDSELECT End SELECT operation LOOP Per prima cosa assembliamo e testiamo il programma quindi daremo uno sguardo ravvicinato al suo funzionamento Progamma Esempio IrMultiBot bs2 Questo Programma Esempio inizia come il 7BitRemoteBoeBot bs2 normale Quindi potrete usare 1 tasti numerici del canale e del volume per guidare la navigazione del Boe Bot Potrete effettuare la navigazione autonoma del vostro Boe Bot premendo il tasto POWER quindi il tasto 2 Potrete far inseguire al Boe Bot degli oggetti premendo il tasto POWER quindi il tasto 3 per tornare alla navigazione controllata dalla tastiera del telecomando premere il tasto POWER quindi il tasto 1 Pagina 118 Controllo Remoto ad IR per il
145. nter invece di 11 e ChUp invece di 16 Per esempio se voleste prendere una decisione IF THEN in base alla pressione del tasto ENTER molto meglio usare IF remoteCode Enter THEN invece di IF remoteCode 11 THEN VS aa eas Constance SSS saS sas SSeS SSS SSS SSS SSS SSeS SS SSS SSeS SSeS SONY TV IR remote constants for non keypad buttons Enter CON 11 ChUp CON 16 ChDn CON 17 VolUp CON 18 VolDn CON 19 Power CON 21 Queste sono variabili che vi serviranno per le vostre subroutine La variabile time da PulsesToByteValue bs2 stata rinominata irPulse SS Vetigiles SSS SSe5SS 4S 55550 22 oS SS Seo SS Se eae SONY TV IR remote variables irPulse VAR Word remoteCode VAR Byte Molti esempi di applicazioni PBASIC pubblicate in cui potrete imbattervi hanno un semplice commento come per esempio Insert your code here eventualmente seguito da un comando END In quel caso sar compito vostro leggere 1 commenti le Pagina 66 Infrarossi per il Controllo a Distanza del Boe Bot subroutine ed altre parti del programma per capire come farli funzionare Spesso potrebbe esserci un altro programma disponibile per il download che spiega alcune delle cose che potete fare con l applicazione Questa main routine ha un commento per dove inserire il codice ma ha anche un semplice ciclo Do LOoP che vi permette di provarlo SEARS l Ma rn ROUCENS ESSERE ARR RR RARA Replace this DO LOOP with your own code DO GOSUB G
146. nti forniranno programmi che renderanno le decisioni di navigazione dettate dalla durata degli impulsi memorizzata nell array time I primi sette elementi dell array time contengono tutte le misure degli impulsi che vi serviranno per identificare i diversi tasti del telecomando La Table 1 1 ha righe per ciascuna delle sette misure dell array time e colonne per ciascun tasto numerico e per alcuni altri tasti Compilatela in modo che la possiate usare come riferimento mentre scrivete programmi delle due prossime attivit Premere e rilasciare ciascun tasto elencato nella Table 1 1 V Compilate la colonna di ciascun tasto con le misure dell array time prese dal Terminale di Debug Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 31 a Table 1 1 Misura del Tempo per Ciascun Tasto Elemento Tasto del Telecomando dell A ATTIVIT 4 NAVIGAZIONE A DISTANZA DEL BOE BOT CON IR Una applicazione piuttosto divertente la programmazione del Boe Bot in modo che ne possiate controllare il movimento direttamente con il telecomando esattamente come con una macchina radiocomandata In questa Attivit potrete programmare il Boe Bot per riconoscere i tasti 1 2 3 o 4 quando li premete e li tenete premuti per effettuare una manovra diversa per ciascuno Potete anche usare i tasti CH e VOL Circuito e Componenti del controllo con Telecomando ad Infrarossi Tutti i componenti delle Attivit 1 e 2 1 Boe Bot 1
147. o un esempio di un array che pu memorizzare 5 byte caratteri VAR Byte 5 La Figura 1 11 mostra la variabile di cinque caratteri creata da questa dichiarazione caratteri 0 caratteri 1 caratteri 2 caratteri 3 e caratteri 4 Ciascuna di queste variabili chiamate elementi dell array pu memorizzare un byte Ciascuna di queste variabili ha un numero chiamato indice il numero tra parentesi che la distingue dagli altri elementi In altre parole eciascun elemento dell array ha lo stesso nome ma un diverso numero indice Pagina 22 Infrarossi per il Controllo a Distanza del Boe Bot caratteri VAR Byte 5 I Figura 1 11 Cinque variabili dazio Elementi in chiamate caratteri dabstt ni t un Array ciascuna delle quali paratteri 2 pu memorizzare un caracteri valore di byte caratteri 4 differente Progamma Esempio ArrayEsempio bs2 Questo pProgramma Esempiousa il Terminale di Debug per impostare gli elementi dell array e visualizzarne il contenuto La Figura 1 12 mostra un esempio di come apparir il Terminale di Debug dopo che avrete lanciato e provato il programma Ciascun carattere che digiterete nella finestra di trasmissione del Terminale di Debug viene caricato nell elemento successivo dell array caratteri Dopo che avrete digitato 11 quinto carattere il programma legge e visualizza ciascun elemento dell array ty Debug Terminal 1 oO x Com Port Baud Rate ity
148. o direzioni avanti indietro ruotare a destra ruotare a sinistra Queste direzioni Pagina 34 Infrarossi per il Controllo a Distanza del Boe Bot funzionano anche con 1 tasti CH CH VOL e VOL che sono forse pi adatti in quanto questi tasti puntano nelle direzioni avanti indietro destra e sinistra sulla maggior parte dei telecomandi Questi programmi sono stati scritti per i Boe Bot con i servo a rotazione continua della Parallax Se il vostro Boe Bot etichettato con le lettere PM evidenziate in blu dovrete cambiare gli argomenti Duration di PULSOUT nei vostri programmi Se avete i servo Parallax PM usate 500 al posto di 650 e 1000 al posto di 850 Digitate salvate e lanciate 2BitRemoteBoeBot bs2 Assicuratevi che l interruttore di alimentazione sulla Board of Education sia in posizione 2 Puntando il telecomando verso il Boe Bot premere e mantenere premuto il tasto CH e verificate che il Boe Bot avanzi Ripetere il test con il tasto 1 key dovrebbe avere lo stesso effetto Provate i tasti CH 1 CH 2 VOL 3 VOL e 4 Divertitevi a guidare il Boe Bot L Ll L 2 2 l Per alcuni Manovratori il mio Boe Bot sembra erratico perch Ha a che vedere con g il modo in cui il programma rileva lo start del messaggio IR Non sempre lo rileva al primo di colpo Lo correggeremo nella prossima Attivit IR Remote for the Boe Bot 2BitRemoteBoeBot bs2 Control your Boe Bot with an IR remote
149. o valore usato per Impostare o meno il bit corrispondente di remoteCode Tutto questo ripetuto peer altre cinque volte per acquisire il resto della parte utile del messaggio IR ed impostare o meno 1 bit rimanenti di remoteCode I BS2sx e BS2p gestiscono 1 codici remoti in modo leggermente differente I programmi normalmente ricercano l effettivo impulso di start con un comando PULSIN invece di cercare l intervallo tra messaggi Essi usano anche comandi PULSIN per acquisire tutti gli impulsi visto che le dichiarazioni IF THEN che impostano 1 bit della variabile remoteCode vengono ultimate prima del fronte di salita del secondo impulso dati Per vedere un esempio di codice per 1 BS2sx BS2p vedere la dichiarazione CASE contenuta nella subroutine Get_Ir_Remote_Code del prossimo programma esempio Serie BASIC Stamp 2 Esempio Applicativo IrRemoteButtonDisplay bs2 Potete usare questo esempio applicativo con i moduli BASIC Stamp 2 2e 2sx 2p o 2pe per provare il vostro telecomando e visualizzare quale tasto stato premuto Vv Come per il precedente programma esempio per prima cosa assicuratevi che il vostro telecomando sia configurato per controllare un TV SONY Aggiornate la direttiva sstAMP per il modulo BASIC Stamp che state usando Scaricate o digitate e lanciate IrRemoteButtonDisplay bs2 Appendice A Documentazione del Kit Applicativo per Telecomando IR Pagina 171 y Puntate il telecomando verso il rivelatore IR premere
150. obot multi funzione controllato a distanza Con la pressione di un pulsante potrete scegliere fra tre dei pi popolari comportamenti del Boe Bot Boe Bot controllato a distanza Boe Bot che esplora e Boe Bot inseguitore Nell Attivit 3 progetterete un interprete per l esecuzione di elenchi di istruzioni inviate dal telecomando IR In pratica sarete in grado di programmare il vostro Boe Bot con il telecomando IR ATTIVIT 1 NAVIGAZIONE AUTONOMA CON IL CONTROLLO REMOTO DELLA VELOCITA Questa attivit svilupper un esempio di navigazione autonoma con regolazioni da telecomando Per la navigazione autonoma il Boe Bot esplorer con gli infrarossi usando il Programma Esempio da Robotica con il Boe Bot Capitolo 7 Attivit 5 Questo programma esempio verr quindi modificato in modo che possiate impostare il controllo della velocit dalla finestra di trasmissione del Terminale di Debug Il programma della navigazione autonoma con IR con il controllo della velocit pu essere mescolato con il programma per l inserimento da tastiera Dopo che questi due programmi sono stati combinati insieme l emissione di comandi per il controllo della velocit pu essere effettuato con il telecomando IR invece che con il Terminale di Debug Pagina 102 Controllo Remoto ad IR per il Boe Bot Uno degli errori pi comuni dei progetti robotici tentare di far funzionare tutte le componenti insieme in un colpo solo Il risultato finale di so
151. odified main routine from YourProgram bs2 goes here If operation is not 1 4 execute this routine CASE ELSE Catch all commands go there E3 Soluzione READ My List 4 myValue READ My List 7 myValue E4 Ecco il codice modificato Fate attenzione nell aggiungere l operatore DEC al comando DEBUGIN DO DEBUG CR 16 17 18 or 19 CR Enter Value DEBUGIN DEC direction SELECT direction CASE 16 to 19 EXIT CASE ELSE DEBUG CR Invalid character CR ENDSELECT LOOP E5 Provate questa sequenza con alcuni aggiustamenti per ottenere nella curva di 21 impulsi con 1 vostri servo una rotazione di 90 gradi POWER per iniziare la programmazione CH 100 ENTER per la marcia in avanti con 100 impulsi VOL 21 ENTER per la curva a sinistra con 21 impulsi CH 50 ENTER per la marcia in avanti con 50 impulsi VOL 21 ENTER per la curva a sinistra con 21 impulsi CH 100 ENTER per la marcia in avanti con 100 impulsi VOL 21 ENTER per la curva a sinistra con 21 impulsi CH 50 ENTER per la marcia in avanti con 50 impulsi L LL L L LL L L L Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 161 VENTER una seconda volta per uscire dalla modalit programmazione VENTER una terza volta per far eseguire le manovre al Boe Bot Soluzioni dei Progetti P1 Aaggiungete queste dichiarazioni bit alla sezione delle Variabili del programma irDetectLeft VAR Bit irDetectRight VAR Bit y Selezionate e copiate l
152. ogni pressione di tasto Il bip e la pausa sono sufficientemente lunghi per far s che l utente Irilasci il tasto Questo evita che una singola pressione del tasto 5 sia ricevuto come valore 555 DO value value 10 remoteCode GOSUB Get_Ir_Remote_Code IF remoteCode gt 0 AND remoteCode lt 9 THEN DEBUG DEC remoteCode ENDIF FREQOUT Speaker 100 3500 PAUSE 200 LOOP UNTIL remoteCode Enter Dopo che il tasto ENTER stato premuto e rilasciato il ciclo DO LOOP termina e viene visualizzato il numero a pi cifre memorizzato nella variabile value DEBUG The value is DEC value CR CR Il Vostro Turno Processare Solamente le Cifre ed il tasto Enter Se state progettando un prodotto con il BASIC Stamp ed un telecomando universale se usate EnterLargeValues bs2 cos com potreste ricevere delle lamentele dai clienti Il programma deve ignorare 1 tasti non numerici come POWER e VOL Premere questi tasti pu portare ad alcuni valori abbastanza strani Provate a digitare cifre non numeriche con la vostra versione originale e non modificata di EnterLarge Values bs2 y Salvate il programma con il nome di EnterLargeValuesYourTurn bs2 Sostituite il ciclo po LooP nella routine principale con questo DO DEBUG Type a value up to 65535 CR Then press ENTER CR CR value 0 Capitolo 2 Creare ed usare Applicazioni Remote remoteCode 0 DO value value 10 remoteCode DO GOSUB Get_Ir
153. omando DEBUG vi richiede di digitare la percentuale della velocit massima a cui volete che il vostro Boe Bot navighi Pagina 108 Controllo Remoto ad IR per il Boe Bot DEBUG CLS Enter percent of CR lt Add full speed 0 TO 100 lt Add Un comando DEBUGIN memorizza il valore che avete digitato nella variabile speed Se il valore di speed viene impostato a 100 dall utente 11 Boe Bot navighera alla sua massima velocita Quando viene inserito un valore minore di 100 il Boe Bot navighera a quella percentuale della velocita massima DEBUGIN DEC speed lt Add Il valore percentuale che avete digitato determina la percentuale della larghezza di impulso per la massima velocit Questa non la stessa della velocit attuale Per un aiuto nella predizione della velocit attuale consultate le curve di trasferimento studiate in Robotica con il Boe Bot Capitolo 3 Attivit 4 Un messaggio DEBUG indica che la routine principale st funzionando DEBUG Main routine running lt Add Questa dichiarazione IF THEN stata studiata subito prima del programma esempio Essa imposta 1 valori delle variabili pulseLeft e pulseRight In base alla direzione in cui dovr girare ciascun servo il valore speed viene quindi sommato o sottratto da 750 per impostare la velocit dei servo IF irDetectLeft 0 AND irDetectRight 0 THEN pulseLeft 750 speed lt Change pulseRight 750 speed lt
154. questo DO DEBUG Press POWER to record CR or ENTER to playback CR CR GOSUB Get_Ir_Remote_Code IF remoteCode Power THEN Routine Record data GOSUB Beep_Valid eeIndex 0 DO UNTIL eeIndex 19 DEBUG Menu CR Pagina 148 Controllo Remoto ad IR per il Boe Bot CH Forward CR To sH Backward CR VOLE Regno CR w VOLS eftt te CR ENTER Done recording CR CR DO GOSUB Get_Ir_Remote_Code SELECT remoteCode CASE ChUp TO VolDn Enter GOSUB Beep_Valid EXIT CASE ELSE DEBUG Press CH VOL or ENTER CR GOSUB Beep_Error ENDSELECT LOOP direction remoteCode WRITE eeIndex Maneuver_List direction IF direction Enter THEN EXIT DEBUG Enter number of pulses CR GOSUB Get_Multi_Digit_VAlue DEBUG DEC value pulses CR CR WRITE eeIndex Distance List value eeIndex eeIndex 1 LOOP ELSEIF remoteCode Enter THEN Routine playback data GOSUB Beep_Valid DEBUG Running x gu CR CR eeIndex 0 direction 0 DO UNTIL eeIndex 19 READ eeIndex Maneuver_ List direction READ eeindex Distance List value IF direction Enter THEN EXIT Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 149 FOR counter 1 TO value SELECT direction CASE ChUp PULSOUT ServoLeft 850 PULSOUT ServoRight 650 CASE ChDn PULSOUT ServoLeft 650 PULSOUT ServoRight 850 CASE VolUp PULSOUT ServoLeft 850 PULSOUT ServoRight 850 CASE VolDn PULSO
155. r i a2rPulse LOOP UNTIL irPulse gt 1000 BUISNESS Oe ies ESE Measure pulse IF irPulse gt 500 THEN remoteCode BITO 1 5er lor leaye clear DBDit 0 ROME DE O AES Measure next pulse IEP see Posies 300 TREN rcemoceCode BITL 1 Pm et lor leave clear bir 1L ROEMEENS E ERER ir LePulse gt 300 THEN remorteCoce BITZ 1 RCITIME LeDet 0 Pdl Lee dl ses gt 300 THEN cemoteCoce BLIS 1 RCTIME LrDet 0 irp ulse IF irPulse gt 300 THEN remoteCode BIT4 1 ECRIMESTE Dea IF irPulse gt 300 THEN remoteCode BIT5 1 Rebibbia de Tee ese gt 300 THEN remorceCode BLITO 1 Adjust remoteCode so that keypad keys correspond to the value AG Stones IF remoteCode lt 10 THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0 RETURN Plana Ue SSCS ere mT a aes eee au pece Y ACCU re malti cdigit yalue up tOo 65535 and shore 1E Lm the value variable Speaker beeps each time a key is Pagina 154 Controllo Remoto ad IR per il Boe Bot pressed Get_Multi_Digit_Value value 0 remoteCode 0 DO value value 10 remoteCode DO GOSUB Get_Ir Remote Code IE remoteCoce lt 10 THEN DEBUG You pressed DECI remoteCoce CIR GOSUB Beep_Valid EXIT ELSEIF remoteCode Enter THEN DEBUG You pressed ENTER CR GOSUB Beep_Valid Ep Teh ELSE DEBUG seo wa Nh eR GO5UEstEe Dee ta ENDIF LOOP LOOP UNTIL remoteCode Enter RETURN an Subroutine
156. r regolare la velocit del Boe Bot mentre naviga Ecco come esso funzioner e Premendo un pulsante qualsiasi interromperete la navigazione del Boe Bot e Quindi userete la tastiera numerica del telecomando per digitare la percentuale della nuova velocit e Per far riprendere la navigazione al Boe Bot con la nuova velocit premete il pulsante ENTER IrRoamingWithSpeedControl bs2 gi usa gli infrarossi per rilevare gli ostacoli tra ogni coppia di impulsi per 1 servo La chiave per rilevare messaggi in arrivo dal telecomando controllare i rivelatori IR prima di usare il comando FREQOUT per cercare eventuali ostacoli Se il programma controlla per trovare se sono rilevati IR prima di controllare per eventuali ostacoli pu facilmente rilevare un messaggio in arrivo dal telecomando Ecco i passi che dovrebbero essere eseguiti all interno del ciclo DO LooP della routine principale e Prima di controllare per gli ostacoli con 1 LED IR del Boe Bot controllare il piedino di uscita del rivelatore IR per vedere se un segnale st giungendo dal telecomando Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 111 e Se il rivelatore IR sta emettendo un segnale basso significa che sta arrivando un messaggio infrarosso Chiamare la subroutine Process_Ir_Message e Se il rivelatore IR st emettendo un segnale alto andare al prossimo compito che la rilevazione di ostacoli e Controllare i rivelatori IR e Usate IF THEN per control
157. rae la L memorizzato all indirizzo 16 e lo memorizza nella variabile direction Alla terza iterazione del ciclo eeIndex 2 quindi l espressione Location viene calcolata in 17 e nella variabile direction viene memorizzato R Lo stesso principio si applica al secondo comando READ eccetto che Distance_List 35 quindi alla prima iterazione viene estratto il valore 40 dalla EEPROM e memorizzato in distance alla seconda iterazione 20 alla terza iterazione ancora 20 e cos via Pagina 136 Controllo Remoto ad IR per il Boe Bot Programma Esempio DebugPlayback bs2 Questo programma esempio memorizza valori nella EEPROM del BASIC Stamp con la direttiva DATA quindi con il comando READ recupera e visualizza questi valori Digitate e lanciate DebugPlayback bs2 aa Title gt aaa IR Remote for the Boe Bot DebugPlayback bs2 Fetch and display DataItems from a pair of DATA directives SSTAMP BS2 0 f SPBASIC 2 5 EEPROM Data Maneuver_List DATA 15 IRE I IERI IO Distance Taste DATA a 35 4O 20 20 AO 0 ee xarables le ss888 a adiurect sen VAR Byte distance VAR Byte eeIndex VAR Byte ra pcb ST a STAN SP a ss SS EA Y Playback routine eeIndex 0 DO UNTIL direction Q OR eeIndex 19 READ Maneuver_List eeIndex direction READ Distances lire ec index distance DIRE we tagevel colonels REA PAUSE 200 eeIndex eeI
158. rarossi Pagina 41 a RUMS OUI wie ato ail PISO Ul area ENDIF LOOP V Repeat main loop Il Vostro Turno Aggiustare il tasto 9 Se vi riferite alla Table 1 1 a pagina 31 noterete che il tasto 9 ha time 3 maggiore di 500 mentre il resto degli elementi dell array time sono inferiori a 500 La ragione per cui il Boe Bot ruota in avanti e verso sinistra perch le altre tre misure di time sono le stesse del tasto 1 per risolvere il problema dovrete aumentare la dimensione dell array time di una word ed aggiungere anche un altra misura con PULSIN In ultimo dovrete modificare la dichiarazione IF THEN per rilevare il tasto 9 prima che venga scambiato per il tasto 1 Usate Save As dal ment File per salvare una copia di 3BitRemoteBoeBot bs2 con il nome di 4BitRemoteBoeBot bs2 Cambiate la dichiarazione della vostra variabile array time in modo che abbia quattro word chiamate time invece di tre Aggiungete un comando PULSIN che misuri il quarto impulso di dati e lo memorizzi IN time 3 y Espandete la dichiarazione IF THEN aggiungendo una condizione all inizio che controlli per vedere se il quarto impulsi di dati maggiore di 500 se questo il caso allora il Boe Bot dovrebbe ruotare all indietro e verso destra Potete eseguirlo sostituendo questa riga di codice IF time 2 lt 500 AND time 1 lt 500 AND time 0 lt 500 THEN Con queste quattro righe IF time 3 gt 500 THEN PULSOUT 13 650 PULSOUT 1
159. rato in Figura 1 1 Le attivit di questo capitolo faranno uso del segnale emesso da un telecomando universale dopo che stato configurato per controllare un televisore di marca SONY La maggior parte dei telecomandi universali pu essere configurata per inviare messaggi ad un TV SONY Se volete provare queste attivit con un telecomando universale gi in vostro possesso o uno acquistato presso un rivenditore locale dovrete leggere le istruzioni accluse al telecomando per sapere come configurarlo per controllare un TV SONY Elenco Componenti per il controllo remoto tramite infrarossi 1 020 00001 Telecomando universlae con il proprio manuale 1 350 00014 Rivelatore IR 1 150 02210 Resistenza 220 Q 1 800 00016 Ponticelli in filo rigido bustina di 10 Due pile alcaline AA vendute separatamente STE 122 AB TT Figura 1 1 LR Contenuto del kit 3 Pass controllo a distanza con IR Oltre ad un Boe Bot gia montato ci sono alcuni componenti del vostro kit originale Boe Bot Robot vedere la Figura 1 2 Le attivita di questo capitolo faranno uso dello stesso circuito di rilevazione di infrarossi usati nei capitoli 7 ed 8 di Robotica con il Boe Bot Le Resistenze 1 LED e l altoparlante piezoelettrico dovrebbero gi essere familiari dai capitoli precedenti Per ricevere messaggi dal telecomando necessario solamente un Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 3 rivelatore di infr
160. razione originale IF THEN da FastIrRoaming bs2 confontata con la versione modificata della dichiarazione IF THEN dal prossimo programma esempio IrRoamingWithSpeedControl bs2 Table 3 1 Codice di Navigazione con senza Controllo della Velocit Senza il Controllo della Velocit Con il Controllo della Velocit IF irDetectLeft 0 AND THEN IF irDetectLeft 0 AND THEN pulseLeft 650 pulseLeft 750 speed pulseRight 850 pulseRight 750 speed ELSEIF irDetectLeft 0 THEN ELSEIF irDetectLeft 0 THEN pulseLeft 850 pulseLeft 750 speed pulseRight 850 pulseRight 750 speed ELSEIF irDetectRight 0 THEN ELSEIF irDetectRight 0 THEN pulseLeft 650 pulseLeft 750 speed pulseRight 650 pulseRight 750 speed ELSE ELSE pulseLeft 850 pulseLeft 750 speed pulseRight 650 pulseRight 750 speed ENDIF ENDIF Sulla parte Con il Controllo della Velocit della tabella 1 comandi PULSOUT per 1 servo sinistro e destro usano le variabili pulseLeft e pulseRight per gli argomenti Pagina 106 Controllo Remoto ad IR per il Boe Bot Duration Il comando pulseLeft 650 viene sostituito con pulseLeft 750 speed Quando speed un valore piccolo pulseLeft vicino a 750 e la ruota sinistra del Boe Bot gira molto lentamente in senso orario Quando la variabile speed si avvicina a 100 la ruota sinistra del Boe Bot si avvicina alla sua velocit massima in senso orario Ora
161. rd counter VAR Word DEE UG tS Ake Seas ot ee eee Repeticions Current Duracion ICR Mie rosecond Ss y HRY DO PULSIN 9 0 time Die cime gt 975 AND time lt 1425 MEN counter Counter t 1 DEBUG CRS RISE DEG Counwer GIG ROO esses eae DECS Menni ENDIF LOOP Come funziona CountStartPulses bs2 Questo programma inizia dichiarando due variabili word time per memorizzare la durata dell impulso di start e counter per memorizzare il numero di impulsi di start ricevuti Quindi un comando DEBUG aggiunge alcune intestazioni visualizzazione di variabili time VAR Word counter VAR Word DEBUG START PULSES CR Repetitions Current Duration CR microseconds CR All interno del ciclo Do Loop il programma esegue il comando PULSIN 9 colonna per la O time che misura gli impulsi Ogniqualvolta la durata di un impulso tra 975 1 95 ms e 1425 Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 15 2 85 ms il blocco di codice IF THEN ENDIF incrementa la variabile counter e visualizza le variabili counter e time sotto le intestazioni Repetitions e Current Duration DO PULSIN 9 0 time IF time gt 975 AND time lt 1425 THEN counter counter 1 DEBUG CRSRXY 0 4 DEC counter CRSRXY 13 4 DEC5 time 2 ENDIF LOOP Che cosa significa il 2 nel comando DEBUG Ricordate che il comando PULSIN misura la durata in unit di 2 us Questo ci che verr
162. rdate che questa subroutine memorizza il valore dei tasti del telecomando ricevuti nella variabile remoteCode In questo modo questa seconda interna dichiarazione IF THEN pu controllare remoteCode Se uguale alla costante Power allora aggiorna la variabile speed altrimenti emette un codice di errore con l altoparlante piezo Salvate RoamingWithRemoteSpeedControl bs2 con il nome di RoamingWithRemoteSpeedControlYourTurn bs2 y Sostituite questa dichiarazione IF THEN IF IN9 0 OR speed 0 THEN Check for IR message FREQOUT Speaker 100 3500 Signal remote message PAUSE 100 detected GOSUB Get_Multi_Digit_Value Get new speed speed value Set new speed Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 115 PAUSE 250 Pause for debounce ENDIF Con questa IF IN9 0 OR speed 0 THEN Check for IR message DEBUG Press POWER to set CR speed CR CR GOSUB Get_Ir_Remote_Code IF remoteCode Power OR speed 0 THEN FREQOUT Speaker 100 3500 Signal remote message PAUSE 100 detected FREQOUT Speaker 100 3500 PAUSE 200 DEBUG Speed range 0 to 100 CR CR Type speed on remote CR keypad then press CR ENTER CR CR GOSUB Get_Multi_Digit_Value Get new speed speed value Set new speed DEBUG speed CR DEBUG Rumi Tig ean CR CR PAUSE 250 Pause for debounce ELSE GOSUB Beep_Error ENDIF ENDIF Salvate i cambiamenti che avete fatto quin
163. re che usereste per il 12 bit in un numero binario Convertire 1111 in un numero decimale Assumete di avere otto misure di impulsi da decodificare invece di sette Spiegate come modificare la subroutine Get_Ir_Remote_Code per acquisire e decodificare la misura dell impulso 6 Diciamo che avete dichiarato una variabile bit chiamata onoffState Scrivete un comando SELECT CASE che cambi onoffState ad 1 se era 0 eda 0 se era 1 Usate l operatore not e an Progetto l Modificate 7BitRemoteBoeBot bs2 in modo che il pulsante SLEEP sul telecomando possa essere usato per disabilitare ed abilitare la navigazione del Boe Bot in base agli altri tasti Capitolo 2 Creare ed usare Applicazioni Remote Pagina 99 Soluzioni Q1 A riconoscere ed interpretare un segnale eletttronico Q2 Un bit Q3 Portando 2 alla potenza della posizione del bit Q4 Un bit impostato quando posto ad uno Un bit azzerato quando posto a Zero Q5 Il nome della variabile deve essere messo prima dell operatore BIT e l indirizzo del bit deve seguirlo Non usare spazi Per esempio per usare l operatore BIT per riferirsi al bit 4 nella variabile remoteCode usate remoteCode BIT4 Q6 Essi danno nomi significativi ai valori usati nel programma Specificatamente al tasti non numerici del telecomando ci si pu riferire con 1 loro nomi invece che con 1 loro valori numerici Q7 In base a quanto spiegato nel riquadro box a pagina 44 sign
164. re di nuovo da 0 a 20 in binario CR ed SAL Convertire le Durate degli Impulsi IR in Valori Decimali Useremo una variabile chiamata remoteCode per memorizzare il valore trasmesso dagli impulsi IR dei messaggi Dal momento che il programma abiliter 1 bit solamente per un dato impulso superiore ad 1 ms tutti 1 bit in remoteCode dovranno essere disabilitati prima che le misure degli impulsi vengano acquisite Il modo pi semplice per disabilitare tutti 1 bit in una variabile semplicemente impostare il suo valore uguale a zero Se una variabile byte memorizza il vlore 0 in effetti st memorizzando il numero binario 00000000 11 ch significa che tutti 1 bit sono disabilitati remoteCode 0 Quindi attenderemo per l itervallo tra 1 messaggi IR con un ciclo DO LOOP che avevamo studiato nel Capitolo 1 Attivit 5 DO RCTIME 9 1 time LOOP UNTIL time gt 1000 Pagina 56 Infrarossi per il Controllo a Distanza del Boe Bot Quindi inizieremo a misurare gli impulsi dei dati Dopo che ciascun impulso dati stato misurato si controlla per vedere se durato sufficientemente per significare un 1 binario Se questo Il caso abilitare il bit corrispondente nella variabile remoteCode altrimenti viene lasciato disabilitato PULSIN 9 0 time Measure pulse IF time gt 500 THEN remoteCode BITO 1 Set or leave clear bit 0 RCTIME 9 0 time Measure next pulse IF time gt 300 THEN remoteCode BI
165. re direttive CON per 1 tasti non numerici e dichiarazioni VAR per le variabili usate nelle subroutine Assemblaggio di una Applicazione per la Lettura del Telecomando IR Il prossimo programma esempio una versione pi generale e riusabile del programma PulsesToByteValueYourTurn bs2 queste sono le variazioni che gli sono state fatte e Costanti valori di tasti con nomi significativi La Table 2 1 stata usata per assemblare un elenco di direttive CON e Variabili le variabili che devono essere usate con le subroutine Le dichiarazioni var di PulsesToByteValue bs2 sono state date nelle rispettive sezioni e Routine Principale chiama le subroutine e visualizza 1 dati E stata inserita una routine principale molto semplice che visualizza i codici del telecomando IR nel Terminale di Debug insieme con un commento per aggiungere il vostro codice Pagina 62 Infrarossi per il Controllo a Distanza del Boe Bot e Subroutine acquisisce gli impulsi dei messaggi dal Telecomando IR e decodifica Questa dovrebbe contenere tutto ci che c all interno del ciclo DO LOOP principale di PulsesToByteValueYourTurn bs2 Per provare il telecomando verr usata la dichiarazione SELECT CASE per assicurarsi che il programma riconosca tutti 1 diversi tasti Ricordate SELECT CASE vi permette di selezionare una variabile valutarla caso per caso Potete usare singoli valori un elenco di valori separati da virgole o una gamma di valori
166. rio che il telecomando st trasmettendo Questo significa che ciascun impulso deve essere tradotto in 1 o 0 e quindi il bit nella posizione corrispondente deve essere abilitato o disabilitato Il modificatore di variabile BIT pu essere usato per abilitare o disabilitare bit in una variabile Ci rende possibile selezionare singoli bit in una data variabile Diciamo di avere una variabile byte chiamata value e di voler disabilitare il bit 5 ed abilitare il bit 6 Questo il modo di farlo con il modificatore di variabile BIT 0 1 value BIT5 value BIT6 Il prossimo programma esempio spiega come usare il modificatore BIT per abilitare e disabilitare bit in una variabile byte con l aiuto delle finestre di trasmissione e ricezione del Terminale di Debug Esso usa tre variabili un byte chiamato value un nibble chiamato index ed un bit chiamato setClear Memorizzando valori in index ed in setClear con il comando DEBUGIN potrete scegliere qualsiasi bit nella variabile value ed abilitarlo ad 1 o disabilitarlo a 0 con questi comandi DEBUGIN DECI index DEBUGIN BINI setClear IF index 0 THEN value BITO setClear IF index 1 THEN value BITl1 setClear IF index 2 THEN value BIT2 setClear IF index 3 THEN value BIT3 setClear IF index 4 THEN value BIT4 setClear IF index 5 THEN value BIT5 setClear IF index 6 THEN value BIT6 setClear IF index 7 THEN value BIT7 setClear Pagina 52 I
167. rs della Parallax sono incluse nella sezione liste di discussione su Internet che precede l indice Prefazione Pagina xiii CONTRIBUTORI SPECIALI Il team che la Parallax ha organizzato per produrre questo testo comprende progettazione del curriculum e letteratura tecnica Andy Lindsay illustrazioni Rich Allred progettazione grafica Larissa Crittenden revisione tecnica Kris Magri edizione tecnica Passohanie Lindsay Grazie anche ai clienti Parallax Robert Ang e Sid Weaver per le loro relazioni avanzate Stamps in Class stato fondato da Ken Gracey e Ken vuole ringraziare lo staff Parallax per l ottimo lavoro che stanno facendo Un ringraziamento anche a Stefano Caruso per la traduzione di questo testo in Italiano Ciascuno e tutti 1 Parallaxiani che hanno contribuito a questo come a tutti 1 testi Stamps in Class Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 1 a Capitolo 1 Comunicazione a distanza con gli infrarossi PER INIZIARE Per cominciare con l IR Remote AppKit potete usare due documenti e Questo libro vi porter dallo stadio iniziale ad uno stadio avanzato con una modalit passo passo e IR Remote AppKit Documentation una guida rapida che in forma di inserto contenuta nella confezione AppKit e che pu essere trovata in questo libro nella Appendice A Questo libro per la maggior parte il seguito di Robotica con il Boe Bot Segue lo stesso formato in termini di presentazione
168. s Per una introduzione ben formulata alle pratiche di progettazione per i dispositivi ed 1 macchinari moderni altamente raccomandato lo studio delle attivit e dei progetti delle seguenti guide per studenti Che cosa un Microcontroller il testo iniziale della serie ed quindi raccomandato prima dei titoli seguenti Che cosa un Microcontroller Guida per Studenti Versione 2 2 Parallax Inc 2004 Disponibile in lingua Italiana Applied Sensors Student Guide Version 1 3 Parallax Inc 2003 solo in Inglese Basic Analog and Digital Student Guide Version 1 3 Parallax Inc 2004 solo in Inglese Industrial Control Student Guide Version 1 1 Parallax Inc 1999 solo in Inglese Kit di Robotica Alcuni studenti iniziano il curriculum Stamps in Class con la guida per studenti Robotica con il Boe Bot Dopo averla completata sarete pronti per i testi ed 1 kit di robotica seguenti Robotica con il Boe Bot Guida per Studenti Versione 2 2 Parallax Inc 2004 Disponibile in lingua Italiana Infrarossi per il controllo a distanza del Boe Bot Guida per Studenti Versione 1 0 Parallax Inc 2004 Questo testo Advanced Robotics with the Toddler Student Guide Version 1 3 Parallax Inc 2004 solo in Inglese SumoBot Manual Version 2 0 Parallax Inc 2004 solo in Inglese Pagina xii Controllo Remoto ad IR per il Boe Bot Kit per Progetti Didattici Elements of D
169. s based on Forward MRO Rotate Right Backward Pivot Fwd left V Pivot Fwo rigng Pivot Backer Pagina 72 Infrarossi per il Controllo a Distanza del Boe Bot ES OE ia ET CERI ease CASE 9 Pr O10 Mie BLS 690 EU OUD Waza ot CASE Bis EU SOU spades ee ay 50 POS Ore ye a ENDSELECT LOOP MP Subroutine Get Ir Remote Code J 1 Piyot Back rignt Y Hola Position 1 SONY TV IR remote subroutine loads the remote code into the remoteCode variable Get_Ir_Remote_Code remoteCode 0 DO RCTIME IrDet 1 irPulse LOOP UNTIL irPulse gt 1000 BUMSAS O ENESE Le LePulse gt 500 THEN cemorceCoce BITO 1 Rei Mia wiih Sheen EESE hE LePuLse gt 300 THEN remoteCode BIEL 1 ReTIMENIEDe 805 ESS ir LePuLlse gt 300 THEN cemocteCoce BITZ 1 RCTIME LrDet 0 irpulse ie LePuLlse gt 300 THEN rcemoteCoce BITS 1 RCTIME ise ber 0 dete leer Pe LePulse CORE ENER RCTIME LrDet 0 irPuLlse IF irPulse gt 300 THEN remoteCode BIT5 1 RCTIME siete 0 irPuLlse Le LePuLse gt 300 THEN cemorteCocde BITO ch sf 1 Clear all bits in remoteCode Wait for rest between messages Measure pulse PESCE or leave ear Measure next pulse 1 Set or leave clear bic 1 ATE Adjust remoteCode so that keypad keys correspond to the value Siem ven in IF remoteCode lt 10 THEN remoteCode remoteCode 1 IF remoteCode 10 THEN remoteCode 0
170. set cto Control a SONY TY wich tche 1 4 or CH i and VOL keys SSTAMP BS2 CSP BAGG rst time VAR Word 2 SONY TV remote variables DEBUG Press anc hold a cigit key 1 4 or CH anc VOL so EREOQOQUT 4 2000 3000 Start reset indicator DO Beginning of main loop DO Wait for rest between messages PULSIN 9 l time 0 LOOP UNTIL time 0 gt 1000 PULSIN 9 0 amet Measure store data pulses Edy Sal hoes i cme tle Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 35 a Decide which maneuver to execute depending on the combination of pulse durations stored in the first two pulse measurements iy cime 1 lt 500 AND time 0 lt 500 THEN BUT SO MIE iO Forwarol PULSOWUL 24 650 BLSBIEPE time Ll lt 500 AND time 0 gt 500 THIEN PUMS OVMA 620 Backward Pisoni oO bio cime gt 500 AND ctcime 0 lt 500 TRIEN PULSOUT 13 850 V Right rorarte PHL SONE SO BLSEBIFE Cte ly gt 500 AND time 0 gt 500 THIEN Rie SOU lee Meso se i Left rotate RAMU STOO Eke Lees Moree ENDIF MOOR Repeat main loop Il Vostro Turno Spiegare perch CH VOL e 1 3 fanno la stessa cosa Tornate alla Table 1 1 a pagina 31 e confrontate le durate degli impulsi nelle righe time 1 e time 0 per 1 e CH 2 e CH 3 e VOL ed infine 4 e VOL y Ora spiegate perch questi tasti fanno eseguire al Boe Bot le stesse funzioni Osservate la colonna time 4 e sp
171. si Questo risolverebbe 1 tasti 1 8 il tasto 9 ancora un problema ma lo lasceremo per la sezione Il Vostro Turno Per misurare tre impulsi di dati dovrete fare due modifiche a 2BitRemoteBoeBot bs2 Modificare la dichiarazione della variabile time in modo che sia un array a tre word invece che a due Aggiungere un terzo comando PULSIN per acquisire un terzo impulso e memorizzarlo nella variabile time 2 Cambiare il prompt del Terminale di Deubug in Press and hold a digit key 1 8 Una volta che avete effettuato queste modifiche ecco una dichiarazione IF THEN che funzioner con 1 tasti 1 8 Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 37 IF time 2 lt 500 AND time 1 lt 500 AND PULSOUT 13 750 PULSOUT 12 650 ELSEIF time 2 lt 500 AND time 1 lt 500 PULSOUT 13 850 PULSOUT 12 650 ELSEIF time 2 lt 500 AND time 1 gt 500 PULSOUT 13 850 PULSOUT 12 750 ELSEIF time 2 lt 500 AND time 1 gt 500 PULSOUT 13 650 PULSOUT 12 650 ELSEIF time 2 gt 500 AND time 1 lt 500 PULSOUT 13 750 PULSOUT 12 750 ELSEIF time 2 gt 500 AND time 1 lt 500 PULSOUT 13 850 PULSOUT 12 850 ELSEIF time 2 gt 500 AND time 1 gt 500 PULSOUT 13 750 PULSOUT 12 850 ELSEIF time 2 gt 500 AND time 1 gt 500 PULSOUT 13 650 PULSOUT 12 850 ENDIF time 0 lt 500 THEN AND time 0 gt 500 AND time 0 lt 500 AND time 0
172. sibili nel sito www parallax com alla sezione Discussion Forums nel men Support Stamps In Class Group Aperto agli studenti agli educatori ed agli autodidatti questo forum permette ai membri di porre domande e condividere le risposte mentre progrediscono nelle attivit gli esercizi ed 1 progetti di questo testo Parallax Educator s Group Questo forum moderato fornisce supporto agli educatori sono graditi 1 consigli visto che continuiamo a sviluppare i nostri curriculum Stamps in Class Per aderire a questo gruppo dovrete provare il vostro status di educatori verificabile dalla Parallax La guida per insegnanti per questo testo disponibile per il download gratuito da questo forum Educational Support stampsinclass parallax com Contattare direttamente il team Stamps in Class della Parallax se incontrate delle difficolt nella sottoscrizione di questo forum di discussione avete domande circa 1 materiali usati in questo testo i nostri curriculum i corsi per educatori o qualsiasi dei nostri servizi educativi Educational Sales sales parallax com Contattare il nostro ufficio vendite per informazioni circa la politica di sconti educazionali e dei pacchetti per classi dei nostri kit Stamps in Class ed altri prodotti selezionati Technical Support support parallax com Contattare il nostro team di supporto tecnico per domande generiche riguardanti l assemblaggio e l uso di qualsiasi dei nosti prodotti hardware o software GUIDA P
173. sso4 Non accettare caratteri che non hanno alcun significato per il programma attendere fino a che il carattere giusto viene inserito Passo5 Annidare le routine di memorizzazione e recupero in un ciclo con opzioni dal men Passo 6 Adattare il prototipo del Terminale di Debug alla maschera per il controllo con telecomando ad infrarossi Passo 7 Aggiungere indicatori LED ed altoparlante per aiutare l utente Fase di Compilazione e Fase di Funzionamento Il lavoro che l editor f con il programma prima del dowload al BASIC Stamp fatto in fase di compilazione Le dichiarazioni DATA e le direttive CON e VAR sono tutte processate durante la fase di compilazione comandi che vengono eseguiti dal BASIC Stamp mentre il programma in funzione DEBUG FREQOUT etc lo sono durante la fase di funzionamento Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 133 Passo 1 Lettura e Visualizzazione di Valori Memorizzati nella EEPROM da una dichiarazione DATA In questo passo scriveremo e collauderemo un programma che memorizza caratteri nella EEPROM durante la fase di compilazione e li estrae ed esegue durante la fase di funzionamento La memorizzazione verr eseguita con la direttiva DATA e l estrazione e l esecuzione verranno eseguite con 1 comandi READ e DEBUG Ripassiamo la direttiva DATA questa la sintassi del comando presentata sulla guida sintattica del PBASIC dell Editor del BASIC Stamp Sintassi Simbolo DAT
174. st autonomamente navigando per cambiare il modello di comportamento e Abilitare Disabilitare il programma del Boe Bot con il tasto acceso spento e Indicare al Boe Bot quale programma attivare e Tele controllare il Boe Bot con sequenze di movimenti Durante il corso imparerete l uso della modulazione a larghezza di impulso PWM per l invio di messaggi elettronici il sistema numerico binario il comando PBASIC PULSIN e nuovi usi dei comandi RCTIME e SELECT CASE UDITORIO Questo testo organizzato in modo che possa essere usato dalla pi grande variet di studenti cos come da allievi autodidatti Gli studenti di scuole medie possono provare gli esempi di questo testo in una modalit assistita semplicemente seguendo le istruzioni contrassegnate e con la supervisione degli istruttori All altro capo dello spettro la comprensione da parte degli studenti della pianificazione e la capacit nella risoluzione dei problemi possono essere valutate con le domande gli esercizi ed 1 progetti con le soluzioni nel sommario di ciascun capitolo L allievo a autodidatta pu lavorare al Pagina x Controllo Remoto ad IR per il Boe Bot proprio ritmo ed ottenere assistenza tramite 1 forum dei gruppi di discussione Stamps in Class citati in seguito ASSISTENZA E GRUPPI DI DISCUSSIONE I seguenti due forum per gruppi di discussione sono a disposizione per coloro che desiderano supporto nell uso di questo testo Questi gruppi sono acces
175. studiate le tecniche di programmazione per limitare il numero delle pressioni di tasti che il programma accetta Tramite esempi sono stati studiati la progettazione e l implementazione di sequenze sensate di pressioni di tasti per la scelta di specifiche funzioni robotiche anche stato studiato un rocesso passo passo per la soluzione di funzioni complesse Nella progettazione della interfaccia utente si fatto grande uso delle finestre di Trasmissione e di Ricezione del Terminale di Debug come strumento di prototipazione Dopo aver definito le interazioni con l utente con l aiuto del Terminale di Debug sono stati importati in una maschera di comunicazione remota ad IR Domande 1 Qual il nome della variabile usata per il controllo della velocit del programma IrRoamingWithSpeedControl bs2 2 Che cosa fa CLS ne comando DEBUG CLS 3 Che cosa accade quando la variabile usata in una dichiarazione SELECT CASE non contiene nessuno dei valori specificati nella dichiarazione CASE Se questo diventa un problema come lo potreste risolvere 4 Che cosa f l argomento opzionale Address in una direttiva DATA In che modo questo influisce sul valore del Simbolo opzionale 5 qual la differenza tra il comando READ ed il comando WRITE 6 Come pu essere usata una dichiarazione SELECT CASE all interno di un ciclo DO LOOP per attendere un valore specifico prima di continuare con il passo successivo del programma Esercizi 1 In Ir
176. suB tendono a semplificare il codice spaghetti perch il comando RETURN reinvia il programma al comando che segue immediatamente la chiamata alla subroutine Salvate KeypadDirectionDistanceYourTurn bs2 con il nuovo nome di KeypadDirectionDistanceYourTurn2 bs2 Capitolo 2 Creare ed usare Applicazioni Remote Pagina 95 Muovete l etichetta servo_Pulses label il comando DEBUG ed il ciclo FOR NEXT che invia gli impulsi ai servo dalla routine principale ad una subroutine Quando lo avrete fatto dovrebbe somigliare al seguente eevee ares p SUD ECU ENS Sv OE FVO PU LS SS SSS sass S Sea SS Sere Se se SaaS Sea ae Call this subroutine to deliver pulses to the servos You must store the number of pulses in the value variable and the maneuver in the direction variable ChUp forward ChDn backward VolUp rotate right VolDn rotate left Servo_Pulses DEBUG Running 4 CR CR FOR counter 1 TO value SELECT direct Lon CASE ChUp PULSOUT ServoLeft 850 PULSOUT ServoRight 650 CASE ChDn PULSOUT ServoLeft 650 PULSOUT ServoRight 850 CASE VolUp PULSOUT ServoLeft 850 PULSOUT ServoRight 850 CASE VolDn PULSOUT ServoLeft 650 PULSOUT ServoRight 650 ENDSELECT PAUSE 20 NEXT RETURN Al posto di quel codice appena rimosso dalla routine principale aggiungete questa chiamata alla subroutine GOSUB Servo_Pulses Cambiate questa riga nella routine principale GOTO Servo Pulses In modo che sia
177. suonando due volte per farvi sapere che potete rilasciare il pulsante sul telecomando Quindi chiama la subroutine Get_Multi Digit_Value che quella che acquisisce 1 tasti premuti per impostare la nuova velocit seguiti dal tasto ENTER per far ripartire il Boe Bot quando un messaggio infrarosso non viene emesso IN9 1 ed il blocco di codice tra IF ed ENDIF non viene eseguito Il risultato che il Boe Bot continua la sua navigazione IF IN9 0 OR speed 0 THEN Check for IR message FREQOUT Speaker 100 3500 Signal remote message Pagina 114 Controllo Remoto ad IR per il Boe Bot PAUSE 100 detected GOSUB Get_Multi_Digit_Value Get new speed speed value Set new speed PAUSE 250 Pause for debounce ENDIF Il Vostro Turno Discriminare il tasto POWER Al momento potete interrompere la navigazione del Boe Bot premendo qualsiasi tasto TV sul telecomando Certamente questo non funzioner se premete tasti sul telecomando che non sono assegnati al controllo della TV Assumete di voler usare per interrompere la navigazione del Boe Bot solamente il tasto POWER Potete modificare il codice in modo che la subroutine Get_Multi Digit Value sia richiamata solamente quando viene premuto il tasto POWER annidando tutto il codice che interpreta la nuova velocit emessa dal telecomando in una seconda dichiarazione IF THEN Prima di questa dichiarazione IF THEN viene chiamata la subroutine Get_Ir_Remote_ Code Rico
178. surare lo Stato di Riposo tra Messaggi Quando premete e mantenete un dato tasto sul telecomando il telecomando invia il codice di quel tasto quindi attende per un periodo ed invia di nuovo il codice CountStartPulses bs2 pu anche essere modificato per conoscere la durata di questo intervallo tra messaggi La durata di questo intervallo mostrata in Figura 1 9 e si rivelata essere un fattore Importante nella navigazione del Boe Bot Capitolo 1 Comunicazione a Distanza con gli Infrarossi Pagina 17 a Intervallo di Pausa tra messaggi __ Figura 1 9 Due messaggi Questa schermata dell Oscilloscopi 0 USB della Parallax mostra a due messaggi IR separati da una pausa messaggio IR messaggio IR Per misurare lo stato di intervallo con il modulo BASIC Stamp tutto ci che dovete fare pensare all intervallo con segnale alto tra 1 messaggi come un impulso positivo con una durata molto lunga Il comando PULSIN deve essere modificato per rilevare un impulso positivo cambiando l argomento State da 0 ad 1 Anche l istruzione IF THEN dovr essere modificata in modo che non esegue acun codice a meno che il tempo misurato sia inferiore a 1000 2 ms Questo ci assicura che 1 brevi impulsi alti tra l impulso di start e gli impulsi dei dati non influenzino la misura Invece verranno misurati solamente gli impulsi alti pi lunghi quelli tra 1 messaggi Rogamma Esempio CountRestingStates bs2 V Digitate e
179. t by a universal remote conFigurad to control a SONY TV This program also supports Keypad entry of malti cdigit values SSTAMP BS2 ECS P BAS 1G AES eee PREA ONDE finiscano Se ee eS eee toro eoeo o SONY TV IR remote declaration input receives from IR detector IrDet BANN 9 Speaker PIN 4 E Con stcoente diens e SONY TY IR remote Constants tor nNon keypa DuttTons Enter CON Jel ChUp CON 16 ChDn CON L7 Volo CON 18 Weck CON 19 Power CON Can Pagina 82 Infrarossi per il Controllo a Distanza del Boe Bot ica lirici az nn SONY Ty 2R remota variables irPulse VAR Word Single digit remote variables remoteCode VAR Byte index VAR Nib value VAR Word Stores multi digit value eee oa McRae Replace this DO LOOP with your own code DO DEBUGICEnNtesta arose CR GOSUB Get_Multi_Digit_Value DEBUGIEERe EREDE TIGRTZGR LOOP oe ere MES Uro ceo SONY TV IR remote subroutine loads the remote code into the remoteCode variable Gensler Remore lode remoteCode 0 Clear all bits in remoteCode DO Wait for rest between messages ROMIMA dite palese LOOP UNTIL ace ise gt 1000 PURSIN Tuber 0 a ESE Measure De LePulse gt 500 THEN cemoceCoce BITO 1 U Der Or ROMMER DSO E a eE SE Measure IP irPulse gt 300 THEN cemoteCode BITI 1 1 68r Or ROMMER DSO E lee HRIBE LE LePuULse gt 300 THEN cemoteCoce BITZ 1 ROEMER RADSIN he heehee gt 300 THEN cemoceCoce BITS
180. tamp programming circuit building and electronics with fun multi sensory experiments This is the gateway text to Stamps in Class Elements of Digital Logic will immerse students into a sight sound and hands on logic environment This curriculum utilizes both hardware and software simultaneously to teach logic RGRCREGIGESEGE SEGRE GEREGGE RETE CRTORI The Understanding Signals kit shows students how to view and analyze signals with the OPTAscope A perfect companion kit the example circuits are drawn from other Stamps in Class texts Basic Analog and Digital explores the principles of interfacing analog devices to the digital BASIC Stamp Measure and control real world conditions with A to D and D to A conversions FILTETTERTETITIVARATIVATITITITITITII PITITITITITTTE TERE ELUTE EEE a oe o es DO CS i A i ll RSRGRGRSARARGERI GRIGI Ra SERRE RE GAZA 4x Robotics with the Boe Bot mounts a Board of Education onto a robot chassis Learn programming as you teach your Boe Bot to navigate autonomously with multiple sensor circuits Applied Sensors formerly Earth Measurements covers program structuring sensor calibration EEPROM data logging conductivity of water closed loop feedback and debugging in an earth science format Process Control introduces aspects of industrial system automation with sensors mechanical and digital switches with on off differen
181. ti dal telecomando molto breve il codice aggiuntivo di un ciclo FOR NEXT pu causare la perdita di alcuni impulsi Quindi ciascun elemento dell array verr impostato sequenzialmente da dodici comandi PULSIN PULSIN 9 O aime 0 PULSIN 9 0 time 1 PULSIN 9 0 time 2 PULSIN 9 0 time 11 Ogni volta che vedrete tre punti tra i comandi significa che ci sono altri elementi nella sequenza che sono stati omessi per semplificare la spiegazione Per esempio nella sequenza di comandi PULSIN i Indicano che esistono ma non sono mostrati i comandi da PULSIN 9 0 time 3 fino a PULSIN 9 0 time 10 Tre punti sono anche usati per descrivere comandi come FOR NEXT DO LOOP ed altre dichiarazioni che hanno blocchi di codice tra l inizio e la fine delle parole chiave tre punti indicano che ci sono uno o pi comandi tra le parole chiave che non sono stati mostrati Progamma Esempio RecordAndDisplayPwm bs2 questo pProgramma Esempiomisura e visualizza la durata di tutti 1 dodici impulsi dei dati La Figura 1 14 mostra un esempio di che cosa verrebbe visualizzato quando il tasto 5 del telecomando viene premuto e mantenuto premuto Potete usare questo programma per esaminare lo schema degli impulsi per ciascun tasto del vostro telecomando Ricordate che alcuni tasti non sono per il TV come ad esempio 1 tasti play e pause che funzionerebbero con un VCR Questi tasti non fanno emettere messaggi dal telecomando quando co
182. tial gap and PID control methods Advanced Robotics with the Toddler will teach you how to build and program a high quality machined two servo bipedal walking robot controlled by an embedded BASIC Stamp 2
183. time 4 Cambiate la dichiarazione IF in ELSEIF Prima della dichiarazione ELSEIF che avete appena sostituito ad IF aggiungete questo codice Ll Ll Ll L IF time 4 gt 500 THEN IF time 1 lt 500 AND time 0 lt 500 THEN PULSOUT 13 850 PULSOUT 12 650 ELSEIF time 1 lt 500 AND time 0 gt 500 THEN PULSOUT 13 650 PULSOUT 12 850 ELSEIF time 1 gt 500 AND time 0 lt 500 THEN PULSOUT 13 850 PULSOUT 12 850 ELSEIF time 1 gt 500 AND time 0 gt 500 THEN PULSOUT 13 650 PULSOUT 12 650 ENDIF Capitolo 2 Creare ed usare Applicazioni Remote Pagina 47 Capitolo 2 Creare ed Usare Applicazioni Remote PROGRAMMI RIUSABILI In questo capitolo svilupperete e collauderete due diversi programmi applicativi per telecomandi IR Li proverete da soli ed anche con nuove applicazioni per il Boe Bot Essi renderanno possibile con meno lavoro la realizzazione tutti i generi di programmi telecomandati per il Boe Bot questi programmi applicativi possono anche essere usati con molti altri progetti Pensate a tutte le macchine ed alle invenzioni che hanno delle tastiere Potrete progettare la vostra versione di queste invenzioni con un rivelatore di infrarossi ed un telecomando universale ATTIVIT 1 INTERPRETARE MESSAGGI IR La chiave per utilizzare le misure degli impulsi che avete raccolto nel capitolo precedente la decodifica Nel caso dei messaggi che il telecomando universale invia
184. tivo nel messaggio non ci interessa Questo programma acquisisce sette impulsi perch questo tutto ci che necessario per acquisire 1 tasti del telecomando TV Inoltre sette misure impiegano meno tempo per essere eseguite lasciando al BASIC Stamp altro tempo per prendere altre misure Ricordate che un impulso di circa 1 2 ms un binario 1 mentre un impulso di circa 0 6 ms un binario 0 per il primo comando PULSIN se l elemento dell array time memorizza un valore maggiore di 500 1000 us 1 ms deve essere un impulso 1 binario Similmente se l elemento dell array time memorizza un valore minore di 500 deve essere un impulso 0 binario Per i comandi RCTIME che seguono se time memorizza un valore maggiore di 300 deve essere un 1 binario altrimenti uno 0 binario Pagina 60 Infrarossi per il Controllo a Distanza del Boe Bot Il Vostro Turno Correzione dei Valori della Tastiera Le regole secondo cui valori numerici corrispondono ai tasti possono confondere Quando remoteCode 0 il tasto premuto in realt l 1 Quando remoteCode 1 il tasto premuto in realt 2 e cos via fino a che remoteCode 8 che significa che il tasto 9 stato premuto Ma ora quando remoteCode memorizza 9 significa che stato premuto il tasto 0 Potete aggiustare questo problema con un paio di dichiarazioni IF THEN Queste dichiarazioni IF THEN possono regolare il valore memorizzato nella variabile remoteCode in modo ta
185. ubroutine Get_Ir Remote _Code e la dichiarazione SELECT IF sleepOnOff 0 AND remoteCode lt gt RemoteSleep THEN remoteCode 127 ENDIF V Aggiungete un comando case al blocco di codice SELECT CASE come il seguente CASE RemoteSleep FREQOUT 4 50 4000 PAUSE 50 FREQOUT 4 50 4000 PAUSE 300 sleepOnOff sleepOnoff yV Commentate i due comandi PuLsoUT che seguono la dichiarazione CASE ELSE Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 101 Capitolo 3 Ulteriori Applicazioni IR Remote ESPANDERE I PROGRAMMI APPLICATIVI Il punto chiave del codice riusabile che vi permette di partire dal vostro lavoro precedente per realizzare applicazioni migliori e pi potenti Il lavoro precedente pu essere codice che avete scritto voi o pu essere codice pubblicato che avete aggiunto o adattato In questo capitolo constaterete come le applicazioni su cui avete lavorato fino ad ora possono essere mescolate con altre applicazioni Per esempio il codice per Boe Bot da Robotica con il Boe Bot verr aggiunto alla maschera del codice per l applicazione Telecomando IR per effettuare una variet di compiti Nell Attivit 1 mescolerete un programma per evitare gli oggetti autonomamente con gli IR in una maschera per la comunicazione remota Il risultato sar un Boe Bot che avanza autonomamente e la cui velocit potr essere da voi controllata con il telecomando Nell Attivit 2 trasformerete il Boe Bot in un r
186. ulti Funzione con selezione Remota 44 Attivit 3 Boe Bot Programmato a Distanza 44 OMIM ANIC teettancescosascbacceesaseonncst EOLIE RO IOROE mane enc CISCO LRE COP SCO CORTE STE TR TT IT TTT 44 Appendice A Documentazione dell AppKit IR Remoto 44 INGIC NEEE EE AEE SEEE AE EE AE EA AE EA EAA EAE A EE EA ira 44 Prefazione Pagina ix Prefazione UN ROBOT AUTONOMO ED UN TELECOMANDO Il telecomando pu essere lo strumento per fare zapping tra 1 canali comodamente seduti sul divano ma questo dispositivo pu anche essere usato per inviare messaggi al vostro robot Boe Bot La pressione di un tasto del telecomando rivela tutta una nuova serie di possibilit per 11 Boe Bot Una volta compreso come un telecomando usa gli infrarossi per trasmettere messaggi ad un TV o ad un Videoregistratore programmare il microcontrollore BASIC Stamp 2 per ricevere e processare questi messaggi molto facile Non appena questi compiti sono trasformati in subroutine la programmazione del Boe Bot per azionarlo in base a questi messaggi facile come uno schiocco di dita Sono di seguito elencate alcune applicazioni del Boe Bot che avrete l opportunit di provare nei prossimi tre capitoli e Premere e mantenere premuti dei tasti sul telecomando per controllare il vostro Boe Bot come una automobile telecomandata e Inviare messaggi al vostro Boe Bot mentre
187. umeri subroutine che effettuano la funzione di riconoscere 1 tasti e vedrete anche le variabili necessarie per l applicazione di queste subroutine Potrete anche trovare altre sezioni che contengono direttive DATA routine di inizializzazione e storici di revisione In questa Attivit scriverete una routine principale di navigazione per il Boe Bot che usa le funzioni supportate da IrRemoteButtons bs2 familiarizzando con l addattamento di questi programmi riusabili al vostro Boe Bot potrete usare una pi vasta gamma di risorse pubblicate Specialmente quando si ha a che fare con un nuovo sensore display o processore audio il lavoro di sgrossatura gi stato fatto e pubblicato nei programmi esempio Star a voi adattarlo alla vostra applicazione robotica o altra applicazione In molti casi prenderete subroutine con le loro relative costanti e variabili da svariati programmi e li combineretee in una applicazione principale che controlla diversi sottosistemi Una Semplice Routine Principale per il Boe Bot Nell Attivit precedente avete sostituito la routine principale in IrRemoteButtons bs2 con un blocco di codice che conteneva una dichiarazione SELECT cASE Il modo migliore per ricordare come funziona SELECT CASE di usarlo per SELEZIONARE una costante variabile o espressione e valutarla caso per caso SELECT remoteCode rende possibile valutare la variabile remoteCode caso per caso eseguendo diversi comandi DEBUG ciascuno per
188. utine principale con un sistema di men Questo schema facile da espandere semplicemente aggiungendo altre dichiarazioni CASE Le subroutine di un singolo schema di applicazione possono anche essere usate in modi nuovi e creativi per creare ulteriori comportamenti robotici e pi potenti La terza attivit lo ha dimostrato costruendo uno schema di inserimento da tastiera di telecomando IR per la programmazione del Boe Bot stata esaminata pi attentamente la memoria EEPROM come utensile per la memorizzazione ed il recupero di sequenze di caratteri e valori Usando l operatore Address in una direttiva DATA potete definire blocchi di memoria non usata come memoria di servizio del programma Nomi simbolici opzionali Simbolo possono essere assegnati ai comandi DATA per aiutare il calcolo della locazione di un dato DataItem resa molto pi semplice l uso della EEPROM con il comando WRITE per la memorizzazione ed il comando READ per la lettura Specialmente se dovete Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 157 memorizzare e gestire piu di un elenco di elementi correlati come ad esempio le manovre e le distanze del Boe Bot In questo testo sono stati studiati gli elementi di progettazione delle interfaccie utenti User Interface UI Dai capitoli precedenti sono stati presentati ed applicati la funzione di antirimbalzo dei pulsanti e la retroazione con altoparlante e LED Nella terza attivita di questo capitolo sono state
189. va 64 127 DEBUG 13 DEBUGIN 21 DEC modificatore 22 DO LOOP 13 DO LOOP UNTIL 77 END 62 FOR NEXT 21 FREQOUT 31 IF THEN ENDIF 13 PIN dichiarazione 61 PULSOUT 9 RCTIME 36 comandi in fase di funzionamento 127 SELECT CASE 55 58 sintassi Vedere PBASIC Guida Sintattica VAR dichiarazione 58 WRITE 131 PBASIC Guida Sintattica 127 PIN 61 positivo impulso 10 programma organizzazione 148 protocollo 5 PULSIN 9 54 PULSOUT 69 PWM 5 R RCTIME 36 54 remote controlled car 29 Reset button 70 Resistenzas 3 reusable code 97 run time 127 Sta SELECT CASE 55 58 65 135 servo 32 37 ritardo 37 Indice Pagina 181 _R rivelatore infrarossi 3 9 262 segnale portante 5 Servo a Rotazione Continua 32 Supporto Educazionale viii SONY protocollo 5 subroutine 58 Supporto viii Supporto Tecnico Vili sintassi Vedere PBASIC Guida Sintattica Ta Telecomando universale 2 Terminale di Debug 11 IU UI Vedere interfaccia utente _V valori multi cifra 71 VAR dichiarazione 58 variabile modificatore BIT 48 variabili 12 VCR pulsanti di controllo 64 _W Word modificatore 128 WRITE 131 Pagina 182 Infrarossi per il Controllo a Distanza del Boe Bot Go to the head of the class Explore microcontroller programming and interfacing with any of our popular Stamps in Class Curricula What s a Microcontroller introduces BASIC S
190. ver bist ee nde ca beect lon LE direccion VOW TRSN ESSE DHRPUCHECR EE ENE SEE DEBUGIN DEC distance WRITE Distance List eeIndex distance eeIndex eeIndex 1 LOOP Das WG lage El Routine Play Back Instructions eeIndex 0 direction 0 DO UNTIL eeIndex 19 READ Maneuver ist eeindex direct ion READRNLIs once ea an LES direccion VOW THEN EXILI DEBUG direction A D E CO SNEER PAUSE 200 Capitolo 3 Ulteriori Applicazioni IR Remote Pagina 141 eeIndex eeIndex 1 LOOP END Il Vostro Turno Passo 4 Attendere che venga Digitato il Carattere Giusto Un problema con l attuale programma esempio che accetta qualsiasi carattere non solamente 1 caratteri F B L R e Q che a voi servono per la navigazione 9 9 9 9 y Lanciate nuovamente il programma e provate quando richiesto per la direzione a digitare caratteri diversi da quelli elencati Una dichiarazione SELECT CASE all interno di un ciclo DO LOOP uno strumento che potete usare per filtrare solamente i caratteri che volete prima di continuare La dichiarazione SELECT CASE pu avere due sezioni una con un elenco dei caratteri che volete ricevere ed un ELSE case per tutti gli altri caratteri che non vi interessano Quando la variabile direzione contiene uno dei caratteri che volete il cASE con l elenco dei carattrei giusti pu uscire EXIT dal ciclo DO LOOP Il blocco di codice CASE ELSE deve solamente contenere un mess
191. vi richiede una direzione con CH VOL DEBUG Select direction CH VOL CR Il programma richiama continuamente la subroutine Get_Ir_Remote_Code fino a che non viene riccevuto dal telecomando un remoteCode che rientra tra ChUp 16 e VolDn 19 Se qualche tasto che non sia CH o VOL la dichiarazione IF THEN invia un tono basso di errore insieme con una richiesta dal Terminale di Debug di premere uno dei tasti CHoVOL DO GOSUB Get_Ir_ Remote Code IF remoteCode lt ChUp OR remoteCode gt VolDn THEN DEBUG Select direction CH VOL CR GOSUB Beep_Error ENDIF LOOP UNTIL remoteCode gt ChUp AND remoteCode lt VolDn Dopo che stata chiamata la subroutine Get_Ir_Remote_Code la direzione che vlte inviare al Boe Bot con il telecomando memorizzatanella variabile remoteCode Questo valore deve essere memorizzato in una variabile diversa prima che un altro messaggio IR venga processato altrimenti il valore verr perso Ecco perch il valore di direzione memorizzato in remoteCode deve essere copiato in un altra variabile che a questo scopo chiamata direction Pagina 92 Infrarossi per il Controllo a Distanza del Boe Bot direction r emotecode Il tasto di destra deve essere premuto per far uscire il programma dal ciclo Do LOOP che richiama la routine Get_Ir_Remote_Code Il programma chiama la subroutine Beep_Valid che f emettere il tono acuto di riconoscimento della pressione del tasto corr
192. za il carattere nell elemento successivo dell array FOR index 0 TO 4 DEBUG Enter character i DEC index DEBUGIN characters index DEBUG CR NEXT Pagina 24 Infrarossi per il Controllo a Distanza del Boe Bot Un secondo ciclo FOR NEXT legge e visualizza i valori di ciascun elemento dell array characters FOR index 0 TO 4 DEBUG characters index NEXT Alla prima iterazione del ciclo FOR NEXT il valore di index 0 quindi viene visualizzato characters 0 Alla seconda iterazione index 1 quindi viene visualizzato characters 1 e cos via Il Vostro Turno Memorizzazione di Va lt lori invece che Caratteri Potete usare il modificatore DEC per memorizzare valori invece che caratteri Ecco come Salvate ArrayEsempio bs2 con il nome ArrayEsempioYourTurn bs2 yV Cambiate DEBUG Type character DEC index DEBUGIN characters index DEBUG CR in DEBUG Type value character DEC index DEBUGIN DEC characters index y Cambiate DEBUG characters index in DEBUG CR DEC characters index y Lanciate il programma modificato e digitate valori da 0 a 255 Assicuratevi di premere il tasto Enter dopo l ultima cifra di ciascun valore che inserite Verificate che il programma visualizzi i valori che avete memorizzato in ciascun elemento dell array acquisizione dell intero messaggio Un messaggio completo del telecomando ha dodici impulsi di dati Ecco come acquisire
193. zione remota 125 controllo velocita 102 Boe Bot Robot Kit 2 i CLS 51 codice spaghetti 90 CON direttiva 58 conversione da binario a decimale 47 De DATA 64 127 DEBUG 12 13 BIN modificatore 47 DEC modificatore 22 Diagramma di temporizzazione 6 17 DEBUG modificatore CLS 51 Pagina 180 Infrarossi per il Controllo a Distanza del Boe Bot DEBUGIN 21 51 DEC modificatore 22 decimale sistema numerico 46 decodifica 45 disabilita interruttore 70 DO LOOP 13 DO LOOP UNTIL 77 Be END 62 Pa fase di compilazione 127 FOR NEXT 21 FREQOUT 31 73 Finestra di Trasmissione 20 49 Grandi Numeri 70 Guida per Insegnanti vili Gruppo Educatori Parallax viii He high pulse 10 aule IF THEN 54 IF THEN ENDIF 13 impulsi negativi 10 indice 19 interfaccia utente 126 IR LED 3 IR Remote AppKit 1 IR Remote AppKit Documentazione 159 Re Tasti disposizione 16 al led infrarossi 2 3 8 10 11 20 23 160 LED assemblaggio e schermatura 3 LSB first 5 M manovre 33 manuale instruzioni 7 Mappa della Memoria 105 modulazione a larghezza di impulso 5 N navigazione autonoma 97 P Parti del Kit Boe Bot 3 PBASIC comandi protocollo comunicazione 5 PULSIN 9 PBASIC comandi BIT modificatore di variabile 48 LOWBIT modificatore 49 BIN modificatore 47 CLS modificatore 51 comandi della fase di compilazione 127 DATA diretti
194. zioni Remote Pagina 49 e Secondo moltiplicate ciascun bit per la sua potenza di due ed inserite il risultato nella casella immediatamente sottostante e Terzo sommare tutti 1 prodotti ed inserite il risultato a destra del segno Step 1 Enter the digits in your binary number here LODOLLLO Figura 2 2 Power of 2 X 128 X 64 X 32 X16 X8 X4 X2 X1 Conversion a a a e da Binario ee TOVTOOOOO a sn Decimal Value Step 2 Multiply each bit by its power of 2 Step 3 Add up and enter the number in the products box all the products Nella Figura 2 3 seguite questi passi per calcolare il valore decimale del numero binario 10011 Step 1 Enter the digits in your binary number here Bit T 6 5 4 3 2 1 0 PILI LIE yl ee Aiea Calcolare l equivalente Power of 2 X 128 X 64 X 32 X 16 X8 X4 X2 X 1 Decimale pews ME P Heete a Brao roducts _ Y _ eee Decra Binario1001 Value 1 Step 2 Multiply each bit by its power of 2 Step 3 Add up and enter the number in the products box all the products Pagina 50 Infrarossi per il Controllo a Distanza del Boe Bot Programma Esempio BinaryToDecimal bs2 Sebbene possiate scrivere un programma PBASIC che esegua ciascuno dei passi appena studiati 1 modificatori BIN e DEC possono facilitare il compito Digitate e lanciate BinaryToDecimal bs2 Clickate nella finestra di trasmissione del Terminale di Debug Digitate fino ad otto cifre binarie uno e zero quind
Download Pdf Manuals
Related Search
Related Contents
Hampton Bay RFSW30030LRS-MS Installation Guide L`octénidine dans l`antisepsie C&LPS-V23215-3 La méthode ABC ABM – Rentabilité mode d`emploi Sommaire de la USER MANUAL / MANUAL DE USUARIO / MANUAL DO Copyright © All rights reserved.
Failed to retrieve file