COMPARATORE CENTESIMALE – LINGUAGGIO SVG
MISURE DI PRECISIONE – COMPARATORE
Il comparatore non è utilizzato normalmente per eseguire misure di lunghezze assolute ma per apprezzare le variazioni rispetto ad una quota iniziale. La misura deve intendersi come relativa al primo posizionamento del comparatore (vedi la prima figura).
Anche questo set di verifiche è stato preparato con l’obiettivo di poter assegnare ad ogni alunno una verifica unica. Per scaricare un set di verifiche fate click sul link seguente:
Download gratuito di 35 verifiche
Il file compresso contiene 35 prove in pdf. E’ presente anche un file pdf contenente tutti i risultati (per le misure di tipo relativo).
Ogni aggiornamento del codice e le nuove versioni delle verifiche, sono postate sulla pagina facebook: www.facebook.com/idroslab
DISEGNO DELLA VERIFICA IN LINGUAGGIO SVG
Il codice scritto per realizzare queste esercitazioni parte sempre dall’idea di generare un numero casuale (in questo caso compreso tra -5.00 e 5.00 mm) e di conseguenza disegnare lo strumento con le lancette posizionate esattamente sulla misura estratta dalla funzione random
% Autori% Prof. Danilo Pasquini ITIS S. Cannizzaro, Colleferro (Roma)% Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)% Disegno del comparatore centesimale%function comparatore ()
global larghezza_lineaglobal altezza_tacche_astaglobal altezza_tacche_asta_lungheglobal altezza_tacche_nonioglobal larghezza_nonioglobal raggio_millimetratoglobal raggio_spigolo_nonioglobal larghezza_prima_dello_zeroglobal fid1global scalaglobal numero_verificaglobal colonne_risultatiglobal righe_risultatiglobal matrice_risultatinumero_verifica = numero_verifica + 1;scala = 3.54;clctesto = num2str(ceil(numero_verifica))
colonne_risultati = 1;matrice_risultati (righe_risultati, colonne_risultati) = str2num(testo);
nomefile = ['c:\comparatore_100\100_comparatore_' testo '.svg'];
nomefile1 = ['c:\comparatore_100\100_comparatore_' testo '.txt'];
fid = fopen([nomefile], 'wt');
fid1 = fopen([nomefile1], 'wt');
fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?--> \n']);
fprintf(fid, ['\n']);
fprintf(fid, ['\n']);
portata_strumento = 1000[fid] = scrivere (fid,15,10,'left',3,'Nome: __________________________ Classe: ___________ Data: _____________');
%[fid] = scrivere (fid,15,20,'left','20','Per verifcare la misura sottrarre il numero per 5,678');[fid] = scrivere (fid,15,17,'left',2,['Soluzione: ' testo]);
[fid] = scrivere (fid,10,283,'right',2.5,'www.tiny.cc/disegno');
[fid] = scrivere (fid,124,282,'right',2,'Autori: Prof. Paolo Sordi ITIS Marconi, Pontedera (Pisa)');
[fid] = scrivere (fid,132,285,'right',2,'Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)');
% a destra del noniomisura_casuale = 0for i=1:3
for j=[40, 105, 210-40]
colonne_risultati = 1 + colonne_risultati;matrice_risultati (righe_risultati, colonne_risultati) = misura_casuale;
disegna_comparatore (fid, j, -38+88*i, misura_casuale);
misura_casuale = -5 + (ceil (rand*portata_strumento)) / 100;
endendfprintf(fid, [' \n']);
fclose(fid)
stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A ' 'C:\comparatore_100\100_comparatore_' testo '.pdf']
dos(stringa_dos)
fclose (fid1)
load chirp;y1 = y; Fs1 = Fs;
% The chirp signal finishes before thewavplay(y,Fs)
% -------------------------------------------------------------------------function disegna_comparatore (fid,pos_x,pos_y,misura)
global altezza_tacche_astaglobal altezza_tacche_asta_lungheglobal altezza_tacche_nonioglobal larghezza_nonioglobal fid1larghezza_linea = 1;raggio_strumento = 28;colore1 = 0;colore2 = 0;colore3 = 0;tric = 1.4;linea (fid,pos_x+raggio_strumento*0.15,pos_y+raggio_strumento,pos_x + raggio_strumento*0.15, pos_y + raggio_strumento * tric , colore1, colore2, colore3,larghezza_linea);
linea (fid,pos_x-raggio_strumento*0.15,pos_y+raggio_strumento,pos_x - raggio_strumento*0.15, pos_y + raggio_strumento * tric , colore1, colore2, colore3,larghezza_linea);
linea (fid,pos_x+raggio_strumento*0.15,pos_y+raggio_strumento* tric,pos_x - raggio_strumento*0.15, pos_y + raggio_strumento * tric , colore1, colore2, colore3,larghezza_linea);
% d1 spessore tastatored1 = 0.07;linea (fid,pos_x+raggio_strumento*d1,pos_y+raggio_strumento*tric,pos_x + raggio_strumento*d1, pos_y + raggio_strumento * tric + misura*(-1) +5, colore1, colore2, colore3,larghezza_linea);
linea (fid,pos_x-raggio_strumento*d1,pos_y+raggio_strumento*tric,pos_x - raggio_strumento*d1, pos_y + raggio_strumento * tric + misura*(-1) +5, colore1, colore2, colore3,larghezza_linea);
linea (fid,pos_x+raggio_strumento*d1,pos_y+raggio_strumento*tric + misura*(-1) +5,pos_x - raggio_strumento*d1, pos_y + raggio_strumento * tric + misura*(-1) +5, colore1, colore2, colore3,larghezza_linea);
% linea di riferimentolinea (fid,pos_x+raggio_strumento*d1*4,pos_y+raggio_strumento*tric + 5,pos_x - raggio_strumento*d1*4, pos_y + raggio_strumento * tric + 5, colore1, colore2, colore3,larghezza_linea/2)
[fid] = scrivere (fid,pos_x+raggio_strumento*d1*4,pos_y+raggio_strumento*tric ,'left',3,'+ ');
[fid] = scrivere (fid,pos_x+raggio_strumento*d1*4,pos_y+raggio_strumento*tric + 8 ,'left',3,'- ');
[fid] = scrivere (fid,pos_x - raggio_strumento,pos_y + raggio_strumento *1.15 ,'left',3,'misura: ');
[fid] = scrivere (fid,pos_x - raggio_strumento,pos_y + raggio_strumento *1.40 ,'left',3,'_______');
%[fid] = scrivere (fid,pos_x - raggio_strumento,pos_y + raggio_strumento *1.60 ,'left','25',num2str(misura+5.678));[fid] = cerchio (fid,pos_x,pos_y,raggio_strumento*1.02,colore1,colore2,colore3)
[fid] = cerchio (fid,pos_x,pos_y,raggio_strumento*0.99,colore1,colore2,colore3)
%fid = linea (fid,pos_x,pos_y,pos_x+lunghezza,pos_y,180,180,180,larghezza_linea);for i=1:100
x1 = pos_x + raggio_strumento*0.97 * cos(2 * pi * i/100 );
y1 = pos_y + raggio_strumento*0.97 * sin(2 * pi * i/100 );
x2 = pos_x + raggio_strumento*0.93 * cos(2 * pi * i/100);
y2 = pos_y + raggio_strumento*0.93 * sin(2 * pi * i/100);
if rem(i,5) == 0
x2 = pos_x + raggio_strumento*0.88 * cos(2 * pi * i/100);
y2 = pos_y + raggio_strumento*0.88 * sin(2 * pi * i/100);
end[fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza_linea);
if rem(i,10) == 0
x1 = pos_x + raggio_strumento*0.80 * cos(2 * pi * i/100 - pi/2);
y1 = pos_y + raggio_strumento*0.80 * sin(2 * pi * i/100 - pi/2);
if i < 100
[fid] = scrivere (fid,x1,y1,'middle',2.2,num2str(i));
else[fid] = scrivere (fid,x1,y1,'middle',2.2,num2str(0));
endendif rem(i,10) == 0
x1 = pos_x + raggio_strumento*0.70 * cos(2 * pi * i/100 - pi/2);
y1 = pos_y + raggio_strumento*0.70 * sin(2 * pi * i/100 - pi/2);
if i < 100
[fid] = scrivere (fid,x1,y1,'middle',1.4,num2str(100-i));
endend% fid = linea (fid,pos_x+i,pos_y,pos_x+i,pos_y+tacca, 0, 0, 0,0.1);endcentesimi = misura-floor(misura);
x1 = pos_x + raggio_strumento*0.97 * cos(2 * pi * centesimi - pi/2);
y1 = pos_y + raggio_strumento*0.97 * sin(2 * pi * centesimi - pi/2);
x2 = pos_x ;
y2 = pos_y ;
[fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza_linea);
% quadrante millimetriif (sin(2 * pi * centesimi - pi/2) < -0.8)
pos_x1 = pos_x - raggio_strumento / 2.3;pos_y1 = pos_y ;
elsepos_x1 = pos_x;
pos_y1 = pos_y - raggio_strumento / 2.2;endraggio_quadrante_piccolo = raggio_strumento / 4;[fid] = cerchio (fid,pos_x1,pos_y1,raggio_quadrante_piccolo,colore1,colore2,colore3)
for i=0:9
x1 = pos_x1 + raggio_quadrante_piccolo*0.97 * cos(2 * pi * i/10- pi/2);
y1 = pos_y1 + raggio_quadrante_piccolo*0.97 * sin(2 * pi * i/10- pi/2);
x2 = pos_x1 + raggio_quadrante_piccolo*0.85 * cos(2 * pi * i/10- pi/2);
y2 = pos_y1 + raggio_quadrante_piccolo*0.85 * sin(2 * pi * i/10- pi/2);
[fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza_linea);
x1 = pos_x1 + raggio_quadrante_piccolo*0.78 * cos(2 * pi * i/10 - pi/2);
y1 = pos_y1 + raggio_quadrante_piccolo*0.78 * sin(2 * pi * i/10 - pi/2);
tic = sin(2 * pi * i/10 - pi/2);
if tic < 0 y1=y1-tic*1.5; end altezza_numeretto = 1.6; if i > 0
[fid] = scrivere (fid,x1,y1-altezza_numeretto/2,'middle',altezza_numeretto,num2str(10-i));
else[fid] = scrivere (fid,x1,y1-altezza_numeretto/2,'middle',altezza_numeretto,num2str(0));
end% fid = linea (fid,pos_x+i,pos_y,pos_x+i,pos_y+tacca, 0, 0, 0,0.1);endinteri = floor(misura);
x1 = pos_x1 + raggio_quadrante_piccolo*0.97 * cos(2 * pi * (5+(-1)*misura)/10 - pi/2);
y1 = pos_y1 + raggio_quadrante_piccolo*0.97 * sin(2 * pi * (5+(-1)*misura)/10 - pi/2);
x2 = pos_x1 ;
y2 = pos_y1 ;
[fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza_linea);
% [fid] = scrivere (fid,pos_x - raggio_strumento + 40 , pos_y + raggio_strumento * 1.29 ,'left','20',num2str(centesimi));% fid = rettangolo (fid, pos_x+lunghezza, pos_y-raggio_spigolo_nonio, ...% larghezza_nonio, raggio_spigolo_nonio*2, 0, 0, 0,0.2);fid = commento (fid,'tacche nonio')
% parte sotto del nonio%[fid] = scrivere (fid,pos_x+lunghezza+tacca_nonio + 4+30,pos_y,'middle','7',num2str(lunghezza));fprintf(fid1, ['misura: ' num2str(misura, '%10.2f') '\n'])
% -------------------------------------------------------------------------function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
% -------------------------------------------------------------------------function [fid] = linea_puntini (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
% -------------------------------------------------------------------------function [fid] = cerchio (fid,coord_x,coord_y,raggio,colore1,colore2,colore3)
global scalafprintf(fid, [' \n']);
% --------------------------------------------------------------------------function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
% --------------------------------------------------------------------------function [fid] = commento (fid,testo_commento)
global scalafprintf(fid, ['/* ' '\n']);
fprintf(fid, [testo_commento '\n']);
fprintf(fid, ['*/ ' '\n']);
% --------------------------------------------------------------------------function [fid] = scrivere (fid,x1,y1,giustificazione,altezza_testo,testo)
global scalafprintf(fid, ['' testo '' '\n']);
% Autori% Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)% Prof. Danilo Pasquini IPSIA Parodi Delfino, Colleferro (Roma)%function stampa_pdf_risultati ()
global larghezza_lineaglobal altezza_tacche_astaglobal altezza_tacche_asta_lungheglobal altezza_tacche_nonioglobal larghezza_nonioglobal raggio_millimetratoglobal raggio_spigolo_nonioglobal larghezza_prima_dello_zeroglobal fid1global scalaglobal numero_letturaglobal matrice_risultatiglobal colonne_risultatiglobal righe_risultatinumero_lettura = 0;larghezza_prima_dello_zero = 3;larghezza_linea = 0.2;altezza_tacche_asta = 2;altezza_tacche_asta_lunghe = 5;altezza_tacche_nonio = 3;larghezza_nonio = 15;raggio_millimetrato = 11;raggio_spigolo_nonio = 14.5;scala = 3.54;altezza_testo = 1.6;testo = num2str(ceil(rand*100));
nomefile = ['c:\comparatore_100\risultati_' testo '.svg'];
nomefile1 = ['c:\comparatore_100\risultati_' testo '.txt'];
fid = fopen([nomefile], 'wt');
fid1 = fopen([nomefile1], 'wt');
fprintf(fid, ['<!--?xml version="1.0" encoding="iso-8859-1" standalone="no"?--> \n']);
fprintf(fid, ['\n']);
fprintf(fid, ['\n']);
portata_strumento = 2500;lunghezza_casuale = (ceil (rand*portata_strumento))/ 100;
pos_x = 90;pos_y = 40;[fid] = scrivere (fid,30,10,'left',3,'Risultati letture comparatore');
[fid] = scrivere (fid,145,10,'right',3,'www.tiny.cc/disegno');
[righe,colonne] = size(matrice_risultati);
passo = 10;for i=1:righe
for j=1:colonne
if j==1
[fid] = scrivere (fid,4 + j*passo*1.3, 10 + i*passo*0.78, 'middle', 3.5, num2str(matrice_risultati(i,j)));
else[fid] = scrivere (fid,7 + j*passo*1.7, 10 + i*passo*0.78, 'middle', 3, num2str(matrice_risultati(i,j), '%10.2f'));
endendendfprintf(fid, [' \n']);
fclose(fid)
stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A ' 'C:\comparatore_100\Risultati' testo '.pdf']
dos(stringa_dos)
fclose (fid1)
% -------------------------------------------------------------------------function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
% -------------------------------------------------------------------------function [fid] = cerchio (fid,x1,y1,raggio,colore1,colore2,colore3)
global scalafprintf(fid, [' \n']);
% --------------------------------------------------------------------------function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
% --------------------------------------------------------------------------function [fid] = commento (fid,testo_commento)
fprintf(fid, ['/* ' '\n']);
fprintf(fid, [testo_commento '\n']);
fprintf(fid, ['*/ ' '\n']);
% --------------------------------------------------------------------------function [fid] = scrivere (fid,x1,y1,giustificazione,altezza_testo,testo)
global scalaaltezza_testo = altezza_testo*0.8;fprintf(fid, ['' testo '' '\n']);
%rettangolo_per_coprire_numero (fid, x1, y1, altezza_testo , altezza_testo, 0, 0, 0, 0.2)% --------------------------------------------------------------------------function [fid] = rettangolo_per_coprire_numero (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
global scalafprintf(fid, [' \n']);
