PIC18F47J53 COME FARE UN PWM FACILE E
|
|
- Marino Rostagno
- 5 anni fa
- Visualizzazioni
Transcript
1 Steve Blackbird (TardoFreak) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 11 June 2013 Di tanto in tanto capita che qualche utente del forum richieda un circuito per variare in modo lineare o PWM l' intensità di LED. L' ultima discussione che ho letto si chiama "breathing LED" in cui si richiedeva un circuito in grado di far variare la luminosità di un LED con un andamento ascendente e discendente in modo da dare l' impressione che il LED respiri. La prima cosa che ho pensato è stata "Questo è un lavoro che con un micro si risolve in pochissimo tempo!". Infatti l' ho preso come spunto per implementarlo sul PIC18F47J53 cogliendo allo stesso tempo l' occasione per illustrare come le cose si possono fare con poco (spirito da vecchio microcontrollista eh eh eh) e come si utilizzano le fasi di funzionamento all' interno di un programma oltre che, ovviamente, implementare un PWM multicanale. Per la realizzazione pratica utilizzerò la scheda PIERIN PIC18. La tecnica PWM da implementare Non sarò di certo io quello che farà il solito pistolotto sulla tecnica di regolazione PWM (Pulse Width Modulation) perché sia ElectroYou che la rete ne sono pieni e la sua spiegazione esula dallo scopo di questo articolo. Quello che invece si deve sapere è che con questo programma si implementerà un controllo PWM a 32 livelli che verrà utilizzato per far variare la luminosità dei due LED che si trovano montati sul PIERIN PIC18 in modo lineare dando l' impressione che questi "respirino". In questo programma vengono comandati solo due LED ma, come si potrà ben vedere e capire, se ne potrebbero pilotare molti di più. La cosa che penso sia interessante è che non verrà utilizzata nessun' altra periferica che non sia stata utilizzata fino a questo articolo. In pratica utilizzerò solamente il Timer 2 che è già stato utilizzato nel programma di Demo e quindi conosciuto. E' vero che il PIC18F47J53 ha una ricca dotazione di timer con i quali si può fare qualsiasi cosa ma in questo caso se ne possono fare a meno. Abbiamo un micro potente e veloce ed un timer con comparatore. Non ci serve altro e tanto meno ci andremo a complicare la vita studiando altri tipi di timer... almeno per ora Descrizione del programma L' idea alla base del programma è realizzare, all' interno di un' interrupt ciclica, il controllo PWM. La frequenza deve essere sufficientemente alta da non fare apparire PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 1
2 il LED sfarfallanti ma che, allo stesso tempo, sia gestibile con facilità dal microcontrollore. Nel programma di demo l' interrupt ciclica era realizzata con il timer 2 che generava una chiamata ogni millisecondo. Questa volta il timer 2 verrà inizializzato in modo da generare una interrupt ogni 100 us., dieci volte di più, con la particolarità che gestirà ugualmente i timer software (sempre con risoluzione 1 ms.) e contemporaneamente la larghezza dell' impulso delle due uscite collegate ai LED con una frequenza di 312,5 Hz (un periodo di 3,2 ms) sufficientemente alta da dare un buon effetto visivo ed evitare lo sfarfallamento. Gestione dei timer software Posto che si vuole mantenere il funzionamento dei timer software come nel programma demo (decremento ogni millisecondo) e sapendo che l' interrupt viene chiamata ogni 100 us si utilizza una variabile che funge da divisore. In pratica la si fa contare da 0 a 10 e, quando è arrivata a 10 la si azzera e si aggiornano i timer software. Il risultato è avere dei timer software che si decrementano ogni millisecondo esattamente come nel programma demo. Gestione del PWM Anche la gestione del PWM utilizza una variabile che conta da 0 a 32. Se il valore della variabile (che contiene il livello di luminosità del canale) è superiore al valore del contatore l' uscita corrispondente verrà tenuta alta mentre se il suo valore è inferiore l' uscita sarà tenuta a 0. Avremo così ottenuto in modo semplice la parzializzazione del periodo in 32 passi che possono essere tutti disattivati (nel caso che il valore valga 0) oppure tutti attivati del il valore vale 32. Il programma Il progetto è stato creato partendo dal progetto di base e si è lavorato esclusivamente su file main.c. La prima cosa che salta all' occhio è la dichiarazione delle variabili locali. Questa volta ne abbiamo 4 volatile unsigned short timer_delay_1; // Timer software 1 volatile unsigned short timer_delay_2; // Timer software 2 Che sono i due timer software ognuno utilizzato dalla sua funzione autonoma che gestisce l' effetto luminoso del suo led e volatile char pwm_level_1; // Livello luminosità LED1 (0-32) volatile char pwm_level_2; // Livello luminosità LED2 (0-32) Che sono le due variabili che contengono i livelli di luminosità dei due LED. Troviamo anche due prototipi di funzione in più che sono PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 2
3 void gestione_led1(void); void gestione_led2(void); Si è deciso di fare due funzioni distinte ognuna per la gestione autonoma di ognuno dei due LED ma non solo per questo motivo. Questa volta prossima vedere come si gestiscono due processi contemporaneamente a patto di evitare alcune cose e seguire un certo rigore nella scrittura delle stesse. La funzione di servizio dell' interrupt Anche in questo caso il timer è stato inizializzato per generare una interrupt con priorità bassa mantenendo così le cose come sono nel programma di demo. Troviamo inizialmente la dichiarazione delle due variabili che fungono da divisore di base tempi e da contatore per il PWM. Sono dichiarate come statiche perché devono mantenere il loro valore anche al di fuori della funzione (se fossero dichiarate come variabili locali sarebbero azzerate ogni volta che viene chiamata la funzione) e, allo stesso tempo, non sono visibili al resto del programma. In pratica si comportano come variabili globali ma si possono usare solo all' interno della funzione. A loro viene assegnato un valore iniziale di 0. void lowpriorityinterrupt() // Verifica quale flag ha causato l' interrupt // Esegui la parte di codice di servizio dell' interrupt // Azzera il flag che ha causato l' interrupt //... static char time_base = 0; static char pwm_counter = 0; // Gestione dell' interrupt del timer 2 if(pir1bits.tmr2if) // Gestione del PWM del LED 1 if (pwm_level_1 < pwm_counter) LATDbits.LATD6 = 1; else LATDbits.LATD6 = 0; // Gestione del PWM del LED 2 if (pwm_level_2 < pwm_counter) LATDbits.LATD7 = 1; else LATDbits.LATD7 = 0; pwm_counter++; if (PWM_LEVELS == pwm_counter) pwm_counter = 0; // gestione del timer software. I timer software devono decrementarsi PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 3
4 // fino ad arrivare a 0. Una volta arrivati a 0 restano fermi a 0. // La gestione avviene solo quando la variabile time_base raggiunge il // valore TIME_BASE_COUNTS in modo da aggiornare i timers ogni ms. time_base++; if (TIME_BASE_COUNTS == time_base) time_base = 0; if (timer_delay_1) timer_delay_1--; if (timer_delay_2) timer_delay_2--; // Resetta il flag che ha generato l' interrupt PIR1bits.TMR2IF = 0; La gestione delle uscite dei LED è semplicissima. Se il valore contenuto nella variabile che rappresenta la luminosità è inferiore al valore del contatore l' uscita viene mandata alta, altrimenti rimane bassa. Così, se il valore della variabile vale 0 l' uscita sarà sempre a 0, ma se il valore vale 32 (valore che il contatore non raggiunge mai) l' uscita sarà fissa ad 1. Notare infatti che il contatore viene incrementato solo dopo la gestione delle uscite e se vale 32 viene riportato a 0. In pratica varia da 0 a 31. La gestione dei timer software differisce da quella del programma demo solo proprio perché i timer vengono decrementati ogni 10 incrementi della variabile time_base ottenendo così un decremento ogni millisecondo. Le funzioni che gestiscono i due LED Sono due funzioni sostanzialmente uguali e quindi ne analizziamo una sola. Notare la dichiarazione di una variabile (statica) di tipo enum. Questa variabile può assumere solo due valori: fase_up e fase_down. Il perché è comprensibile: se dobbiamo fare vedere i LED che "respirano" ci sarà una prima fase in cui il LED aumenta la luminosità (fase_up) ed una in cui la diminuisce (fase_down). // Funzione per la gestione del LED1 // La luminosità sale lentamente e scende velocemente // Note: // utilizza il timer software soft_timer_1 e controlla la // luminosita del LED tramite la variabile pwm_level_1 void gestione_led1(void) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 4
5 static enum // variabile che contiene lo stato di funzionamento fase_up, fase_down fase_ciclo = fase_up; // Aggiorna la luminosità quando il timer_1 è arrivato a 0 if (!timer_delay_1) switch(fase_ciclo) // Salita lenta case fase_up: timer_delay_1 = 80; if (PWM_LEVELS == pwm_level_1) fase_ciclo = fase_down; else pwm_level_1++; break; // Discesa veloce case fase_down: timer_delay_1 = 20; if (0 == pwm_level_1) fase_ciclo = fase_up; else pwm_level_1--; break; //switch(fase_ciclo) // if (!timer_delay_1) Quindi quando la funzione sta eseguendo la fase ascendente verrà solo eseguita la parte di programma che sta sotto il case fase_up: e l'ì altra non verrà eseguita. Quando la fase ascendente sarà terminata, cioè quando il valore di luminosità avrà rangiunto il valore massimo la variabile fase_ciclo cambierà di valore assumendo il valore fase_down come indicato in questo disegno. PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 5
6 Forse per due soli stati di funzionamento questo può sembrare eccessivo dichiarare una variabile enum ma gli stati di funzionamento potrebbero essere molti. In questo modo viene solo eseguita la parte relativa allo stato di funzionamento realizzando così una macchina a stati. Se non si introducono cicli che possono fermare l' elaborazione (come ad esempio i ritardi fissi o le attese di tasti premuti) ma si usa la macchina a stati si possono eseguire più compiti contemporanenamente. Una sorta di multitasking cooperativo (di bassa macelleria) ma che funziona... e pure bene. Il main Nel main, dopo le opportune inizializzazioni che non starò nuovamente ad analizzare (non vorrei essere ripetitivo) troviamo la parte operativa vera e propria. // Inizializza i livelli dei due LED ed azzera i due timer pwm_level_1 = 0; pwm_level_2 = 0; timer_delay_1 = 0; timer_delay_2 = 0; // Ciclo infinito di funzionamento for(;;) // Inserire il programma qui. gestione_led1(); gestione_led2(); //for(;;) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 6
7 E' effettivamente semplice: azzeramento delle variabili ed esecuzione continua delle due funzioni. Notare che in questo programma sono solo due perché ci sono da gestire solo gli effetti visivi di 2 LED ma ce ne potrebbero essere molte di più. Magari ci potrebbe essere una funzione che testa i pulsanti per farci un qualcosa, un' altra funzione che realizza una rete logica con altri ingressi ed uscite, un po' di tutto. L' importante è che si tenga presente che ogni funzione (task) non deve tenere il controllo del programma per più di un tempo stabilito a priori e, tanto meno, deve piantare il programma all' interno di una attesa! Se non si seguono queste regole allora niente funziona ma se si seguono le potenzialità di un programma diventano notevoli. Suggerimenti per la sperimentazione Il risultato visivo di questo programma è quello mostrato in questo video. I due LED non "resipirano" sincronizzati. E' un effetto voluto proprio per far vedere che due funzioni sono completamente autonome. Il programma esegue in buona sostanza due task in parallelo. Flash Per poterlo vedere funzionare anche senza compilare tutto il programma con MPLAB si può programmare il file.hex chiamato easy_pwm.hex direttamente dentro la scheda. Se poi si incomincia a variare i valori con cui sono caricati i timer software si variano le velocità di lampeggio. Si può anche leggere da un ingresso analogico, magari collegato ad un potenziometro, scalarne il valore in modo che vada da 0 a 32 e comandare manualmente la luminosità di un LED oltre che, naturalmente, PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 7
8 aggiungere altri canali PWM. Con un po' di buona volontà il divertimento e gli esperimenti sono assicurati. Cio detto, e scusando di eventuali errori ed imprecisioni, non mi resta che augurare BUONA SPERIMENTAZIONE!. Il sorgente completo // File di definizione dei registri del micro. #include "p18f47j53.h" // File di libreria contenete le funzioni di ritardo #include "delays.h" // File di configurazione dei fuses #include "configurazione.h" // Mappatura delle interrupt #include "mappa_int.h" // Header del main #include "main.h" // Defines del programma // Numero di interrupts per base tempi 1ms. #define TIME_BASE_COUNTS 10 // Nmumero di livelli per le uscite PWM #define PWM_LEVELS 32 // Variabili globali #pragma udata volatile unsigned short timer_delay_1; // Timer software 1 volatile unsigned short timer_delay_2; // Timer software 2 volatile char pwm_level_1; // Livello luminosità LED1 (0-32) volatile char pwm_level_2; // Livello luminosità LED2 (0-32) // Funzione di servizio delle interrupt ad ALTA priorità PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 8
9 #pragma code #pragma interrupt highpriorityinterrupt void highpriorityinterrupt() // Verifica quale flag ha causato l' interrupt // Esegui la parte di codice di servizio dell' interrupt // Azzera il flag che ha causato l' interrupt //... // Funzione di servizio delle interrupt a BASSA priorità #pragma interruptlow lowpriorityinterrupt void lowpriorityinterrupt() // Verifica quale flag ha causato l' interrupt // Esegui la parte di codice di servizio dell' interrupt // Azzera il flag che ha causato l' interrupt //... static char time_base = 0; static char pwm_counter = 0; // Gestione dell' interrupt del timer 2 if(pir1bits.tmr2if) // Gestione del PWM del LED 1 if (pwm_level_1 < pwm_counter) LATDbits.LATD6 = 1; else LATDbits.LATD6 = 0; // Gestione del PWM del LED 2 if (pwm_level_2 < pwm_counter) LATDbits.LATD7 = 1; else LATDbits.LATD7 = 0; pwm_counter++; if (PWM_LEVELS == pwm_counter) pwm_counter = 0; // gestione del timer software. I timer software devono decrementarsi // fino ad arrivare a 0. Una volta arrivati a 0 restano fermi a 0. // La gestione avviene solo quando la variabile time_base raggiunge il // valore TIME_BASE_COUNTS in modo da aggiornare i timers ogni ms. time_base++; if (TIME_BASE_COUNTS == time_base) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 9
10 time_base = 0; if (timer_delay_1) timer_delay_1--; if (timer_delay_2) timer_delay_2--; // Resetta il flag che ha generato l' interrupt PIR1bits.TMR2IF = 0; // Prototipi delle funzioni #pragma code void timer2_deinit(void); void gestione_led1(void); void gestione_led2(void); // Funzioni #pragma code // De-inizializza il timer 2 e lo porta nello stato in cui si trovava // subito dopo il RESET void timer2_deinit(void) T2CON = 0; // Resetta il timer 2 control register TMR2 = 0; // Azzera il contatore interno PR2 = 0; // Azzera il registro comparatore PIE1bits.TMR2IE = 0; // Disabilita l' interrupt IPR1bits.TMR2IP = 0; // Resetta il bit di priorità dell' interrupt PIR1bits.TMR2IF = 0; // Azzera il flag di interrupt // Funzione per la gestione del LED1 // La luminosità sale lentamente e scende velocemente // Note: // utilizza il timer software soft_timer_1 e controlla la // luminosita del LED tramite la variabile pwm_level_1 PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 10
11 void gestione_led1(void) static enum // variabile che contiene lo stato di funzionamento fase_up, fase_down fase_ciclo = fase_up; // Aggiorna la luminosità quando il timer_1 è arrivato a 0 if (!timer_delay_1) switch(fase_ciclo) // Salita lenta case fase_up: timer_delay_1 = 80; if (PWM_LEVELS == pwm_level_1) fase_ciclo = fase_down; else pwm_level_1++; break; // Discesa veloce case fase_down: timer_delay_1 = 20; if (0 == pwm_level_1) fase_ciclo = fase_up; else pwm_level_1--; break; //switch(fase_ciclo) // if (!timer_delay_1) // Funzione per la gestione del LED2 // La luminosità sale velocemente e scende velocemente in modo simmetrico // Note: // utilizza il timer software soft_timer_2 e controlla la // luminosita del LED tramite la variabile pwm_level_2 void gestione_led2(void) static enum // variabile che contiene lo stato di funzionamento fase_up, fase_down fase_ciclo = fase_up; PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 11
12 // Aggiorna la luminosità quando il timer_2 è arrivato a 0 if (!timer_delay_2) switch(fase_ciclo) // Salita veloce case fase_up: timer_delay_2 = 15; if (PWM_LEVELS == pwm_level_2) fase_ciclo = fase_down; else pwm_level_2++; break; // Discesa veloce case fase_down: timer_delay_2 = 15; if (0 == pwm_level_2) fase_ciclo = fase_up; else pwm_level_2--; break; //switch(fase_ciclo) // if (!timer_delay_2) // MAIN FUNCTION void main(void) // Fa partire il PLL. // Anche se viene selezionato tramite i bit di configurazione // il suo funzionamento non è automatico. Ha bisogno di un comando. OSCTUNEbits.PLLEN = 1; // Attende abbastanza tempo per far stabilizzare il PLL Delay1KTCYx(10); // Da ora in poi abbiamo il PLL funzionante ed il micro con il turbo. // Inizializzazione delle periferiche // Inizializza la PORTD // bit 4 input pulsante PL0 // " 5 input pulsante PL1 // " 6 output LED LED1 PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 12
13 // " 7 output LED LED2 TRISD = 0x3F; // Mette a 0 tutte le uscite LATD = 0; // De-inizializza il timer2. Non sarebbe necessario perché il micro esce // allo stato di RESET ma è comunque buona pratica de-inizializzare sempre // le periferiche per non tralasciare nessun bit. timer2_deinit(); // Inizializza il timer 2 per interrupt ogni 100 microsecondi. // prescaler divide per 16 T2CONbits.T2CKPS = 2; // Postscaler divide per 5 T2CONbits.T2OUTPS = 4; // Imposta il valore comparatore a 150 PR2 = 15; // Imposta l' interrupt del Timer 2 a priorita' bassa IPR1bits.TMR2IP = 0; // abilita interrupt del timer PIE1bits.TMR2IE = 1; // Selezione ed abilitazione delle interrupt // Ora che si sono inizializzate tutte le periferiche si possono abilitare // Oppurtunamente le interrupt // abilita le interrupt a bassa priorita' RCONbits.IPEN = 1; // abilta tutte le interrupt a priorità bassa INTCONbits.GIEL = 1; // Abilita tutte le interrupt in generale INTCONbits.GIEH = 1; // Attivazione delle periferiche // Con le interrupt abilitate possiamo ora far partire il timer 2 // Accende il timer T2CONbits.TMR2ON = 1; // Inizializza i livelli dei due LED ed azzera i due timer pwm_level_1 = 0; pwm_level_2 = 0; timer_delay_1 = 0; timer_delay_2 = 0; PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 13
14 // Ciclo infinito di funzionamento for(;;) // Inserire il programma qui. gestione_led1(); gestione_led2(); //for(;;) Estratto da " index.php?title=userspages:tardofreak:pic18f47j53-come-fare-un-pwm-facile-emulticanale" PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 14
PIERIN PIC18 IL PROGRAMMA DEMO:
Steve Blackbird (TardoFreak) PIERIN PIC18 IL PROGRAMMA DEMO: TIMER E SUPER VELOCITÀ PER IL MICRO 2 June 2013 Il programma di demo caricato sul PIERIN PIC18, quello che fa lampeggiare i due LED, per intenderci,
DettagliLE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 1
Steve Blackbird (TardoFreak) LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 22 June 2013 Introduzione Nel precedente articolo ho cercato di spiegare cosa sono le interrupt, in questo vorrei spiegare
DettagliVogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.
Lampeggio di 8 led Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1
DettagliPIC18F47J53 UN MODULO IN C PER
Steve Blackbird (TardoFreak) PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 18 June 2013 Introduzione Se è vero che un programma in C lo si può scrivere all' interno di un unico file è anche vero
DettagliGENERATORE DI BASE TEMPI
Steve Blackbird (TardoFreak) GENERATORE DI BASE TEMPI 4 October 2010 Non è passato neanche un anno dalla mia iscrizione in questo bellissimo sito ed in questo, seppur breve periodo, frequentando il forum
DettagliGESTIONE DELLE INTERRUZIONI (INTERRUPT)
GESTIONE DELLE INTERRUZIONI (INTERRUPT) In informatica, un interrupt o interruzione è: un segnale asincrono che indica il bisogno di attenzione da parte di una periferica finalizzata ad una particolare
DettagliCONTATORE/TIMER PROGRAMMABILE CTC Z80 1. Piedinatura 2. Struttura interna 4. Modo timer 5. Modo Counter 8. Programmazione del CTC 13
CONTATORE/TIMER PROGRAMMABILE CTC Z80 1 Piedinatura 2 Struttura interna 4 Modo timer 5 Modo Counter 8 Programmazione del CTC 13 Gerarchia di priorità delle interruzioni 17 Interfacciamento 17 Contatore/Timer
DettagliTIMER H-M-S CON PIC [2] - IL PROGRAMMA 1
Davide Bagnoli (DADO91) TIMER H-M-S CON PIC [2] - IL PROGRAMMA 15 January 2013 Eccoci alla seconda puntata. Adesso voglio parlare un po' del programma che fa funzionare il timer che ho progettato, ma prima
DettagliTUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC)
TUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC) Tutorial di Maroncelli Matteo e Zoffoli Federico, 5A. Creare un programma che simula gli indicatori di livello da serbatoi GPL e Benzina. Attraverso
DettagliPIC18F47J53 NOZIONI DI BASE SULLA
Steve Blackbird (TardoFreak) PIC18F47J53 NOZIONI DI BASE SULLA SERIALE 8 June 2013 Potere interagire con un microcontrollore attraverso una linea seriale è una cosa semplice e potente. Può sembrare una
Dettaglidel Linguaggio C Istruzioni di iterazione
Istruzioni i Iterative ti del Linguaggio C Istruzioni di iterazione Le istruzioni di iterazione forniscono strutture di controllo che esprimono la necessità di ripetere una certa istruzione durante il
DettagliIng. Emiliano Capuzzo Remote Contro NEC 11/11/2003. Remote Control NEC
Remote Control NEC Questo progetto risponde all esigenza di decodificare ed utilizzare i codici prodotti da telecomandi IR che adottano la codifica NEC Trasmissione Format. Questo tipo di codifica è attualmente
DettagliCorso di programmazione Arduino DI MALVEZZI DAVIDE
Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell
DettagliArduino/Raspberry Board and GSM Library
Necessità di trovare una soluzione per la gestione delle diverse breakout GSM Gestione dei motori GSM di costruttori diversi: SIMCOM (SIM800C, SIM900 ecc) QUECTEL (M95) FIBOCOM (G510) Interfacciamento
DettagliCalcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni
Calcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni Giovanni Bonaccio, Stefano Mattoccia Arduino Interrupt Nella scheda Arduino Uno sono presenti due tipologie diverse di
DettagliLa comunicazione con l esterno
La comunicazione con l esterno Input / Output Le porte di I/O I Dati entrano Disp In Disp In Dispositivo di Ingresso Porta In Porta In Porte di Ingresso CPU Bus dati I Dati escono Porta Out Disp Out Porta
DettagliPrimo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
DettagliGuida alla Settima Esercitazione
Guida alla Settima Esercitazione curata da Ilaria Casale La seguente esercitazione è divisa in due parti. Nella prima parte si comprenderà come gestire la periferica GPIO per generare un'interruzione.
DettagliDISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE
DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE Si propone l'uso di un microcontrollore pic16f84 della Microchip. Si acquisiscono i segnali di un encoder con due canali in quadratura con la possibilità
DettagliTERMOMETRO DIGITALE CON PIC18 PIERIN E NTC SENZA UTILIZZARE ADC 1
Luca Di Liello (Luca1995) TERMOMETRO DIGITALE CON PIC18 PIERIN E NTC SENZA UTILIZZARE ADC 15 September 2013 Una piccola introduzione Ecco che finalmente riesco a scrivere un bell'articolo sulla mia prima
DettagliPIC E DISPLAY A 7 SEGMENTI CON
Steve Blackbird (TardoFreak) PIC E DISPLAY A 7 SEGMENTI CON MULTIPLEXING 12 September 2010 Display a 7 segmenti I display a LED a 7 segmenti fecero apparizione più di 30 anni fa nelle prime calcolatrici
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati 1 Note di carratere generale Docente: Camillo Fiorentini 9 ottobre 2007 L obiettivo è quello di scrivere delle semplici funzioni per risolvere problemi di tipo
DettagliCONTROLLARE UN SERVOCOMANDO A DISTANZA. 1
Massimo Peino (mpeino) CONTROLLARE UN SERVOCOMANDO A DISTANZA. 30 January 2012 Introduzione Quest'articolo segue all'articolo "CONTROLLARE UN SERVOCOMANDO CON UN PIC". Secondo me vi conviene darci un occhiata
DettagliPIERIN PIC18 - MISURARE LA TEMPERATURA CON
Steve Blackbird (TardoFreak) PIERIN PIC18 - MISURARE LA TEMPERATURA CON GLI NTC 30 June 2013 Introduzione Quando si uniscono la conoscenza dell' elettronica, la matematica e la possibilità di far funzionare
DettagliArduino: 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
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliProf. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI
Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI IF Ogni linguaggio di programmazione presenta almeno una struttura di controllo decisionale. La sintassi del linguaggio C è la seguente. if ()
DettagliLezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione
Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione
DettagliEsercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
DettagliFondamenti di Informatica A. A. 2018/19
Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale
DettagliElap CM78N C-01 ISTRUZIONI PER LA CONFIGURAZIONE
CM78N CONTATORE ELETTRONICO PROGRAMMABILE A DUE PRESELEZIONI SOFTWARE C-01 ISTRUZIONI PER LA CONFIGURAZIONE Lo strumento può essere configurato dall utente per adattarsi a diversi modi di funzionamento.
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
DettagliArduino & Oltre corso di coding ed elettronica maker
Arduino & Oltre corso di coding ed elettronica maker Aprile maggio 2019, Spazio Chirale alla Garbatella Stefano Capezzone www.chirale.it/download-arduino SSID: spazio chirale best Pass: persico32 This
DettagliInformatica per Statistica Riassunto della lezione del 21/10/2011
Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion
DettagliTipi di dato, variabili, istruzioni
Tipi di dato, variabili, istruzioni Esercizio 1 Implementare un servizio che estrae due numeri random tra 1 e 100, stampa a video i due numeri ed esegue le seguenti operazioni: se almeno uno dei due numeri
DettagliLO HAI MAI REALIZZATO CON UN PIC? LA LAMPADA SIBILLA! 1
Paolo Rognoni (Paolino) LO HAI MAI REALIZZATO CON UN PIC? LA LAMPADA SIBILLA! 28 October 2010 Voglio raccontare la storia che mi ha portato a realizzare una lampada segna passo, una lampada notturna di
DettagliInformatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Funzionamento macchina di von Neumann clock Memoria Centrale: Tutta l informazione prima di essere
DettagliIl primo programma C++
Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida
DettagliNicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC TIMERS.
Corso introduttivo sui microcontrollori A. S. 2007 2008 TIMERS Nicola Amoroso namoroso@mrscuole.net NA L7 1 Timers I timer sono precisi contatori, che possono essere configurati per incrementarsi su fronti
DettagliSEA Descrizione. Centralina Controllo Strip LED RGB
Descrizione La centralina di controllo consente di pilotare Strip LED RGB o Bianchi fino ad un massimo di 10 Mt per Strip da 60 LED/mt o 20 Mt per Strip da 30 LED/Mt. La centralina puo essere configurata
DettagliCentralina controllo pompa
Centralina controllo pompa INDICE 1 Il progetto...4 2 Gestione...6 2.1 TaskA_Main...6 2.2 TaskB_CpuClock...8 2.3 TaskC_InOut...12 2.4 Task ausiliari...13 2.5 Parametri ritentivi...13 3 Sonar...14 3.1 TaskD_Sonar...17
Dettagli20/10/2014 M. Nappi/FIL 1
FIL Lezione 4: Istruzioni Iterative. Michele Nappi mnappi@unisa.it biplab.unisa.it 20/10/2014 M. Nappi/FIL 1 La struttura di Iterazione while Struttura tt di iterazione i Il programmatore specifica un
DettagliElettronica dei Sistemi Programmabili A.A. 2013-2014. Microcontrollori. Introduzione allo sviluppo di progetti
Elettronica dei Sistemi Programmabili A.A. 2013-2014 Microcontrollori Introduzione allo sviluppo di progetti Premessa Qualunque sistema basato su microcontrollore deve eseguire un codice memorizzato in
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliFacciamo lampeggiare un led
Facciamo lampeggiare un led Passiamo a fare qualche esercizio, il più semplice per iniziare a programmare con Arduino è il canonico esercizio blink, che trovate anche negli esempi del programma. Si tratta
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
DettagliCorso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.
Corso introduttivo sui microcontrollori Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic Nicola Amoroso namoroso@mrscuole.net na_16f88_key4x4 1 Colleghiamo un tastierino a
DettagliAssegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
DettagliArchitettura del calcolatore (Seconda parte)
Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly
DettagliElementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliDavide Gennaretti, Matteo Nicolini
Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath
DettagliNella parte sx dello schema abbiamo gli input del microcontrollore il quale ha la funzione di elaborare dei dati che acquisisce in tempo reale.
PROPOSTA DI SOLUZIONE PER LA SECONDA PROVA DI MATURITÀ 2018 TRACCIA: Tecnologie e Progettazione dei sistemi elettrici ed elettronici ARGOMENTO: Acquisizione dati in tempo reale con conseguenti azionamenti
DettagliComponenti principali
Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria
DettagliROBOTICA Syllabus Versione 1.0
ROBOTICA Syllabus Versione 1.0 Modulo Robotica Questo modulo definisce i concetti e le competenze fondamentali relativi ai principi di base di Robotica. Module Goals Chi supera la prova d esame per questo
Dettagli5 INSOLITI IMPIEGHI DEL 555
Giovanni Schgör (g.schgor) 5 INSOLITI IMPIEGHI DEL 555 16 February 2010 L' NE555 L'NE555 è un circuito integrato che contiene un multivibratore che può essere configurato come monostabile (timer), come
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliInformatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
DettagliSTRUTTURA DI UN ALGORITMO 1) LIBRERIE. 2) EVENTUALI COMMENTI // testo
STRUTTURA DI UN ALGORITMO 1) LIBRERIE #include #include include le funzioni di input/output include funzioni di base (pausa...) 2) EVENTUALI COMMENTI // testo 3) MAIN (corpo dell'algoritmo
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliComponenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni
Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria
DettagliRaccolta Test di Laboratorio di Sistemi a Microcontrollore
Raccolta Test di Laboratorio di Sistemi a Microcontrollore prof. Corrado Santoro 1 Digital I/O 1. Quale delle seguenti istruzioni permette di porre a 0 la linea PC4? GPIOC->ODR &= (int32_t)0x10; GPIOC->ODR
DettagliMULTIVIBRATORI. BISTABILE Entrambi gli stati sono stabili; l uscita commuta solo con un opportuno comando. Esempio i Flip-Flop
MULTIVIBRATORI I multivibratori sono oscillatori che forniscono in uscita tensioni a due livelli diversi qualsiasi. Possono essere positivo e negativo o positivo e zero oppure negativo e zero. Relativamente
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
DettagliI dispositivi di input/output
I dispositivi di input/output I dispositivi di input/output (anche detti periferiche), permettono di realizzare l'interazione tra l'uomo e la macchina La loro funzione primaria è quella di consentire l'immissione
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliProgrammare con le interruzioni (2)
Programmare con le interruzioni (2) G. Lettieri 12 Aprile 2018 Nelle Figure 1 e 2 riportiamo una versione diversa dell esempio visto la volta precedente. Tutta l elaborazione è stata spostata direttamente
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 5: Funzioni e programmazione modulare Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Esercizi (Fibonacci e numeri primi) Funzioni Regole
DettagliLe modulazioni impulsive
Le modulazioni impulsive a cura di Francesco Galgani (www.galgani.it) Indice 1 Introduzione 2 2 La modulazione PAM 3 2.1 Cenni teorici....................................... 3 2.2 Simulazione con il computer
Dettagli1
1 2 3 4 5 /*acquisizione-dati-2canali-ad-da-pwm.c ACQUISIZIONE DATI E CONTROLLO PWM A 2 CANALI (CON 2 SENSORI E 2 USCITE IN PWM)*/ /** C O N F I G U R A T I O N B I T S ******************************/
DettagliMATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)
MATLAB c M-file. Lucia Gastaldi Dipartimento di Matematica http://dm.ing.unibs.it/gastaldi/ Lezione 4 (15 ottobre 2003) Esercizio Problema 3: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliEsercitazione Talentis. Marco Branciforte
Esercitazione Talentis Marco Branciforte Scopo 2 Accendere e variare la luminosita` di un LED PWM => per pilotare il LED Timer 2 Channel 1 - PWM mode 100Hz Periferiche utilizzate 3 ADC => per variare la
DettagliEsame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN
Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 Lezione 4 ARCHITETTURA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 24 settembre 2007 Outline 1 M-file di tipo Script e Function Script Function 2 Elementi di programmazione
DettagliGARA NAZIONALE DI ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA. 7 maggio 2013
Soluzione Istituto Statale di Istruzione Secondaria Superiore ETTORE MJORN 24068 SERITE (G) Via Partigiani 1 -Tel. 035-297612 - Fax 035-301672 e-mail: majorana@ettoremajorana.gov.it - sito internet: www.ettoremajorana.gov.it
DettagliINFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
DettagliPIERIN PIC18 UNBOXING
brabus PIERIN PIC18 UNBOXING 20 June 2013 Dopo pochi giorni dall'"ordine ufficiale" su EY, l'ambito PIERIN PIC18 è arrivato anche a casa mia! PIERIN_1.jpg L'oggetto è indubbiamente pratico e versatile,
DettagliIterazione A. Ferrari
Iterazione A. Ferrari Iterazioni (cicli) L iterazione è una struttura che consente di ripetere più volte l esecuzione di un insieme di istruzioni. Due tipi di iterazione: iterazioni enumerative: consentono
DettagliUniversità degli Studi di Cassino
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2004/2005 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliAppunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:
DettagliUniversità degli Studi di Cassino
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2007/2008 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
Dettagli$QDOLVLGHOSURJUDPPDTXDGUDWR
$QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =
Dettagli#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()
Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine
DettagliCapitolo IX. Convertitori di dati
Capitolo IX Convertitori di dati 9.1 Introduzione I convertitori di dati sono circuiti analogici integrati di grande importanza. L elaborazione digitale dei segnali è alternativa a quella analogica e presenta
DettagliDiagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
DettagliANALIZZIAMO NEI DETTAGLI GLI STATEMENTS DI SELEZIONE E DI RIPETIZIONE FORNITI DAL LINGUAGGIO C STATEMENT SEMPLICE STATEMENT COMPOSTO BLOCCO
ANALIZZIAMO NEI DETTAGLI GLI STATEMENTS DI SELEZIONE E DI RIPETIZIONE ORNITI DAL LINGUAGGIO C Premessa: STATEMENT SEMPLICE STATEMENT COMPOSTO BLOCCO Uno ement semplice termina con ; come, ad esempio: ressione;
DettagliModi di esecuzione user / kernel
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2006/2007 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
DettagliLINEE GUIDA PER LA CONNESSIONE DI MCP PLUS A VIDEOTERMINALI PROFACE SERIE GP
Introduzione LINEE GUIDA PER LA CONNESSIONE DI MCP PLUS A VIDEOTERMINALI PROFACE SERIE GP Questa nota applicativa fornisce alcuni elementi base per interfacciare il controllore MCP Plus ad un videoterminale
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 2: Elementi lessicali, casting e while Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Soluzione agli esercizi
DettagliCORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii
CORSO ARDUINO Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM 2016 1 FAQ time domande e risposte? 2 Iterazioni: while Si usa per ripetere un blocco di codice finché una condizione è vera, ma senza tenere
DettagliCostrutti di Programmazione Strutturata. Informatica 1 / 22
Costrutti di Programmazione Strutturata Informatica 1 / 22 Costrutti di Base Ricordi? Un algoritmo è detto strutturato se usa solo Sequenze di istruzioni Selezioni (se predicato allora fai istruzioni altrimenti
DettagliIng. Lorenzo Vismara
Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#
Dettagli