INCONTRO DI. (Micro) Robotica. a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INCONTRO DI. (Micro) Robotica. a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto"

Transcript

1 INCONTRO DI (Micro) Robotica a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto ITIS C. Zuccante - Mestre 23 Novembre Struttura dell incontro 1) Presentazioni di concetti, esempi, paradigmi, strumenti, 2) Dimostrazioni (con gli studenti volontari) 3) Questioni didattiche 2 1

2 INTRODUZIONE 3 La Robotica nella Scuola La Robotica rappresenta un settore di grande importanza sia a livello scientifico che economico e culturale. Vengono assemblate competenze e tecnologie derivate da settori diversi : meccanica, elettronica, informatica, Intelligenza Artificiale, automatica, sistemistica, fisica, filosofia, psicologia, etologia, ecc.. La sua applicazione alla realtà scolastica consente di sviluppare negli studenti un atteggiamento nuovo ed attivo verso le tecnologie : l'interazione con una macchina "intelligente" e la possibilità di farla funzionare, rappresenta uno stimolo motivazionale all'apprendimento. Fonte: Scuola di Robotica 4 2

3 Definizioni tipiche di ROBOT (da dizionario ) 1) Dispositivo meccanico, a volte con sembianze umane, capace di eseguire una varietà di compiti complessi su comando o da programma. 2) Macchina che agisce in modo autonomo o da controllo remoto. 5 Cos è un ROBOT? Un ROBOT è un agente artificiale che interagisce con un ambiente (spazio a dim.) desiderata comportamento (programma) attuatori sensori 6 3

4 Componenti di ogni robot SENSORI : input dall ambiente ATTUATORI : output sull ambiente (almeno uno di tipo meccanico, altrimenti ) LOGICA PROGRAMMABILE (struttura di interpretazione per un LINGUAGGIO) Mezzo di comunicazione per i programmi Console di controllo (avvio, arresto, ecc.) eventualmente remota 7 Generazioni di robot 1) 70 : fissi, non programmabili, senza sensori. 2) 80 : con sensori e programmabili. 3) 90 : anche mobili (autonomi o ad insetto ). programmazione sofisticata, riconoscimento/sintesi della voce,... 4) 2000 : riconoscimento immagini, autoriproduzione, miniaturizzazione (nanorobots), 8 4

5 ROBOT INDUSTRIALI 1) 70 : fissi, non programmabili, senza sensori. 2) 80 : con sensori e programmabili. 3) 90 : anche mobili (autonomi o ad insetto ). programmazione sofisticata, riconoscimento/sintesi della voce,... 4) 2000 : riconoscimento immagini, autoriproduzione, miniaturizzazione (nanorobots), 9 Un esempio di robot avanzato (filmato) 10 5

6 Occorre intendersi ROBOTICA? MICROROBOTICA? NANOROBOTICA? ROBOTICA INDUSTRIALE? 11 Cos è la MICROROBOTICA? (Museo delle Scienze) La microrobotica è un ramo della robotica che si occupa delle applicazioni ludiche, educative e scientifiche di robot più piccoli per dimensione e costo rispetto ai robot industriali o degli istituti di ricerca. 12 6

7 Un esempio classico: l inseguitore di linea (filmato) 13 L inseguitore di linea: la strategia Per sempre Luce := get(sensore_luce) se Luce <= BiancoPavimento + SENSITIVITA` allora GiraDestra() altrimse Luce >= NeroLinea - SENSITIVITA` allora GiraSinistra() altrim VaiAvantiDritto() 14 7

8 Microrobotica: quando, come e dove è nata? 1) Idea dei ROBOT giocattolo fai da te MIT (Boston) 80, S. Papert, F. Martin, LEGO 2) Hobby per adulti con competenze di informatica ed elettronica anni 90, soprattutto negli USA, grazie ai progressi dei microcontrollori 15 ROBOTICA ALLO ZUCCANTE 16 8

9 ROBOTICA allo Zuccante (Prima fase - primi anni 80 : robot industriali) Manipolatore IBM impiegato in piccole catene di montaggio e/o di trasporto automatico 17 Cos è un ROBOT INDUSTRIALE? Un ROBOT è un manipolatore multifunzione ri-programmabile, progettato per muovere materiali, parti, strumenti o dispositivi speciali mediante movimenti programmati finalizzati all esecuzione di svariati compiti Robot Institute of America,

10 Esempio di codice anni 80 (AML) MAIN: SUBR; PAYLOAD (2); PMOVE (PT1); DELAY (3); PMOVE (PT2); GRASP; DELAY (2); RELEASE; DELAY (1); END -- imposta la velocità -- muoviti sul primo punto -- aspetta 3 secondi -- muoviti sul secondo punto -- chiudi la mano -- aspetta 2 secondi -- apri la mano -- aspetta un secondo 19 ROBOTICA allo Zuccante (Seconda fase : anni 80-90) Epoca dei piccoli ed economici bracci meccanici. Programmazione in Pascal, C,... SVANTAGGI: poco precisi e inaffidabili legati con dei cavi al computer (periferica di un PC) 20 10

