Arduino Forum

International => Italiano => Generale => Topic started by: iaccaro on Apr 06, 2019, 01:37 pm

Title: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: iaccaro on Apr 06, 2019, 01:37 pm

 ciao a tutti! presento il mio problema che sicuramente risultera' essere banale, ma al quale al momento non riesco proprio a trovare risposta (posto il primo pezzo dello sketch e poi descrivo il problema):

Code: [Select]

int analogico;


void setup() { // put your setup code here, to run once:

pinMode(A0, INPUT);
pinMode(11, OUTPUT);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}

void loop() { // put your main code here, to run repeatedly:

analogico = analogRead(A0);
analogico = map(analogico, 1, 1023, 1, 100);
Serial.println(analogico);
delay(50);

if (0 <= analogico < 10)

{
  digitalWrite(10, LOW);
  digitalWrite(9, LOW);
  digitalWrite(7, LOW);
  digitalWrite(11, LOW);
  digitalWrite(4, LOW);
  digitalWrite(2, LOW);
  digitalWrite(6, HIGH);
}
else if (10 <= analogico < 20)
{
  digitalWrite(10, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(2, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(9, LOW);
 


}
else if (20 <= analogico < 30)
{
  digitalWrite(7, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(6, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(2, LOW);
}

1-ok dunque ho "mappato" il segnale analogico in ingresso da 1 a 100 per poter meglio controllare i valori per l'esecuzione dei controlli if.
2-ho posto le condizioni per le quali eseguire le istruzioni che mi servono.
3- il problema risultante al quale non riesco a fare fronte e' che:nonostante il valore letto dal mio potenziometro so essere corretto(ho il serial print sul monitor e posso controllare i valori in entrata che sono giusti) ma le istruzioni della condizione non si verificano in nessun caso...


ps. nello sketch allegato ho messo solo le prime 3 condizioni per non creare un post esageratamente grande.. ma non cambia il fatto che sia pure la prima o l ultima condizione, le istruzioni non vengono mai eseguite!

ringrazio in anticipo chiunque utilizzi del suo tempo per tentare di dare una mano! grazie!

 
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: gpb01 on Apr 06, 2019, 01:40 pm
>iaccaro:   ti ricordo che in conformità al regolamento (http://forum.arduino.cc/index.php?topic=149082.0), punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie. :)

Guglielmo
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: iaccaro on Apr 06, 2019, 01:56 pm
oh credo di esserci riuscito, non sapevo nemmeno di una funzione del genere  :)  grazie! ora dovrebbe andare giusto?
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: gpb01 on Apr 06, 2019, 01:58 pm
... grazie! ora dovrebbe andare giusto?
(http://www.nikonland.eu/forum/public/style_emoticons/default/ibf_thumbup.gif)   giusto !

Guglielmo
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: ORSO2001 on Apr 06, 2019, 02:01 pm
Ciao,

questo tipo di confronto:
Code: [Select]
if (0 <= analogico < 10)
non va bene.
dovrebbe essere:
Code: [Select]
if (0 <= analogico && analogico < 10)
e vale anche per gli else if.
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: iaccaro on Apr 06, 2019, 02:04 pm
Ciao,

questo tipo di confronto:
Code: [Select]
if (0 <= analogico < 10)
non va bene.
dovrebbe essere:
Code: [Select]
if (0 <= analogico && analogico < 10)
e vale anche per gli else if.

adesso provo immediatamente!!! grazie!!!
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: gpb01 on Apr 06, 2019, 02:05 pm
In 'C' NON esiste la sintasi che hai usato tu e quello che hai messo tra parentesi fa tutt'altro ...

Immagina analogico = 15 allora ...

if ( 10 <= analogico < 20 ) viene interpretato, partendo da destra a sinistra, comparo analogico con 20, se è minore ho TRUE altrimenti ho false, dopo di che comapro tale valore TRUE o FALSE con 10 ... dato che TRUE su Arduno è 1 e FALSE è 0, con 15 la prima condizione da TRUE la seconda (10 <= TRUE) che sarebbe (10 <= 1) è sempre falsa ;=

Devi usare gli operatori booleani per unire DUE confronti separati ...

if ( (10 <= analogico) && (analogico < 20) ) ... quindi due confronti e un AND che a sua volta confronta i risultati ;)

Guglielmo

P.S.: vedo che nel tempo che io scrivevo tutta la "papparedella" hai avuto già risposte :D :D :D
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: iaccaro on Apr 06, 2019, 02:13 pm
In 'C' NON esiste la sintasi che hai usato tu e quello che hai messo tra parentesi fa tutt'altro ...

Immagina analogico = 15 allora ...

if ( 10 <= analogico < 20 ) viene interpretato, partendo da destra a sinistra, comparo analogico con 20, se è minore ho TRUE altrimenti ho false, dopo di che comapro tale valore TRUE o FALSE con 10 ... dato che TRUE su Arduno è 1 e FALSE è 0, con 15 la prima condizione da TRUE la seconda (10 <= TRUE) che sarebbe (10 <= 1) è sempre falsa ;=

Devi usare gli operatori booleani per unire DUE confronti separati ...

if ( (10 <= analogico) && (analogico < 20) ) ... quindi due confronti e un AND che a sua volta confronta i risultati ;)

Guglielmo

P.S.: vedo che nel tempo che io scrivevo tutta la "papparedella" hai avuto già risposte :D :D :D
ahah si infatti era un mio errore banalissimo e non riuscivo a venirne a capo da ieri sera!!! grazie comunque perche' mi mancava l'interpretazione della lettura in true e false in ordine! sara molto molto utile per capire gli errori d'ora in poi! ed ora e' tutto funzionante! grazie!!! che belli questi forum :P
Title: Re: condizioni controllo(if) determinate da analog input,ma lettura istruzioni manca
Post by: iaccaro on Apr 06, 2019, 02:41 pm
adesso provo immediatamente!!! grazie!!!
siamo andati perfetti!! risolto al primo colpo dopo la delucidazione!!! grazie!