L'Arduino
L' Arduino è un piccolo computer. E poco costoso . E un bambino vicino a te dovrebbe averne uno per qualunque vacanza venga dopo, ma dovresti prima tirarlo fuori dalla scatola e giocarci. C'è molto supporto online per l'hardware e il sistema di sviluppo.
Questo progetto collegherà un Arduino a JMP ed eseguirà la registrazione dei dati in tempo reale. Avrai bisogno del download dell'IDE Arduino ; ecco un'immagine dell'IDE che contiene il programma. 

Questo minuscolo programma fa due cose: inizializza le comunicazioni seriali all'accensione e poi trascorre il resto della sua vita leggendo un segnale analogico e stampando il valore sulla porta seriale.
Il circuito
Il sensore per questo progetto è un fotoresistore CdS . Ecco una foto del circuito breadboard.

il fotoresistore (rotondo con linea ondulata, al centro sul retro) e il resistore da 43K ohm (giallo-arancione-arancione-oro) accanto ad esso formano un partitore di tensione tra il filo nero (terra) e il filo rosso (5 volt) di alimentazione . Il filo bianco sulla presa centrale del divisore va ad A0 sulla scheda blu Arduino UNO. A0 è l'ingresso analogico letto dal programma sopra. Quando il fotoresistore è scuro, la sua resistenza è molto elevata (rispetto al resistore da 43K ohm e la tensione del filo bianco sarà vicino a terra (0 volt). Quando è fortemente illuminato, la resistenza del fotoresistore è molto bassa e il filo bianco il filo sarà vicino a 5 volt.
Hai utilizzato il cavo USB come porta seriale per caricare il programma su Arduino. Potrebbe essere com3 o com4 o forse un'altra scelta. JMP sarà in ascolto sulla stessa connessione seriale USB. È un bel cavo USB blu che potrebbe essere fornito con Arduino, a seconda del fornitore.

La JSL
Crea una tabella dati con due colonne; la colonna del tempo verrà riempita con il numero di secondi trascorsi dall'inizio della cattura. La colonna dei sensi verrà compilata con i dati di Arduino.
dt = New Table( "capture",
Add Rows( 0 ),
New Column( "time", Numeric, Continuous, Format( ":day:hr:m:s", 21, 3 ) ),
New Column( "sense", Numeric( 2 ) ) // the analog sensor is 0..1023
);
ricorda l'ora di inizio
start = Tick Seconds();
Apri il Datafeed di JMP, imposta i parametri e fornisci uno script per elaborare ogni riga di dati da Arduino. COM3 probabilmente non è ciò a cui è connesso il tuo Arduino.
feed = Open Datafeed(
Connect( Port( "com3" ), Baud rate( 9600 ), Parity( even ), DataBits( 7 ) ),
Set Script(
x = feed << getLine;
dt << addrows( 1 );
dt:time = Tick Seconds() - start;
dt:sense = Num( x );
)
);
Esegui un grafico di controllo (o uno script per la creazione di grafici) per vedere la raccolta dati in azione.
dt << Control Chart( Sample Size( 1 ), KSigma( 3 ), Chart Col( :sense, Run Chart() ) );
Azione
In questa clip di 5 minuti vedrai la carta di controllo aggiornarsi man mano che arrivano i dati; i valori dei dati cambiano a seconda della luce che raggiunge il sensore. Vedrai anche scorrere l'asse per visualizzare più dati e noterai un ritardo nel tempo di risposta mentre JMP recupera i dati. Non c'è stretta di mano; è del tutto possibile che i dati vadano persi. La pausa di 200 ms nel codice Arduino (molto sopra) è progettata per dare a JMP il tempo di elaborare i dati e aggiornare il display.
Arduino-YouTube

Grazie Craige. In JMP 15 ricevo un errore. "Impossibile impostare il valore per la colonna 'ora' perché il numero di riga (0) non è valido." Il sensore è operativo nell'IDE Arduino inviando valori a Com7.
Chi sapeva che un sensore di luce potesse essere così divertente?
Grazie. Ci sono molte possibilità di sensori; gli ingressi digitali di Arduino possono essere utilizzati anche con interruttori fisici. Anche a me piace il PI; JMP (Windows o Mac) può utilizzare socket con un PI, il che potrebbe rendere la connessione remota più semplice di un Arduino.
Sto facendo qualcosa di molto simile per misurare la distanza. Sto utilizzando un sensore ping a ultrasuoni collegato ad un Arduino Uno. Funziona benissimo, tranne che richiede un computer con JMP. Per altri progetti scrivo i dati in un file su uno scudo per scheda SD, ma è bello vedere i dati in tempo reale.
Sarebbe utile se ci fosse un modo per eseguire JMP su un Raspberry Pi e collegare Arduino al Raspberry Pi. Con un Raspberry Pi potresti connetterti direttamente al GPIO del Pi e non avresti bisogno di Arduino.