11 ROBOTICA allo Zuccante (terza fase: la Microrobotica ) uso dei microcontrollori autonomia di movimento scopi ludici e/o dimostrativi programmazione con linguaggi concorrenti 21 Due esempi ( Area di Progetto - Terza ISF /2002) Conta piazzole (filmato) Torre di Hanoi (filmato) 22 11

12 La Tartaruga da pavimento (robot De Agostini modificato) 23 GIOCHI PER GRANDI 24 12

13 Creazioni (LEGO) 25 Altre creazioni (LEGO)

14 Non solo LEGO Quale microrobot? Mattoncino LEGO (mindstorms.lego.com) Robot De Agostini-Parallax (robot.deagostini.it) Robot Parallax (www.parallaxinc.com) Handy cricket (handyboard.com/cricket/) Altri (links in Fai da te (anche con prodotti di recupero) 28 14

15 I linguaggi Linguaggio della CPU (assembler) eventualmente mediante compilazione (C, C++) VANTAGGI : velocità di esecuzione, flessibilità nell uso della memoria e delle altre risorse Linguaggi per un interprete (tipo BASIC, LOGO, Java, RCX bytecode (LEGO),... ) VANTAGGI: 1) riduzione dei tempi di caricamento 2) facilità di programmazione 29 ASPETTI PEDAGOGICI 30 15

16 Robot già costruiti? No, grazie. 31 Fondamenti pedagogici: il costruzionismo (Papert) "I bambini adorano costruire oggetti. Così, mi dissi, scegliamo un set di costruzioni e aggiungiamogli tutto quello che serve per creare dei modelli cibernetici. se desiderano fabbricare un drago o un camion o un letto ribaltabile, devono avere anche quella possibilità. L'unico limite deve essere quello della loro immaginazione e delle loro capacità tecniche. siamo riusciti a costruire computer abbastanza piccoli da poter essere inseriti nei modelli stessi. La differenza è sostanziale; ora l'intelligenza si trova in realtà all'interno del modello non in un computer fuori scala. Inoltre i modelli possono essere autonomi. Possono muoversi a piacimento senza un cordone ombelicale. Tutto insomma appare più reale." (Papert, 1993) 32 16

17 I ROBOT giocattolo fai da te Inventare i propri giocattoli significa: 1) decidere le funzionalità e l estetica 2) progettare la parte meccanica (hardware) 3) progettare la logica di controllo (software) 4) assemblare: reperire e montare i pezzi 5) programmare: codificare e caricare il software 6) verificare le funzionalità ed eventualmente tornare ad un passo precedente 33 Perché a SCUOLA? Perché crea motivazioni allo studio di diverse discipline Perché favorisce l apprendimento cooperativo Perché aiuta a capire limiti e potenzialità del mondo tecnologico che ci circonda Perché fornisce idee per tesine, area di progetto, ecc

18 Quali ordini di scuola? Scuola d infanzia (esperimenti) (?) Scuola elementare Scuola media Scuole con: Informatica/Elettronica/Meccanica (Meccatronica? ) Altre scuole superiori Università (per ricerca e tesi) 35 Prototipi del MIT MIT F. Martin, S. Papert e altri Cricket : 2 motori, 2 sensori, porta infrarossi, dialetto del LOGO Programmable brick: per 3 motori, 6 sensori, infrarossi, vari linguaggi 36 18

19 Il mattoncino programmabile Per introdurre idee della scienza delle costruzioni a studenti delle elementari e superiori abbiamo creato il mattoncino programmabile, una nuova tecnologia, e collaborato con insegnanti al progetto e alla verifica di piani curricolari per introdurre questa tecnologia in classe. In questo modo gli studenti esplorano una varietà di concetti, come l acquisizione tramite sensori, la teoria del controllo e dei sistemi. Fondamentale per il nostro approccio è la convinzione che i bambini imparano più efficacemente quando vengono coinvolti in attività di progetto, costruzione e verifica. Fred G. Martin (MIT Media Laboratory) Far danzare con il LOGO to dance cha-cha-cha go-round end to cha-cha-cha repeat 4 [back-and-forth] ab, off end to back-and-forth ab, thisway onfor 3 ab, thatway onfor 3 end to go-round a, on thisway b, on thatway beep wait 1 beep wait 1 beep wait 60 ab, off end 38 19

20 Un esperienza in una quarta elementare (2000) (filmato) 39 Quali discipline? non in ordine di importanza (!): INFORMATICA SISTEMI E AUTOMAZIONE ELETTRONICA (e TELECOMUNICAZIONI) EDUCAZIONE TECNOLOGICA MECCANICA MATEMATICA FISICA e altre SCIENZE 40 20

21 INFORMATICA Crea motivazioni per lo studio di: linguaggi formali/interpreti/compilatori programmazione tradizionale nuovi paradigmi di programmazione algoritmi e intelligenza artificiale affidabilità (robustezza) del software 41 Giocare con i linguaggi Compilatore LX? L1 Compilatore LY? L1 Compilatore LZ? L1 Interprete per L1 (in L0) (firmware) 42 21

