NJC Horizontal Photointerrupter

Dal 2012 mi diletto (sia per motivi strettamente professionali, che per interesse personale) nella costruzione di applicativi e moduli per .NET Microframework, ed in particolare per Gadgeteer. Trovo questa tecnologia molto interessante, e svilupparci sopra è semplice e molto rapido.

Uno dei frutti delle mie sperimentazioni, e il “Horizontal Photointerrupter”, un foto-interrutture basato su una forcella a led IR, posta orizzontalmente rispetto alla basetta. Il tutto è stato realizzato al fine di essere utilizzabile nelle versioni 4.1, 4.2, 4.3 del  .NET Microframework, e di seguito potete trovare i sorgenti che controllano l’elettronica del modulo, consentendone l’utilizzo direttamente nel desginer di Visual Studio

Aspetto del modulo

 

 

Schema elettrico

PCB

Applicazione di test

La solution allegata contiene, oltre ai 3 progetti che declinano il modulo nelle 3 versioni del framework, anche una piccola applicazione di test.

Questa applicazione consente di accendere/spegnere un led quando la forcella IR viene chiusa/aperta.

Il codice è molto semplice, ed illustra il modo d’utilizzo di questo componente.

Schema componenti dell’applicazione di test

Codice di esempio e test

public partial class Program
{
private void ProgramStarted()
{
Debug.Print(“Program Started”);
hpi.InterrupterClosed += hpi_InterrupterClosed;
hpi.InterrupterOpened += hpi_InterrupterOpened;
}

private void hpi_InterrupterOpened(
NJC_HorizontalPhotointerrupter sender,
NJC_HorizontalPhotointerrupter.InterrupterState state)
{
btn.TurnLEDOn();
}

private void hpi_InterrupterClosed(
NJC_HorizontalPhotointerrupter sender,
NJC_HorizontalPhotointerrupter.InterrupterState state)
{
btn.TurnLEDOff();
}
}

Downloads

NJC_Gadgeteer_HorizontalPhotointerrupter

C# Formatter per Visual Studio 2010/2012/2013

Un utile estensione per Visual Studio 2010/2012/2013 in grado di migliorare la leggibilità del codice C# tramite strategie di formattazione e riordinamento

Scopo e funzionalità di base

“C# Formatter” è un addin per Visual Studio 2010/2012/2013 che migliora l’esperienza di programmazione in C#, dando la possibilità di pulire il codice e di formattarlo in modo da renderlo più leggibile e compatto.

Ad ora il software è in fase beta, ed è in grado di erogare le seguenti semplici funzioni:

Migliorare la leggibilità del codice, aggiungendo delle righe di separazione tra classi, metodi, proprietà e regioni
Rimuovere l’indentazione delle righe di codice
Rimuovere le righe ridondanti vuote (o composte di soli spazi), rendendo il codice più compatto.
Rimuovere tutte le righe vuote o invisibili dal codice
Rimuovere tutti i commenti dal codice
Rimuovere le indentazioni a sinistra e gli spazi bianchi a destra di ogni riga
Minificare il codice di un file, unificandolo tutto in un’unica riga
Estrarre stringhe dal codice e convertirle in costanti

Versioni e storico di rilascio

Versione 1.2

Bugfixes
Aggiunte funzionalità di logging

Versione 1.1

Conversione delle stringhe hard-coded in costanti di classe
Cleanup/beautify di tutto il file corrente con un unico comando

Versione 1.0

Rimozione di tutte le righe vuote o invisibili dal codice
Rimozione di tutti i commenti dal codice
Rimozione delle indentazioni a sinistra e gli spazi bianchi a destra di ogni riga
Minificazione del codice di un file, unificandolo tutto in un’unica riga di codice

Versione 0.9

Rimozione l’indentazione delle righe di codice
Rimozione le righe ridondanti vuote (o composte di soli spazi), rendendo il codice più compatto.

Versione 0.8

Miglioramento della leggibilità del codice, aggiungendo delle righe di separazione tra classi, metodi, proprietà e regioni

Download

Il progetto è scaricabile direttamente dalla Visual Studio Gallery a questo indirizzo:

http://visualstudiogallery.msdn.microsoft.com/0c5664a7-a723-4ac1-9932-d840dfafd6d5

Workshop Webbit 2004

Webbit è il nome di una grande manifestazione di ICT (Information and Communication Technology) che si svolge annualmente con più di 500 workshops e certificazioni. Quest’anno sono stato a Padova con gli amici e collaboratori di GPI (Game Programming Italia) dove abbiamo organizzato 5 differenti workshops incentrati sul game-development. Il mio workshop si è concentrato sui principi dello sviluppo di motori di simulazione fisica 3D a relatime ed è stato incluso nella certificazione “Multimedialità”. Di seguito potete scaricare le slides e le demo che ho illustrato durante la relazione

downloads

Architetture_object_oriented_&_simulazioni_fisiche

Federico_NinjaCross_Coletto_Webbit_2004_FULL

Simulazione di liquidi ad alta viscosità in OpenGL

Vincitore del “GPI Best Tutorial Contest” (GPI), questo progetto spiega approfonditamente l’algoritmo “FRF”, un nuovo sistema che ho implementato per simulare il moto dei fluidi altamente viscosi su vari tipi di superfici.

L’algoritmo FRF

L’algoritmo FRF si basa sul concetto di “distribuzione di massa ipotetica”, che rende il programma in grado di determinare la forma e la posizione di una massa fluida tridimensionale, calcolando la modifica della sua forma originaria (considerata in una condizione statica di forze) in funzione delle caratteristiche della superficie di scorrimento su cui si muove.

Il tutorial e le documentazioni

La teoria dietro i concetti specifici e affini è descritta in un tutorial in lingua italiana, ed una traduzione in lingua inglese.
L’algoritmo è implementato in C++ in un contesto di rendering OOP che funziona utilizzando OpenGL per generare l’output visuale in tempo reale (visibile nelle foto di questa pagina).

Tutta l’architettura del sistema è documentata nel linguaggio UML.

links a siti esterni

https://play.google.com/store/books/details/Federico_Coletto_Real_time_simulation_of_highly_vi?id=UmbeBAAAQBA  (ENG)

https://play.google.com/store/books/details/Federico_Coletto_Simulazione_real_time_di_fluidi_a?id=GkfeBAAAQBAJ  (ITA)

downloads

Tutorial_Fluidi_Viscosi – Federico_Coletto

Real-time simulation of highly-viscous fluids using FRF algorithm

Fluid_simulation_using_FRF_algorithm_Sources

Simulazione interazioni gravitazionali

Questo tutorial contiene la documentazione completa in PDF ed il codice sorgente VC6/VC.NET di un progetto che ho scritto qualche tempo fa. Questo programma permette di simulare graficamente le interazioni gravitazionali tra pianeti, stelle, buchi neri, asteroidi e molti altri tipi di corpi celesti. Il suo motore di scripting consente di creare e descrivere il comportamento di sistemi planetari complessi, e visualizzare la simulazione in 3D con OpenGL

downloads

Simulazione_Interazioni_Gravitazionali_Tutorial

Simulazione_Interazioni_Gravitazionali_TUT_SRC

Simulazione_Interazioni_Gravitazionali_SRC

Simulazione_Interazioni_Gravitazionali

Ninja Eyes

Questo piccolo progetto VC++ (sia 6.0 che dotNET) illustra come realizzare e documentare con UML un framework di rendering OOP che utilizza DInput e OpenGL. Troverete anche alcune informazioni interessanti sulle trasformazioni matriciali delle texture di OpenGL, che consentono di realizzare una semplice animazione del modello. Il programma genera e renderizza due occhi roteanti che “seguono” un flare mosso dal vostro mouse. L’iride degli occhi reagisce ai movimenti del flare. Quando il mouse è immobile l’iride risulta chiusa. Quando si sposta il mouse l’iride si apre, per poi richiudersi lentamente dopo pochi secondi. L’animazione dell’iride è realizzata utilizzando il comando OpenGL glTranslatef sulla matrice della texture del modello (una sfera generata tramite una “quadratica”). Il codice di rendering/trasformazione è contenuto nel metodo “renderizzaGeometrie()” implementato nella classe NJ_OGL_OCCHIO. Usando i tasti ‘+’ e ‘-‘ è possibile attivare/disattivare la visualizzazione dei vettori di base dei modelli della scena.

downloads

NinjaEyes_dotNET

NinjaEyes_VC6

Tutorial OpenGL – lezione 03

Questo tutorial (in lingua italiana) parla del sistema di definizione e gestione dei modelli e delle texture in OpenGL. Tutto è progettato e codificato secondo i principi OOP, al fine di rendere il programma flessibile e di ottenere un buon livello di estensibilità.
A scopo illustrativo è allegato un progetto VC++ 6.0 che affronta ed applica nel dettaglio tutte le tematiche affrontate.

downloads

Lezione3 PDF

Lezione3 ZIP

Sorgenti lezione 3

Tutorial OpenGL – lezione 02

Questo tutorial (in lingua italiana) parla delle caratteristiche di base di OpenGL, ed approfondisce i concetti di proiezione 3D, rendering di vertici, linee, poligoni, poliedri, colori, winding, discretizzazione di superfice e tessellation. A scopo illustrativo è allegato un progetto VC++ 6.0 che affronta ed applica nel dettaglio tutte le tematiche affrontate.

downloads

Lezione2 PDF

Lezione2 ZIP

Sorgenti lezione 2

Tutorial OpenGL – lezione 01

Questo tutorial (in lingua italiana) tratta gli elementi architetturali di OpenGL e le strutture di base della pipeline di rendering. Vengono fatti alcuni accenni anche su GLUT, GLUAX e le relative estensioni. A scopo illustrativo è allegato un progetto VC++ 6.0 che spiega come creare un framework in grado di gestire le finestre OpenGL e una semplice struttura rendering.

Downloads

Lezione1 PDF

Lezione1 ZIP

Lezione1_Sorgenti