<< Chapter < Page | Chapter >> Page > |
L'
isteresi è quella proprietà dei sistemi che li fa reagire con un certo
ritardo alle forze ad essi applicate. Ad esempio, all'atto disedersi su una poltrona imbottita, la relazione tra forza e
compressione del cuscino può essere di
forma
isteretica , ed evidenza di ciò si può avere
dall'impronta lasciata nel momento in cui ci si rialza.Nel design dell'interazione, l'isteresi viene introdotta
deliberatamente per ritardare le azioni del sistema rispettoall'accadere di eventi. Per esempio, il click del mouse in una
certa area può attivare un menu, la cui scomparsa viene peròritardata rispetto all'uscita da quella regione, in modo da
consentire all'utente di esplorare le voci del menu anche conpercorsi del mouse imperfetti.
Nei regolatori automatici, quale è ad esempio il termostatoper la regolazione di temperatura, è spesso presente un
elemento isteretico per evitare commutazioni spurie, adesempio dovute ai rimbalzi degli interruttori. Il
termostato, in particolare, attiva il bruciatore quando latemperatura scende al di sotto di una soglia
(
threshold )
, ma non lo spegne fintantoché la temperatura non
raggiunge una seconda soglia
. Quindi, l'accensione e spegnimento del bruciatore
dipendono dalla storia del segnale di temperatura. Ciòpreviene sequenze rapide di accensione/spegnimento per
oscillazioni di temperatura intorno alla soglia.Nella sua
forma
più stilizzata , un sistema con isteresi è
bistabile. Cioè caratterizzato da due stati stabili. Quindi,per programmare un interruttore con isteresi è sufficiente
utilizzare una variabile
boolean acceso
e due
soglie
basso
e
alto
:
if (acceso) {
if (signal<basso) {
// operazioni di spegnimentoacceso = false;
}}
else //spentoif (signal>alto) {
// operazioni di accensioneacceso = true;
}
Si scriva un programma Processing che disegni la curva della pressione acustica catturata dal microfono. A bassepressioni la curva sia disegnata in verde. Quando la pressione acustica supera una soglia superiore la curvadeve diventare di colore rosso, e tornare ad essere verde quando torna al di sotto di una soglia inferiore.
Una soluzione che fa uso della libreria audio
Minim è la seguente:
import ddf.minim.*;AudioInput in;
int WIDTH=400, HEIGHT=200;int x;
int level, prevLevel;color colorLine=color(0,255,0);
boolean acceso=false;int basso=80;
int alto=120;Minim minim;void setup()
{size(WIDTH, HEIGHT);
minim = new Minim(this);// get a line-in from Minim: mono, 512 sample buffer
// default sampling rate is 44100, default bit-depth is 16in = minim.getLineIn(Minim.MONO, 512);}void draw()
{if (x==0) {
background(0);stroke(255,0,0); line(0,HEIGHT-alto,WIDTH,HEIGHT-alto);
stroke(0,255,0); line(0,HEIGHT-basso,WIDTH,HEIGHT-basso);}
stroke(colorLine);level = int(in.left.level()*HEIGHT*10);
line(x, HEIGHT - prevLevel, (x+1)%WIDTH, HEIGHT - level);x = (x+1)%WIDTH;
prevLevel = level;if (acceso) {
if (level<basso) {
colorLine = color(0, 255, 0);acceso = false;
}}
else //spento{
if (level>alto) {
colorLine = color(255, 0, 0);acceso = true;
}}
}void stop(){
// always stop Minimminim.stop();
super.stop();}
Notification Switch
Would you like to follow the 'Programmazione di artefatti interattivi' conversation and receive update notifications?