22 La semi-compilazione programma per il ROBOT (scritto in L2) TRADUTTORE da L2 ad L1 (su PC esterno) NOTA : parte o tutto l interprete potrebbe trovarsi in una ROM all intermo del microcontrollore es. attraverso una porta seriale ROBOT ( macchina L1) RAM libera Interprete per L1 (in RAM ) CPU RAM L0 43 Interpretazione Esempi di linguaggi solitamente interpretati: BASIC, LOGO, Java, RCX bytecode (LEGO), VANTAGGI: 1) tempi di caricamento ridotti 2) facilità di programmazione e debugging 3) assolve anche alle funzioni di Sistema Operativo 44 22

23 SISTEMI E AUTOMAZIONE Crea motivazioni per lo studio di: metodologie di progettazione dei sistemi sistemi di controllo (retroazione, controllo remoto, controllo in tempo reale, ) programmazione concorrente e S.O. sistemi di comunicazione 45 ELETTRONICA Crea motivazioni per lo studio di: tecniche di interfacciamento assemblaggio di componenti elettronici progettazione e studio di sensori e attuatori soluzione ai problemi di risparmio energetico 46 23

24 EDUCAZIONE TECNOLOGICA Crea occasioni per riflettere sulle caratteristiche degli artefatti digitali: flessibilità nel cambio delle funzionalità linguaggi d uso digitali inserimento di intelligenza 47 MECCANICA Crea motivazioni per lo studio di: componenti meccanici e movimento applicazione di schemi di progetto meccanici e pneumatici creazione di nuove soluzioni soddisfacimento di requisiti di affidabilità meccanica (equilibrio, robustezza, ecc. ) 48 24

25 MATEMATICA Crea motivazioni per introdurre/applicare: distinzione analogico/discreto approssimazioni - conversioni virgola fissa e virgola mobile medie pesate, geometria, trigonometria, probabilità,... gradienti, logica formale, logica fuzzy, FISICA e altre SCIENZE Stimolo per: statica, dinamica, cinematica principi fisici di funzionamento dei sensori e degli attuatori acquisizione ed elaborazione anche in tempo reale di dati sperimentali (fisica, chimica on line, biologia,...) 50 25

26 MECCATRONICA? E` lo studio interdisciplinare di: - meccanica - elettronica/elettrotecnica - informatica. Al giorno d oggi sono pochi i prodotti che consistono esclusivamente di meccanismi, circuiti elettrici o pura informazione. 51 DOCUMENTAZIONE disegno (automatico) inglese web fotografia video presentazione 52 26

27 IL MATTONCINO LEGO 53 Il mattoncino LEGO (1998) molto compatto computer integrato della potenza degli anni 70 flessibile e modulare linguaggi per varie esigenze relativamente economico 54 27

28 Struttura logica del mattoncino porta seriale a raggi infrarossi - programmi - messaggi porte IN Macchina RCX (Lego) A B C porte OUT display 55 Procedura di caricamento memoria programmi 56 28

29 RCX : caratteristiche hardware microcontrollore Hitachi H8 con 16K ROM 32 Kb RAM (esterna) infrarossi (2400 bit/sec) 3 unità controllo motori 57 Dettagli strutturali dell RCX Macchina virtuale RCX bytecode (LEGO) Macchina LEGO (livello minimo) da caricare all inizio una volta per tutte fino a che non si cambia il firmware o si scaricano le batterie RAM (32 K) programmi utente 6K Firmware 16K (?) RAM On-chip 16 K ROM CPU interprete RCX bytecode Microcontrollore H

30 RCX: caratteristiche del microcontrollore H8/3297 H8/300 CPU core (8/16 bit) fino a 16 MHz 16-60kBytes ROM or 32 & 60kBytes OTP 512Bytes - 2kBytes SRAM 1 x 16 bit timer 2 x 8-bit timer Watchdog timer 1 x USART 8 x 10-bit A/D converter 51 I/O pins 64 pins SDIP or QFP and 68 pins PLCC packages 59 RCX : caratteristiche software Compilazione da Linguaggi ad alto livello RCX bytecode Interpretazione (firmware) Linguaggio macchina H

31 La memoria RAM (32 Kb) 16 Kb : FIRMWARE cioè l interprete di RCX bytecode (da caricare all inizio una volta per tutte fino a che non si cambia il firmware o si scaricano le batterie) 6 Kb: liberi per i programmi da caricare di volta in volta dettagli tecnici su: 61 I programmi (con interprete RCX bytecode) Fino a 5 programmi. Ogni programma può essere avviato o arrestato. Ogni programma può avere fino a 10 task concorrenti

32 Principali linguaggi per il mattoncino LEGO Linguaggio Visuali (LEGO) Compilatore RCX-LabVIEW? RCX bytecode Compilatore RCX-code? RCX bytecode Testo (Open Source) Compilatore NQC? RCX bytecode Interprete per RCX bytecode ( in assembler H8/300) 63 Gerarchie di macchine (LEGO) RCX-code, LABView, Visual Basic, NQC,... COMPILAZIONE macchina virtuale RCX bytecode interpretazione macchina H8/

33 Il firmware RCX 2.0 (cosa è stato aggiunto...) Arrays Controllo eventi Semafori (access control) Timers ad alta risoluzione 32 variabili locali e 16 globali Display di variabili su LCD Firmware alternativi per RCX pbforth (per la programmazione in FORTH) Lejos (LEGO Java Tiny Virtual Machine) per la programmazione in un sottoinsieme di Java (tanti potrebbero proporne uno) 66 33

34 No firmware Nella RAM viene caricata una sola applicazione compilata in linguaggio H8/300 a cui vengono linkate delle funzioni API e un sistema operativo più o meno sofisticato. LegOS per C/C++ QC (Quite C) con tutti i 32 K liberi (ma no multitasking!) 67 LA PROGRAMMAZIONE (INTRODUZIONE) 68 34

35 Paradigmi di programmazione per robot per regole (se i sensori dicono questo allora fai quello ) imperativo tradizionale (assembler, Basic, C, ecc. ) imperativo concorrente (ad es. con uso di task) programmazione reattiva (1988) design patterns (ad oggetti), programmazione logica, tecniche AI, (molti ci stanno lavorando) 69 Programmazione per regole Si danno un insieme di regole che determinano il comportamento del robot. se il sensore 1 tocca allora accendi il motore A per un secondo e ferma il motore B se la temperatura è troppo bassa allora accendi lo scaldino Paradigma apprezzato dai non esperti di programmazione 70 35

36 Programmazione imperativa programma <inizializzazioni varie> per sempre esegui istruzione-1 istruzione-2... istruzione-n 71 Una soluzione in 4 linguaggi Problema: se si preme spegni il motore RCX-code NQC Visual Basic Robolab (Labview) 72 36

37 Un problema tipo Hello accendere il motore connesso ad A per un secondo 73 Soluzione LabVIEW (con ROBOLAB) 74 37

38 ROBOLAB (Lego) è un ambiente di programmazione compatibile con LABView (National Instruments Corporation) molto noto per la simulazione di circuiti elettronici. E` un LINGUAGGIO VISUALE con: 4 livelli (Pilot) con schemi di programma prefissati (scuole elementari e medie) 4 livelli (Inventor) con schemi liberi 75 Soluzione NQC (Not Quite C) /* accende una lampadina/motore per un secondo */ task main() { On(OUT_A); Wait(100); Off(OUT_A); } 76 38

39 Strumenti: Linguaggio macchina? (assemblatori/compilatori) 1) Cross assemblatore del microcontrollore 2) Cross compilatori C, C++,... VANTAGGI : - velocità di esecuzione - flessibilità nell uso della memoria e delle altre risorse 77 Linguaggio macchina? (un frammento di un esempio in assembler H8) wait_sound: mov.w r7,r6 mov.w mov.w #0x700c,r6 jsr get_sound_queue_length adds #0x2,r7 bne wait_sound jsr clear_display jsr refresh_display jsr power_off jmp power_on 78 39

40 NQC : uno standard di fatto 79 NQC (Not Quite C) (le ragioni di un successo) 1) E` gratis ( open source ) 2) Sfrutta tutte le possibilità del firmware LEGO 3) Facilita chi già programma in C, Java, JavaScript 4) E` il linguaggio più diffuso tra gli appassionati 5) Si applica ad una famiglia di microrobot (Scout, MicroScout, Cybermaster, Code Pilot, RCX) 80 40

41 NQC : struttura di un programma (informale) /* commento bla bla bla */ definizione di costanti (e macro) variabili globali eventuali sottoprogrammi (function, sub, task) task main() { corpo del principale } 81 NQC : il tipo int (unico tipo ammesso) rappresentazione: 16 bit, in complemento a 2, no overflow operazioni aritmetiche unarie : - abs(n) sign(n) operazioni aritmetiche binarie : + - * / % operazioni sui bit : >> << ~ & ^ (xor) confronto: = =! = < > <> <= >= visto come tipo BOOLEANO costanti: true ( valore? 0) e false ( valore? 0) operazioni logiche:! (not) (or) && (and) 82 41

42 NQC : costanti e variabili #define SIZE=100 int a, b=5, c =0; si possono mettere in ogni blocco { } a = SIZE-3; b = a++; a--; // --a b += 3; 83 NQC : gli array int nome[numero-elementi] indici come in C: da 0 a numero-elementi - 1 Limitazioni: per gli array globali ci sono al max 32 elementi in tutto per quelli locali vi sono limitazioni simili gli elementi non possono essere trattati del tutto come variabili 84 42

43 NQC : lettura dai sensori - 1 Prima di chiamare una serie di letture da un sensore occorre configurarlo: SetSensor(SENSOR_x, SENSOR_config) x: config: TOUCH sensore di contatto LIGHT sensore di luce ROTATION sensore di rotazione CELSIUS FAHRENEIT sensore di temperatura PULSE EDGE sensore di contatto (eventi) 85 NQC : lettura dai sensori - 2 Per la lettura dai sensori vi sono 3 macro predefinite: SENSOR_1 SENSOR_2 SENSOR_3 equiv. a SensorValue(0) equiv. a SensorValue(1) equiv. a SensorValue(2) (Nota : tutti i sensori vengono letti automaticamente ogni 3 millisecondi) Esempio: x = SENSOR_1; //legge in x il valore del sens

44 NQC : gli attuatori - 1 Gli attuatori hanno tre nomi simbolici per 3 costanti: OUT_A 1 OUT_B 2 OUT_C 4 Se ne possono indicare anche più di uno alla volta. Esempi: OUT_A + OUT_C OUT_A + OUT_B + OUT_C 87 NQC : gli attuatori - 2 Operazioni essenziali sugli attuatori: SetPower(outputs, livello) livello: N.B. la potenza effettiva dipende dalla carica delle batterie! OnFwd(outputs) OnRev(outputs) Stop(outputs) accende gli outputs avanti accende gli outputs indietro arresta gli outputs 88 44

