% Autori
% Prof. Danilo Pasquini IPSIA Parodi Delfino, Colleferro (Roma)
% Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)
% trasmissione tramite ruote di frizione
%
function trasmissione ()
global esercizio_attuale
global fid1
global scala
global pos_y_nuova
scala = 3.54;
esercizio_attuale = 0
clc
testo = num2str(ceil(rand *10000))
nomefile = ['c:\test\Ruote_frizione_' testo '.svg'];
nomefile1 = ['c:\test\Ruote_frizione_' 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
lunghezza_casuale = (ceil (rand*portata_strumento))/ 100
[fid] = scrivere_2 (fid,25,12,'left','2.5','Alunno: _________________________________________________ Classe: ___________ Data: _____________');
[fid] = scrivere_2 (fid,10,283,'right','2.5','www.idroslab.altervista.org');
[fid] = scrivere_2 (fid,10,287,'right','2.5','www.facebook.com/idroslab');
[fid] = scrivere_2 (fid,124,285,'right','2','Autori: Prof. Paolo Sordi IPSIA A. Pacinotti, Pontedera (Pisa)');
[fid] = scrivere_2 (fid,132,288,'right','2','Prof. Danilo Pasquini IPSIA P.P. Delfino, Colleferro (Roma)');
[fid] = scrivere (fid,15,8,'left','5',testo);
for i=1:2
for j=[15, 210-100]
esercizio_attuale = esercizio_attuale +1
disegna_trasmissione (fid, j)
end
end
fprintf(fid, [' \n']);
fclose(fid)
stringa_dos = ['c:\Programmi\Inkscape\inkscape -f ' nomefile ' -A ' 'C:\test\Ruote_frizione_' testo '.pdf']
dos(stringa_dos)
fclose (fid1)
load chirp;
y1 = y; Fs1 = Fs;
wavplay(y,Fs)
% -------------------------------------------------------------------------
function disegna_trasmissione (fid,pos_x)
global fid1
global esercizio_attuale
global pos_y_nuova
altezza_testo_1 = 9;
altezza_testo_2 = 7;
colore1 = 0;
colore2 = 0;
colore3 = 0;
raggio_prima_ruota = 10+rand*15
if (esercizio_attuale > 0 )
pos_y = 25;
end
if (esercizio_attuale > 2 )
pos_y = pos_y_nuova;
end
pos_x = pos_x + raggio_prima_ruota
pos_y = pos_y + raggio_prima_ruota
[fid] = cerchio (fid,pos_x,pos_y,raggio_prima_ruota ,colore1,colore2,colore3)
[fid] = scrivere (fid,pos_x+raggio_prima_ruota/2,pos_y-raggio_prima_ruota/2,'middle',num2str(altezza_testo_1),'1')
[fid] = scrivere_quota (fid, pos_x, pos_y, 0, 'middle', num2str(altezza_testo_2), raggio_prima_ruota*2);
[fid] = arco_di_linee (fid,pos_x, pos_y, raggio_prima_ruota*2/3, colore1, colore2, colore3, rand);
cateto_x = 10 + rand * 10;
centro2_x = pos_x + raggio_prima_ruota + cateto_x;
cateto_y = rand * 10;
centro2_y = pos_y + cateto_y;
raggio_seconda_ruota = sqrt ((raggio_prima_ruota + cateto_x)^2+(cateto_y)^2) - raggio_prima_ruota
[fid] = cerchio (fid,centro2_x,centro2_y,raggio_seconda_ruota ,colore1,colore2,colore3)
[fid] = scrivere (fid,centro2_x+raggio_seconda_ruota/2,centro2_y-raggio_seconda_ruota/2,'middle',num2str(altezza_testo_1),'2')
[fid] = scrivere_quota (fid, centro2_x,centro2_y, 0, 'middle', num2str(altezza_testo_2), raggio_seconda_ruota*2)
if (esercizio_attuale == 2 || esercizio_attuale == 4)
cateto_x = 15 + rand * 10;
centro3_x = centro2_x + cateto_x;
cateto_y = 10 + rand * 10;
centro3_y = centro2_y + raggio_seconda_ruota + cateto_y;
raggio_terza_ruota = sqrt (( cateto_x)^2+(raggio_seconda_ruota +cateto_y)^2) - raggio_seconda_ruota
[fid] = cerchio (fid,centro3_x,centro3_y,raggio_terza_ruota ,colore1,colore2,colore3)
[fid] = scrivere (fid,centro3_x+raggio_terza_ruota/2,centro3_y-raggio_terza_ruota/2,'middle',num2str(altezza_testo_1),'3')
[fid] = scrivere_quota (fid, centro3_x,centro3_y, 0, 'middle', num2str(altezza_testo_2), raggio_terza_ruota*2)
end
n1 = 10*round(100 + rand * 900);
acapo = 9
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5,'left',num2str(altezza_testo_1),['n1= ', num2str(n1), ' rpm']);
i=1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['n2= ____________ rpm']);
n2= n1*raggio_prima_ruota/raggio_seconda_ruota
fprintf(fid1, ['n2: ' num2str(n2) ' \n'])
if (esercizio_attuale == 2 || esercizio_attuale == 4)
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['n3= ____________ rpm']);
fprintf(fid1, ['n3: ' num2str(n2*raggio_seconda_ruota/raggio_terza_ruota) ' \n'])
end
coppia1 = 10*round(10 + rand * 90)
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['Coppia 1= ', num2str(coppia1), ' Nm']);
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['Coppia 2= ____________ Nm']);
coppia2 = (coppia1/raggio_prima_ruota/1000) * raggio_seconda_ruota/1000
fprintf(fid1, ['coppia2: ' num2str(coppia2) ' \n'])
if (esercizio_attuale == 2 || esercizio_attuale == 4)
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['Coppia 3= ____________ Nm']);
coppia3 = (coppia2/raggio_seconda_ruota/1000) * raggio_terza_ruota/1000
fprintf(fid1, ['coppia3: ' num2str(coppia3) ' \n'])
end
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['Potenza = ____________ W = ____________ kW ']);
i=i+1
[fid] = scrivere (fid,pos_x-raggio_prima_ruota,pos_y + raggio_prima_ruota * 1.5 + i*acapo,'left',num2str(altezza_testo_1),['Indicare i versi di rotazione']);
if (esercizio_attuale == 1)
pos_y_nuova = pos_y + raggio_prima_ruota * 1.5 + (i+1.5)*acapo;
end
if (esercizio_attuale == 2)
pos_y_nuova = max (pos_y_nuova ,pos_y + raggio_prima_ruota * 1.5 + (i+1.5)*acapo);
end
fprintf(fid1, [' \n'])
% -------------------------------------------------------------------------
function [fid] = arco_di_linee (fid,pos_x, pos_y, raggio, colore1, colore2, colore3, verso)
angolo_iniziale = -120*pi/180
angolo = 90*pi/180
x1 = pos_x + raggio * sin(angolo_iniziale)
y1 = pos_y + raggio * cos(angolo_iniziale)
numero_segmenti = 10
for i=1:numero_segmenti
x2 = pos_x + raggio * sin(angolo_iniziale+i*angolo/numero_segmenti)
y2 = pos_y + raggio * cos(angolo_iniziale+i*angolo/numero_segmenti)
[fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,2)
x1 = x2;
y1 = y2;
end
tick = 0.06 *raggio
tick_i = 1
if verso > 0.5
x10 = pos_x + (raggio+tick) * sin(angolo_iniziale+(numero_segmenti-tick_i)*angolo/numero_segmenti)
y10 = pos_y + (raggio+tick) * cos(angolo_iniziale+(numero_segmenti-tick_i)*angolo/numero_segmenti)
[fid] = linea (fid,x10,y10,x2,y2,colore1,colore2,colore3,2)
tick = 0.05 *raggio
tick_i = 1
x10 = pos_x + (raggio-tick) * sin(angolo_iniziale+(numero_segmenti-tick_i)*angolo/numero_segmenti)
y10 = pos_y + (raggio-tick) * cos(angolo_iniziale+(numero_segmenti-tick_i)*angolo/numero_segmenti)
[fid] = linea (fid,x10,y10,x2,y2,colore1,colore2,colore3,2)
end
if verso < 0.5
x1 = pos_x + raggio * sin(angolo_iniziale)
y1 = pos_y + raggio * cos(angolo_iniziale)
x10 = pos_x + (raggio+tick) * sin(angolo_iniziale+(tick_i)*angolo/numero_segmenti)
y10 = pos_y + (raggio+tick) * cos(angolo_iniziale+(tick_i)*angolo/numero_segmenti)
[fid] = linea (fid,x10,y10,x1,y1,colore1,colore2,colore3,2)
tick = 0.05 *raggio
tick_i = 1
x10 = pos_x + (raggio-tick) * sin(angolo_iniziale+(tick_i)*angolo/numero_segmenti)
y10 = pos_y + (raggio-tick) * cos(angolo_iniziale+(tick_i)*angolo/numero_segmenti)
[fid] = linea (fid,x10,y10,x1,y1,colore1,colore2,colore3,2)
end
% -------------------------------------------------------------------------
function [fid] = linea (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
global scala
fprintf(fid, [' \n']);
function [fid] = linea_puntini (fid,x1,y1,x2,y2,colore1,colore2,colore3,larghezza)
scala = 10;
fprintf(fid, [' \n']);
% -------------------------------------------------------------------------
function [fid] = cerchio (fid,coord_x,coord_y,raggio,colore1,colore2,colore3)
global scala
fprintf(fid, [' \n']);
% --------------------------------------------------------------------------
function [fid] = rettangolo (fid,x1,y1,lato1,lato2,colore1,colore2,colore3,larghezza)
global scala
fprintf(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 scala
fprintf(fid, ['' testo '' '\n']);
% --------------------------------------------------------------------------
function [fid] = scrivere_2 (fid,x1,y1,giustificazione,altezza_testo,testo)
global scala
altezz = str2num(altezza_testo);
fprintf(fid, ['' testo '' '\n']);
% --------------------------------------------------------------------------
function [fid] = scrivere_quota (fid,x1,y1,angolo,giustificazione,altezza_testo,numero_quota)
global scala
testo = [num2str(round(numero_quota)), ' mm'];
fprintf(fid, ['<!-- Scrivere quota --> \n']);
fprintf(fid, ['' testo '' '\n']);
if (angolo == 0)
freccia = 2
y1 = y1 + freccia/2
[fid] = linea (fid,x1,y1,(x1+numero_quota/2),y1,0,0,0,1)
fprintf(fid, ['<!-- freccia --> \n']);
[fid] = linea (fid,x1+numero_quota/2-freccia, y1-freccia/3, x1+numero_quota/2,y1,0,0,0,1)
[fid] = linea (fid,x1+numero_quota/2-freccia, y1+freccia/3, x1+numero_quota/2,y1,0,0,0,1)
fprintf(fid, ['<!-- fine freccia --> \n']);
[fid] = linea (fid,x1,y1,(x1-numero_quota/2),y1,0,0,0,1)
fprintf(fid, ['<!-- freccia --> \n']);
[fid] = linea (fid,x1-numero_quota/2+freccia, y1-freccia/3, x1-numero_quota/2,y1,0,0,0,1)
[fid] = linea (fid,x1-numero_quota/2+freccia, y1+freccia/3, x1-numero_quota/2,y1,0,0,0,1)
fprintf(fid, ['<!-- fine freccia --> \n']);
end
if (angolo == 90 || angolo == 270)
freccia = 2
if (angolo==90)
x1 = x1 - freccia/2
end
if (angolo==270)
x1 = x1 + freccia/2
end
[fid] = linea (fid,x1,y1,x1,y1+numero_quota/2,0,0,0,1)
fprintf(fid, ['<!-- freccia --> \n']);
[fid] = linea (fid,x1-freccia/3, y1 +numero_quota/2-freccia, x1,y1+numero_quota/2,0,0,0,1)
[fid] = linea (fid,x1+freccia/3, y1+numero_quota/2-freccia,x1,y1+numero_quota/2,0,0,0,1)
fprintf(fid, ['<!-- fine freccia --> \n']);
[fid] = linea (fid,x1,y1,x1,y1-numero_quota/2,0,0,0,1)
fprintf(fid, ['<!-- freccia --> \n']);
[fid] = linea (fid,x1-freccia/3, y1-numero_quota/2+freccia, x1,y1-numero_quota/2,0,0,0,1)
[fid] = linea (fid,x1+freccia/3, y1-numero_quota/2+freccia, x1,y1-numero_quota/2,0,0,0,1)
fprintf(fid, ['<!-- fine freccia --> \n']);
end
fprintf(fid, ['<!-- --> \n']);