Go Down

Topic: Informazioni "banali" (Read 1 time) previous topic - next topic

AMBUSH

Salve  :)
vorrei sciogliere un paio di piccoli dubbi.
A) qualcuno sa spiegarmi la linea di codice "int val = 0 (intero valore = 0 giusto?)" a cosa serve con precisione? Il mio circuito funziona anche se ometto int val = 0 e val=digitalRead(BUTTON) e scrivo solo digitalRead(BUTTON).
per fare un esempio: lo sketch per far accendere e spegnere un LED tramite pulsante. 

B)come misuro correttamente la caduta di potenziale ai capi di un componente? prendo il singolo componente lo collego al multimetro(taster) e vedo il valore che ottengo?

Grazie per la cortese attenzione.

uwefed

a) con
int val =0;
definisci il tipo di variabile che assegni alla variabile val. in questo caso un tipo integer con segno a 2Byte. Dai anche subito un valora allla variabile. Ogni variabile prima che possa essere usata deve essere data un tipo.  http://arduino.cc/en/Reference/Int Ogni riga deve essere terminata con un puntoevirgola.
Una parte di funzioni e commandi trovi su http://arduino.cc/en/Reference/HomePage

b) la caduta di tensione su un componente dipende dal suo stato di funzionamento ( se per esemio un transistore conduce o un LDR riceve luce o no) e la corrente che circla. La tensione puoi misurare collegando i tester ai capi del componente. Attenzione: non sempre quello che misuri ha un significato.

Ciao Uwe

leo72

a)
per completare le informazioni di Uwe, spesso si usa la forma
Code: [Select]
tipo_variabile nome = valore per compiere in un singolo passaggio 2 operazioni, ossia la definizione del tipo di variabile e l'assegnazione di un valore iniziale.

Non sempre tale valore iniziale serve.
Nel tuo caso, se il codice è:
Code: [Select]
int val=0;
val=digitalRead(BUTTON);


l'assegnazione di 0 a val è inutile dato che val andrà comunque a contenere un valore, nello specifico la lettura del pin BUTTON. Diversamente, non puoi omettere la dichiarazione di tipo perché, come ti ha spiegato Uwe, il micro deve sapere prima di usarla di che tipo sarà una variabile perché deve crearla materialmente in memoria e riservargli lo spazio necessario.

AMBUSH

mmh. scusate ma purtroppo non mi è molto chiaro :-(

leo72


mmh. scusate ma purtroppo non mi è molto chiaro :-(

Cosa non ti è chiaro?

PS:
a che livello sei di programmazione? per capire le tue conoscenze

pablos

Quote
funziona anche se ometto int val = 0 e val=digitalRead(BUTTON) e scrivo solo digitalRead(BUTTON).

se metti soltanto val=digitalRead(BUTTON) ti da errore, dicendoti che val non è dichiarato
puoi usarla così   int val=digitalRead(BUTTON)
oppure così    byte val=digitalRead(BUTTON) occuperai meno memoria se sei sicuro che il tuo valore non supererà i 255
se pensi che la tua variabile possa assumere valori più alti numeri interi (da -2147483648 a 2147483648) allora usi int


http://programmazione.html.it/guide/lezione/1090/le-variabili-in-c/
http://www.orebla.it/module.php?n=c_5
no comment

leo72


Quote
funziona anche se ometto int val = 0 e val=digitalRead(BUTTON) e scrivo solo digitalRead(BUTTON).

se metti soltanto val=digitalRead(BUTTON) ti da errore, dicendoti che val non è dichiarato
puoi usarla così   int val=digitalRead(BUTTON)
oppure così    byte val=digitalRead(BUTTON) occuperai meno memoria se sei sicuro che il tuo valore non supererà i 255
se pensi che la tua variabile possa assumere valori più alti numeri interi (da -2147483648 a 2147483648) allora usi int


http://programmazione.html.it/guide/lezione/1090/le-variabili-in-c/
http://www.orebla.it/module.php?n=c_5

Ocio!
Un int assume valori da -32768 a +32767, gli intervalli che hai dato tu sono per un unsigned int  :P

pablos

int di atmel che è a 16 bit  -32768 a +32767 che equivale a un short
ma il normale int dei microprocessori a 32 bit -2147483648 a 2147483648

non ho specificato che nell'atmel è limitato a 16, è corretto detto così?

ciao 
no comment

AMBUSH



mmh. scusate ma purtroppo non mi è molto chiaro :-(

Cosa non ti è chiaro?

PS:
a che livello sei di programmazione? per capire le tue conoscenze


praticamente è un limite che tende a zero.

quindi "val" indica  "variabile"? quindi int val=0; significa assegno alla variabile "val" un numero intero pari a "0"?

AMBUSH

ecco lo sketch dell'esempio
// Accendere il LED mentre è premuto il pulsante

#define LED 13
#define BUTTON 7

int val = 0;


void setup() {
   pinMode(LED, OUTPUT);
   pinMOde(BUTTON, INPUT);
}

void loop() {
   val = digitalWrite(BUTTON);
   
   if (val=HIGH) {
     digitalWrite(LED, HIGH);
   } else {
     digitalWrite(LED, LOW);
   }
}


ecco il mio sketch

// Accendere il LED mentre è premuto il pulsante

void setup() {
   pinMode(13, OUTPUT);
   pinMode(7, INPUT);
}

void loop() {
    digitalWrite(7);
   
   if (digitalWrite(7)=HIGH) {
     digitalWrite(13, HIGH);
   } else {
     digitalWrite(13, LOW);
   }
}

e funziona :-)

scusate il post kilometrico.

pablos

#10
May 25, 2012, 02:24 pm Last Edit: May 25, 2012, 06:48 pm by pablos Reason: 1
Scusa dove hai preso quell'esempio
Negli if quando fai i controlli dovrebbe esserci == in questo modo l'if assegna un valore invece che verificarlo, mi sa che devi rivedere in po di cose
Ciao
no comment

leo72


int di atmel che è a 16 bit  -32768 a +32767 che equivale a un short
ma il normale int dei microprocessori a 32 bit -2147483648 a 2147483648

non ho specificato che nell'atmel è limitato a 16, è corretto detto così?

ciao 

Sul forum di Arduino un "int" è un dato a 16 bit, sul forum x86 sarà a 32 bit  XD

Scherzo.  :P
Stiamo parlando di Arduino, quindi Atmel, ci dobbiamo sempre confrontare e riferire a questa architettura, è implicito.

leo72


Scusa dove hai preso quell'esempio
Negli if quando fai i controlli dovrebbe esserci == in questo modo l'if assegna un valore invece che confrontarlo, mi sa che devi rivedere in po di cose
Ciao

Esattamente. Il segno di equivalenza è "==", il simbolo "=" (1 solo segno di uguale) è l'assegnazione. Quindi quegli if saranno sempre veri perché un'operazione di assegnamento darà sempre esito positivo.

francesco84


ecco lo sketch dell'esempio
// Accendere il LED mentre è premuto il pulsante

#define LED 13
#define BUTTON 7

int val = 0;


void setup() {
   pinMode(LED, OUTPUT);
   pinMOde(BUTTON, INPUT);
}

void loop() {
   val = digitalWrite(BUTTON);
   
   if (val=HIGH) {
     digitalWrite(LED, HIGH);
   } else {
     digitalWrite(LED, LOW);
   }
}


ecco il mio sketch

// Accendere il LED mentre è premuto il pulsante

void setup() {
   pinMode(13, OUTPUT);
   pinMode(7, INPUT);
}

void loop() {
    digitalWrite(7);
   
   if (digitalWrite(7)=HIGH) {
     digitalWrite(13, HIGH);
   } else {
     digitalWrite(13, LOW);
   }
}

e funziona :-)

scusate il post kilometrico.



in questo esempio "ad esempio" ( :D) si poteva anche omettere val=0 in quanto prima di utilizzarlo esso viene inizializzato con un val = digitalWrite(BUTTON);

leo72

Si vede che il mio reply #2 è passato inosservato  ;)

Go Up