45 NQC : strutture di controllo - 1 (prese dal C) { istr; istr; istr; } <-- BLOCCO if (cond) istr if (cond) istr else istr while (cond) do istr do istr while (cond) for(istr; cond; istr) istr switch (espr) { case } + break, continue e return 89 NQC : strutture di controllo -2 (non ereditate dal C) until (cond) istr equivalente a: while (!cond) do istr repeat (espr) istr ripeti espr volte l istr specificata 90 45

46 NQC : strutture di controllo -3 (non ereditate dal C) monitor(event-mask) istr [ catch istr ] per la programmazione ad eventi acquire(id-risorsa) istr [ catch istr ] per il controllo della competizione tra task 91 NQC : utilità di uso frequente Wait(centesimiDiSecondo) Watch() ora in minuti Random(N) genera un casuale tra 0 ed N SetRandomSeed(n) imposta il seme ad N SetUserDisplay(n,decimali) PlaySound(numero-suono) PlayTone(frequenza, centesimidisecondo) 92 46

47 NQC : i timer ClearTimer(n) n = 0, 1, 2, 3 int Timer(n) valore del timer (risoluz. 0,1 sec) SetTimer(n, value) int FastTimer(n) valore del timer (risoluz. 0,01 sec) 93 NQC : data logging CreateDatalog(n) crea un datalog per n valori AddToDatalog(x) aggiunge un valore al datalog per scaricare su PC: nqc -datalog > file.txt 94 47

48 NQC : messaggi I messaggi sono dei numeri compresi tra 1 e 255: ClearMessage() svuota il buffer dei messaggi Message() ultimo messaggio inviato (0 se non inviato) SendMessage(n) invia n mod NQC : procedure (chiamate function ) void Nome(parametri) blocco In realtà sono espanse a tempo di compilazione: 1) no ricorsione 2) occupazione duplicata per ogni chiamata parametri: int a, per valore int &b, per indirizzo 96 48

49 un esempio di procedura NQC (legge un intero piccolo da un sensore di contatto) void LEGGI(int &volte){ SetUserDisplay(0,0); SetSensor(SENSOR_1,SENSOR_TOUCH); volte=0; do { ClearTimer(0); until (SENSOR_1==1); //attende la pressione if (Timer(0)<30) {PlaySound(1);} until (SENSOR_1==0); //attende il rilascio volte ++; SetUserDisplay(volte,0); } while (Timer(0)<30); volte --; SetUserDisplay(volte,0); PlaySound(2); } 97 NQC : subroutine sub Nome() blocco Limitazioni: - no parametri - no chiamate annidate (quindi anche no ricorsione) Esempio: sub Beep() repeat (2) {PlayTone(100, 100); Wait(30); } } 98 49

50 NQC : task task NomeTask() blocco Operazioni sui task: start NomeTask stop NomeTask StopAllTasks() Li vedremo meglio più avanti. 99 NQZ

51 I problemi didattici di NQC 1) La sintassi C-like è penalizzante in certi contesti educativi: - è case sensitive - problemi con { } ; - operatori non intuitivi: = = % - può incentivare brutte abitudini di programmazione 2) La diagnostica (errori di compilazione) è in inglese, spesso è generica ( parse error ) o ridondante. 101 Possibile soluzione: NQZ (prof. M. Moschini- 2001/2002 ) Non è case sensitive Viene tradotto in NQC Si possono inserire frammenti di NQC Diagnostica in italiano e più accurata di quella di NQC Compilatore scritto in Java Esiste un file di regole che consentono di cambiare agevolmente sintassi e semantica del linguaggio E` open source

52 Esempio in NQZ (* accende una lampadina/motore per un secondo *) RCXprogram begin on(out_a) wait(100) off(out_a) end Vantaggi: no graffe, no ; no case-sensitive, 103 NQZ viene tradotto in NQC Programma in NQZ Compilatore NQZ? NQC Compilatore NQC? L1 Interprete per L1 (in L0)

53 Altro esempio in NQZ (* equivalente in NQZ del programma in 4 linguaggi *) RCXprogram begin setsensor(sensor_1,sensor_touch) forever if SENSOR_1 = 1 then off(out_a) else on(out_a) (* no case sensitive *) endif endforever end 105 traduzione in NQC /* equivalente in NQZ del programma in 4 linguaggi */ task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); while (true) { if (SENSOR_1==1) { Off(OUT_A); } else { On(OUT_A); } } }

54 un altro esempio in NQZ (* Memorizza nel Datalog NUMCAMPIONI del valore del sensore di rotazione ogni TEMPOCAMP centesimi di secondo *) RCXprogram const NUMCAMPIONI = 100 TEMPOCAMP = 10 (* centesimi di secondo *) var temp,i begin SetSensor(SENSOR_3,SENSOR_ROTATION) CreateDatalog(NUMCAMPIONI) for i:=1 to NUMCAMPIONI do temp:=sensor_3 write temp (* scrive sul display *) AddToDatalog(temp) Wait(TEMPOCAMP) endfor end 107 NQZ è flessibile NQZ è realizzato in modo che possa rappresentare un ampia famiglia di linguaggi. sintassi e semantica sono definibili a piacere solo modificando un file di regole

55 NQZ/L Programma in NQZ/L Compilatore NQZ? NQC Regole per il linguaggio L Compilatore NQC traduzione in RCX bytecode 109 un esempio di regola SINTASSI IstruzPerSempre = <Forever> {Istruzione} <EndForever> < 1 ><while (true) ><}> SEMANTICA (traduzione in NQC) traduzione induttiva di {Istruzione}

56 PROGRAMMAZIONE CONCORRENTE 111 Programmazione a task (esempio di strutturazione) task principale <inizializzazioni varie> avvia task-1 avvia task-2 <altri comandi> => Problemi di competizione/sincronizzazione task-1 task-2 avvia task-4 arresta task-5 task-n

57 Programmazione concorrente i programmi possono risultare più chiari se si individuano diverse funzioni parallele le diverse funzioni possono competere sull uso di risorse comuni del ROBOT (ad es. la porta IR). più robot possono cooperare ad uno scopo comune e necessitano dei momenti di comunicazione e sincronizzazione i robot possono competere sull uso di risorse comuni 113 Programmazione a task task principale <inizializzazioni varie> avvia task-1 avvia task-2 <altri comandi> => Problemi di competizione/sincronizzazione task-1 task-2 avvia task-4 arresta task-5 task-n

58 Un problema semplice 1) fare intermittenza con una luce con periodo 1 sec 2) fare un beep intermittente con periodo 0,6 sec 115 Una possibile soluzione con i task #define RIT1 50 #define RIT2 30 #define TONO 800 task main() { start IntermittenzaLuce; start IntermittenzaSuono; } task IntermittenzaLuce() { while(true) { On(OUT_B); Wait(RIT1); Off(OUT_B);Wait(RIT1); } } task IntermittenzaSuono(){ while(true) { PlayTone(TONO,RIT2); //la chiamata è asincrona Wait(2*RIT2);} }

59 NQC : operazioni sui task start NomeTask stop NomeTask StopAllTasks() SetPriority(numero) 0 = priorità più alta 255 = priorità più bassa Ogni task può accedere all AMBIENTE GLOBALE: variabili, sensori, attuatori, porta seriale, speaker, timers, contatori 117 Risoluzione della competizione (costrutto acquire di NQC ) acquire (numero-risorsa) corpo [ catch handler] Semantica: se numero-risorsa è libera oppure se è occupata da un task con priorità non migliore allora occupala, esegui il corpo e alla fine libera la risorsa [ esegui handler in caso di preemption o di insuccesso] preemption = abbandono prematuro della risorsa

60 Numeri di risorsa (numeri simbolici da 0 a 7 ) ACQUIRE_OUT_A o OUT_A 0 ACQUIRE_OUT_B o OUT_B 1 ACQUIRE_OUT_C o OUT_C 2 ACQUIRE_SOUND 3 ACQUIRE_USER_1 4 ACQUIRE_USER_2 5 ACQUIRE_USER_3 6 ACQUIRE_USER_ Un problema di competizione (un esempio) Problema: fare in modo che i due seguenti task possano svolgere correttamente e all infinito il loro compito: task Accendi: accendere la lampadina (porta B) per un secondo task Spegni: spegnere la lampadina (porta B) per un secondo

61 Soluzione ingenua (e scorretta...) task Accendi() { while(true) { On(OUT_B); Wait(100); } } task Spegni() { while(true) { Off(OUT_B); Wait(100); } } 121 Soluzione meno ingenua (ma sempre scorretta...) task Accendi() { while(true) { acquire(out_b){ On(OUT_B); Wait(100);} } } task Spegni() { while(true) { acquire(out_b){ Off(OUT_B); Wait(100);} } }

62 Ci siamo quasi (occorre modificare le priorità...) task Accendi() { SetPriority(0); while(true) { acquire(out_b){ On(OUT_B); Wait(100);} } } task Spegni() { SetPriority(1) while(true) { acquire(out_b){ Off(OUT_B); Wait(100);} } } non ce la farà mai! 123 Una soluzione corretta task Accendi() { while(true) { if (ta)setpriority(0); else SetPriority(1); acquire(out_b){ On(OUT_B); Wait(100); ta=!ta;}//cambio turno } } task Spegni() { while(true) { if (ta)setpriority(1); else SetPriority(0); acquire(out_b){ Off(OUT_B); Wait(100); ta=!ta;}//cambio turno } } N.B ta è una variabile globale inizializzata a true

63 I messaggi sono dei numeri compresi tra 1 e 255: ClearMessage() Message() Messaggi tra robot (sincronizzazione - RCX) svuota il buffer dei messaggi ultimo messaggio inviato (0 se non inviato) SendMessage(n) invia n mod 255 Protocollo tipico di attesa attiva: ClearMessage(); until(message ()> 0); 125 PROGRAMMAZIONE AD EVENTI

64 Programmazione ad eventi (simile alla programmazione per regole ) 1) Dire quali sono gli eventi che possono accadere 2) Dire cosa fare quando si verifica ciascuno di questi eventi 127 Gli eventi in RCX 2.0 Possono generare eventi (possibili sorgenti ): i sensori i timers i contatori il buffer dei messaggi

65 Tipi di eventi in RCX 2.0 TIPO DI EVENTO DESCRIZIONE SORGENTE EVENT_TYPE_PRESSED off? on solo sensori EVENT_TYPE_RELEASED on? off solo sensori EVENT_TYPE_PULSE off? on? off solo sensori EVENT_TYPE_EDGE off? on oppure on? off solo sensori EVENT_TYPE_FASTCHANGE il valore cambia veloce solo sensori EVENT_TYPE_LOW il valore diventa low tutte EVENT_TYPE_NORMAL il valore diventa normal tutte EVENT_TYPE_HIGH il valore diventa high tutte EVENT_TYPE_CLICK da low ad high a low tutte EVENT_TYPE_DOUBLECLICK due click entro un certo tempo tutte EVENT_TYPE_MESSAGE ricevuto un nuovo messaggio SendMessage() 129 La programmazione (schema tipico in NQC con l istruzione monitor ) SetEvent(1,sorgente-1,tipo-evento-1) SetEvent(2,sorgente-2,tipo-evento-2) sono macro che generano costanti opportune while(true) { monitor (EVENT_MASK(1) EVENT_MASK(2) ) corpo //tipicamente un {Wait(...)} [ catch (mask1)handler-1 se durante l esecuzione del corpo catch (mask2)handler-2 si verifica un evento tra quelli previsti il controllo passa all handler catch (mask-n)handler-n ] corrispondente }

66 Un esempio semplice (accende/spegne una luce tramite pressed/released) task main() { SetEvent(1,SENSOR_2,EVENT_TYPE_PRESSED); SetEvent(2,SENSOR_2,EVENT_TYPE_RELEASED); while (true) { monitor (EVENT_MASK(1) EVENT_MASK(2)) {Wait(100);} //non troppo basso! catch (EVENT_MASK(1)) { On(OUT_B);} catch (EVENT_MASK(2)) { Off(OUT_B);} }//endwhile } 131 Sentire un impulso (accende/spegne dopo un impulso sul sensore) task main() { SetSensor(SENSOR_2,SENSOR_PULSE); SetEvent(1,SENSOR_2,EVENT_TYPE_PULSE); int acceso = false; while (true) { monitor (EVENT_MASK(1)) {Wait(100);} catch { if (!acceso) On(OUT_B); else Off(OUT_B); acceso=!acceso;} }//endwhile }

67 Problema Ragno e Mosca (da risolversi possibilmente con eventi + concorrenza) Gioco del Ragno e della Mosca: Un RAGNO (un robot) si gira intorno e attira su di sé con una melodia una MOSCA (un altro robot). La MOSCA si muove e il ragno resta immobile ad attendere la preda. Ma quando questa, ormai tra le zampe del RAGNO, si accorge dell inganno cerca di allontanarsi quanto basta. 133 Video Ragno e Mosca

68 Esercitazione client/server (eventi + concorrenza) Ciascun client (due robot) può inviare due tipi di messaggi al server (un terzo robot): 1) fai avanzare il motore per 0,5 secondi, provocato da un impulso sul sensore S1 2) fai indietreggiare il motore per 0,5 secondi, provocato da un impulso sul sensore S3 Nessun messaggio deve andare perduto: ogni client deve attendere un messaggio di acknowledge (accendere la lampadina) dal server prima di inviare un nuovo messaggio. Le richieste vanno soddisfatte nell ordine in cui arrivano. 135 Ancora su client/server Miglioramento: Registrare inoltre nel DataLog le richieste: mittente (1 o 2), il tipo (avanti/indietro) e l ora di inizio del soddisfacimento della richiesta Televoto: Adattare il progetto per un sistema di televoto: i client sono telecomandi. I messaggi vanno interpretati: vota per A oppure vota per B. Sul display del server si vedono i voti di A e di B a destra e a sinistra del display. Nessun client può votare più di una volta: deve prima inviare un codice personale

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Programmazione dei robot

Programmazione dei robot Programmazione dei robot Concetti introduttivi Il kit Mindstorms NXT è un sistema che permette di costruire e programmare i robot Lego Mindstorms. Il componente principale del kit è un piccolo computer

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

Sistemi e schedulazione in tempo reale

Sistemi e schedulazione in tempo reale Sistemi e schedulazione in tempo reale 1 Sistemi in tempo reale Sistemi di calcolo in cui la correttezza del funzionamento dipende criticamente dal tempo in cui i risultati sono prodotti. Possibili campi

Dettagli

DAL PROBLEMA AL PROGRAMMA

DAL PROBLEMA AL PROGRAMMA DAL PROBLEMA AL PROGRAMMA Scopo del modulo Conoscere alcuni concetti fondamentali dell informatica:algoritmo, l automa, linguaggio formale Essere in grado di cogliere l intreccio tra alcuni risultati della

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

A.S. 2010-2011. 1. Presentazione del materiale hardware MINDSTORMS.

A.S. 2010-2011. 1. Presentazione del materiale hardware MINDSTORMS. I.T.I.S. M.BARTOLO - PACHINO Progetto Introduzione alla robotica A.S. 2010-2011 1. Presentazione del materiale hardware MINDSTORMS. 2. Conoscenza dell unità programmabile - programmazione dei vari elementi

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO. Opzione Scienze Applicate

PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO. Opzione Scienze Applicate PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO Opzione Scienze Applicate Anno scolastico 2015-2016 Programmazione di Informatica pag. 2 / 8 INFORMATICA - PRIMO BIENNIO OBIETTIVI SPECIFICI DI APPRENDIMENTO DELL

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Insegnare il coding. In Italia tra le linee guida del governo sulla «Buona scuola» «L educazione al pensiero computazionale e al coding»

Insegnare il coding. In Italia tra le linee guida del governo sulla «Buona scuola» «L educazione al pensiero computazionale e al coding» Il codingnella nella didattica metacognitiva Cos è il coding? Per coding si intende la stesura di un programma, cioè di una sequenza di istruzioni che eseguite da un calcolatore danno vita alla maggior

Dettagli

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria Introduzione all Informatica 1 Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria Programma del corso Programma di

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

LICEO SCIENTIFICO LEONARDO DA VINCI - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Modulo 1: Introduzione all informatica Fondamenti di teoria della elaborazione

Dettagli

Laboratorio di Programmazione Strutturata

Laboratorio di Programmazione Strutturata Laboratorio di Programmazione Strutturata Facoltà di Scienze e Tecnologie per i Media Anno 2008/2009 Dati Generali Docente del corso : Dott. Tulimiero Davide Materiale del corso : Corso completo di programmazione

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

IL PLC 1/9. permanente, la memoria volatile e i pin di I/O, oltre ad eventuali altri blocchi specializzati.

IL PLC 1/9. permanente, la memoria volatile e i pin di I/O, oltre ad eventuali altri blocchi specializzati. IL PLC 1/9 Storia Il motivo per il quale nacque il PLC fu la necessità di eliminare i costi elevati per rimpiazzare i sistemi complicatissimi basati su relè. Nel anni 70 la società Beadford Associates

Dettagli

Ambiente di sviluppo per applicazioni custom Atomic. Atomic - 22 marzo 2007 Pagina 1 di 20.

Ambiente di sviluppo per applicazioni custom Atomic. Atomic - 22 marzo 2007 Pagina 1 di 20. Ambiente di sviluppo per applicazioni custom Atomic Atomic - 22 marzo 2007 Pagina 1 di 20. Introduzione Atomic è un micro-linguaggio di programmazione sviluppato per la famiglia di azionamenti full digital

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E Lezione 5: Software Firmware Sistema Operativo Architettura del Calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti: Hardware e Software Firmware: strato di (micro-)programmi

Dettagli

LOGO E ROBOTICA. Tutta la vita è risolvere problemi Karl Popper

LOGO E ROBOTICA. Tutta la vita è risolvere problemi Karl Popper LOGO E ROBOTICA Tutta la vita è risolvere problemi Karl Popper molto spesso lo sforzo che gli uomini compiono per attività che sembrano completamente inutili, risulta essere estremamente importante per

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Sistema software 1 Prerequisiti Utilizzo elementare di un computer Significato elementare di programma e dati Sistema operativo 2 1 Introduzione In questa Unità studiamo

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

3. Gestione di un sistema operativo a interfaccia grafica (elementi di base) 3.1 Software

3. Gestione di un sistema operativo a interfaccia grafica (elementi di base) 3.1 Software Pagina 29 di 47 3. Gestione di un sistema operativo a interfaccia grafica (elementi di base) 3.1 Software Come abbiamo già detto in precedenza, l informatica si divide in due grandi mondi : l hardware

Dettagli

Università degli studi di Roma LA SAPIENZA

Università degli studi di Roma LA SAPIENZA Università degli studi di Roma LA SAPIENZA Corso di ingegneria informatica e automatica Automazione I Realizzazione di una macchinina in grado di evitare le collisioni Di Alessandro Giuseppi All attenzione

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

Serie 70. The Future Starts Now. Termometro digitale Temp70. Temp70 RTD Professional

Serie 70. The Future Starts Now. Termometro digitale Temp70. Temp70 RTD Professional Serie 70 Termometro digitale Temp70 Temp70 RTD Professional Datalogger, per sonde Pt100 RTD 0,01 C da -99,99 a +99,99 C 0,1 C da -200,0 a +999,9 C Termometro Temp70 _ Ver. 1.0 01/2014 Indice dei contenuti

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

PLC Sistemi a Logica Programmabile

PLC Sistemi a Logica Programmabile PLC Sistemi a Logica Programmabile Prof. Nicola Ingrosso Guida di riferimento all applicazione applicazione dei Microcontrollori Programmabili IPSIA G.Ferraris Brindisi nicola.ingrosso @ ipsiaferraris.it

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

M. Bartolo. Istituto di Istruzione Secondaria Superiore

M. Bartolo. Istituto di Istruzione Secondaria Superiore Istituto di Istruzione Secondaria Superiore M. Bartolo PACHINO (SR) LICEO Classico -LICEO Scientifico LICEO delle Scienze Applicate - Liceo delle Scienze Umane I.T.I.S. (Elettronica e Elettrotecnica -

Dettagli

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI Informatica con esercitazioni Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag