PowerPoint Presentation · Processing (2) Leggo la seriale con Processing e grafico una linea alta...

37

Transcript of PowerPoint Presentation · Processing (2) Leggo la seriale con Processing e grafico una linea alta...

What’s Arduino?

[wikipedia]Benché gli schemi hardware e il sorgente software siano resi disponibili con licenze copyleft, il nome Arduino e il logo sono marchi registrati e possono essere usati solo dietro permesso. Il documento che esprime la politica d'uso del nome "Arduino" mette l'accento su come il progetto sia aperto a incorporare lavori altrui nel prodotto ufficiale.

Quale conseguenza di queste convenzioni sulla protezione del nome, un gruppo di utilizzatori ha effettuato un "fork" (nel senso esteso del termine) dell'Arduino Diecimila, distribuendo una scheda equivalente chiamata "Freeduino"; il nome volutamente non è registrato ed è quindi liberamente utilizzabile.

Linguaggio

void setup() {// UNA SOLA VOLTA all’inizio...}void loop() {// PER SEMPRE… }

Un po’ di esempi

● Blink● AnalogReadSerial● Trasduttore● …….● HANDS ON!….

void setup() { pinMode(A4,INPUT); pinMode(8,OUTPUT); delay(5000);//occupando la seriale sempre meglio Serial.begin(9600); }

LATO ARDUINO (1)

Vin – pin 8 Vc – pinA4 GND

void loop() { digitalWrite(8,HIGH); // CARICA for(int i=0;i<1000;i++) //quanti campioni? { int sensorValue = analogRead(A4); delay(100); //campionamento ogni 1/10 s Serial.println(sensorValue); } digitalWrite(8,LOW); // SCARICA for(int i=0;i<1000;i++) { int sensorValue = analogRead(A4); delay(100); Serial.println(sensorValue,DEC); }

LATO ARDUINO (2)

Vin – pin 8 Vc – pinA4 GND

Guardiamo il monitor seriale !

Processing (1)

Leggo la seriale con Processing e creo un rettangolo proporzionale al dato sulla seriale

rect(40, 0, 45, val/10);

Processing (2)

Leggo la seriale con Processing e grafico una linea alta proporzionale al dato sulla seriale

La carica del condensatore!void serialEvent (Serial myPort) { // get the ASCII string:

String inString = myPort.readStringUntil('\n');

if (inString != null) {

… // convert to an int and map to the screen height:

float inByte = float(inString);

inByte = map(inByte, 0, 1023, 0, height);

// draw the line:

stroke(127,34,255);

line(xPos, height, xPos, height - inByte/2);

... poi … sviluppi e variazioni

… con processing… saveStream() … saveBytes() … saveStrings()

Potremmo...

… salvare i dati su seriale ...… graficare con gnuplot ….… far il fit con gnuplot …… simulare con foglio di calcolo … e confrontare...… usare octave, e fare la simulazione numerica...

… bash + gnuplot ;)bash$ exec 3<> /dev/ttyXXX ; sleep 1bash$ while [ 1 ]; do cat /dev/ttyACM0 | tee -a dati.txt ; donebash$ exec 3<> /dev/ttyXXX ; sleep 1ctrl-c (abbastanza dati!!!!)gnuplot> plot “dati.txt”

Ardublock

http://blog.ardublock.com/

Ardudroid

… e poi...

● Acquisizione dati / interpretazione fisiche● Controllo processo fisico● Robotica educativa● Fishino, Beic e Water-Hack● … misure ambientali...

Con il Physical computing da zero alle gare di robotica.

Physical Computing... progettare esperimneti con piccoli strumenti opensource open

hardware

Con il Physical computing da zero alle gare di robotica.

Si impara Arduino e i suoi sensori

Con il Physical computing da zero alle gare di robotica.

Si impara la fisica attraverso problemi reali, si capisce cosa significa misurare, sensibilità

Con il Physical computing da zero alle gare di robotica.

Si imparano i concetti fisici di spazio, tempo, velocità, si fa informatica

Con il Physical computing da zero alle gare di robotica.

Si impara la fisica attraverso problemi reali, si capisce cosa significa misurare, sensibilità

Tempi

Curricolari ed extracurricolari

Il progetto

Nato dal gruppo di potenziamento di fisica, offerto a tutti gli studenti interessati

principalmente 3-4-5 liceo scientifico

Anatomia: Kit e fisiologia dopo

(due ruote, due motori) etcGroDan

Tempi e lezioniArduino 1Arduino 2MotoriMontaggioProgrammazione Presentazione garaTre-Quattro giorni

Considerazioni

Quinte, problema del controllo... ruote che girano

diversamente!

Unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip:c0233fa7*pde = 3e9f3067Oops: 0002 [#1]Modules linked in: usb arduino processing gnuplot rcgraphCPU: 0EIP: 0060:[] Not tainted VLIEFLAGS: 00010246 (2.6.9-22.EL)EIP is at sysrq_handle_crash+0x0/0x8eax: 00000063 ebx: c0370db4 ecx: 00000000 edx: 00000000esi: 00000063 edi: 00000000 ebp: 00000000 esp: f7191f60ds: 007b es: 007b ss: 0068Process bash (pid: 2857, threadinfo=f7191000 task=f7b677f0)Stack: c02342d8 c032dc4e c032f105 00000003 00000002 f7b6adc0 00000002 f7191fac c01a8a13 c0362740 c0168205 f7191fac b7de7000 f7b6adc0 fffffff7 b7de7000 f7191000 c01682cf f7191fac 00000000 00000000 00000000 00000001 00000002Call Trace: [] __handle_sysrq+0x58/0xc6 [] write_sysrq_trigger+0x23/0x29 [] vfs_write+0xb6/0xe2 [] sys_write+0x3c/0x62 [] syscall_call+0x7/0xbCode: 4c 11 42 c0 05 00 00 00 c7 05 50 11 42 c0 2f cc 31 c0 c7 05 54 11 42 c0 00 00 00 00 c7 05 58 11 42 c0 00 00 00 00 e9 e5 0b f0 ff 05 00 00 00 00 00 c3 e9 e1 59 f3 ff e9 1e bc f3 ff 85 d2 89

Grazie per l’attenzione

… sorridi, domani sarà peggio … (filosofia di Murphy)

Grazie e… domande?