Pages: [1] 2   Go Down
Author Topic: Informazioni "banali"  (Read 1234 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve  smiley
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.
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 235
Posts: 20230
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

a)
per completare le informazioni di Uwe, spesso si usa la forma
Code:
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:
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.
Logged


Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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


Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2755
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-razz
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2755
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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"?
Logged

Italy
Offline Offline
Full Member
***
Karma: 1
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2755
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: May 25, 2012, 11:48:19 am by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-lol

Scherzo.  smiley-razz
Stiamo parlando di Arduino, quindi Atmel, ci dobbiamo sempre confrontare e riferire a questa architettura, è implicito.
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Sr. Member
****
Karma: 1
Posts: 468
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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" ( smiley-grin) si poteva anche omettere val=0 in quanto prima di utilizzarlo esso viene inizializzato con un val = digitalWrite(BUTTON);
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si vede che il mio reply #2 è passato inosservato  smiley-wink
Logged


Pages: [1] 2   Go Up
Jump to: