Prima prova con proximity, e non fuziona nulla...

Ciao a tutti,

è la prima volta che uso Arduino e spero che la sezione per fare questa domanda sia giusta (ero indeciso se scrivere qui o nella sezione “Generale”).

Sto provando delle semplici istruzioni con Arduino

Quello che vorrei avere è una serie di 10 onde quadre in uscia dal pin 3 ripetute ogni 3 secondi, solo se un sensore di prossimità non viene attivato dalla presenza di un oggetto metallico.

Il sensore di prossimità mi sarebbe in uscita una tensione di 5V (o di 0V quando non viene attivato) e lo collegherei al pin 7

quello che vado a scrivere è:

int quad = 3;
int prox = 7;


void setup()
{
  pinMode(quad, OUTPUT);
  pinMode(prox, INPUT);
}


void loop()
{
  if (prox == LOW)
  {

    for (int contatore=0; contatore<10; contatore++)
    {
      digitalWrite(stp, HIGH);
      delay(20);
      digitalWrite(stp, LOW);
      delay(20);
    }
    
    delay(3000);

  }
}

Non funziona nulla.

La sola parte relativa al solo ciclo for funziona, infatti se scrivo soltanto il seguente codice ottengo l’onda quadra desiderata

int quad = 3;

void setup()
{
  pinMode(quad, OUTPUT);
  pinMode(prox, INPUT);
}

void loop()
{
    for (int contatore=0; contatore<10; contatore++)
    {
      digitalWrite(stp, HIGH);
      delay(20);
      digitalWrite(stp, LOW);
      delay(20);
    }
    
    delay(3000);
}

Questo mi fa pensare che il piccolo ciclo if ha qualche errore.
Probabilmente ho sbagliato a scrivere if (prox == LOW). Non è una istruzione valida?

Potete aiutarmi?
Vi ringrazio anticipatamente

NO, e se ci pensi bene ... ti rendi conto che quell' IF non ha proprio senso ! ;)

prox è solo una variabile a cui tu hai assegnato il valore 7 quindi .. come pretendi che il valore 7 sia == a LOW ? ? ? :o

Quello che devi verificare è il valore 'dell'ingresso del pin numero 7' che, tradotto nel linguaggio di Arduino, diventa digitalRead(7) o, usando la variabile che tu hai definito, digitalRead(prox) ;)

Guglielmo

P.S: : Mi raccomando, accertati che il sensore di prossimità dia VERAMENTE o 0V o 5V e che non sia un qualche cosa che da uno solo dei due valori e, per l'altro, si aspetta una resistenza di pull-up/down ;)

P.P.S.: Sintassi della digitalRead() QUI

Grazie per la risposta.
Non ho ancora capito:

L’errore è sulla seconda riga? int prox = 7

così facendo non stabilisoc che il pin 7 lo chiamo prox ?

Coretto nel seguente modo continua a non funzionare

int quad = 3;
int prox = 7;


void setup()
{
  pinMode(quad, OUTPUT);
  pinMode(prox, INPUT);
}


void loop()
{
  [b]digitalRead(prox);[/b]
  if (prox == LOW)
  {

    for (int contatore=0; contatore<10; contatore++)
    {
      digitalWrite(quad, HIGH);
      delay(20);
      digitalWrite(quad, LOW);
      delay(20);
    }
    
    delay(3000);

  }
}

mentre invece così funziona

int quad = 3;

void setup()
{
  pinMode(quad, OUTPUT);

}

void loop()
{

    for (int contatore=0; contatore<10; contatore++)
    {
      digitalWrite(quad, HIGH);
      delay(20);
      digitalWrite(quad, LOW);
      delay(20);
    }
    
    delay(3000);

}

NO, l'errore è proprio di concetto, su come hai fatto l'IF e non sull'assegnazione alla variabile 'prox' del valore 7.

Perdona però, ma ... magari, prima di buttarsi a scrivere programmi, almeno le basi del linguaggio che si deve usare bisognerebbe studiarle, perché .... qui stiamo parlando proprio delle BASI ... ::)

Guarda, prenditi un bel testo di 'C' e comincia a studiarlo, poi ti riavvicinerai, sicuramente più produttivo, al tuo programma. :)

Puoi cominciare con QUESTO e puoi scaricarti QUESTO libro (... tranquillo, è un sito legale, purché per [u]esclusivo[/u] uso PERSONALE).

Vedrai che dopo ti sarà tutto più chiaro ;)

Guglielmo

Grazie mille! mi chiedo solo come mai non hai evitato di rispondermi invece di farlo 2 volte con frasi arroganti e senza risolvermi nulla! Tra tutti i forum sempre quello italiano è quello più problematico, chissà mai perchè...

Allora, se vuoi la 'pappa fatta' hai sbagliato persona e hai sbagliato forum ... ... nella mia prima risposta ti ho [u]CHIARAMENTE SPIEGATO[/u] dove sbagli, ma tu sembra che non lo abbia capito. ::)

Ah ... guarda che l'arrogante (... e svogliato, visto che non ti va neanche di impegnarti a studiare ed a capire) qui sei solo TU !

Guglielmo

Mangiala pure tu la pappa ps: http://it.wikipedia.org/wiki/Forum_%28Internet%29 dai una occhiata al significato di forum

... sarà invece il caso che tu dia un'occhiata al reference ... visto che dimostri la tua totale 'ignoranza' in materia !

Guglielmo

_P.S: E continuo a ripeterti che la soluzione [u]l'hai avuta[/u] nel mio primo post ... _

Ma che stai a giocare agli indovinelli? La soluzione la hai avuta nel primo post... guarda attentamente tra le righe, fai l'anagramma e raccogli tutti gli indizi.... ma che roba è! Mse se vuoi aiutarmi correggimi il codice altrimenti lascia stare, anzi lascia proprio stare. Grazie a tutti, discussione per me chiusa.

Grazie a tutti, discussione per me chiusa.

Non sentiremo comunque la tua mancanza.

Guglielmo cerca solo di farvi ragionare da soli e quando vi dice dove sbagliate

prox è solo una variabile a cui tu hai assegnato il valore 7 quindi .. come pretendi che il valore 7 sia == a LOW ? ? ? Quello che devi verificare è il valore 'dell'ingresso del pin numero 7' che, tradotto nel linguaggio di Arduino, diventa digitalRead(7) o, usando la variabile che tu hai definito, digitalRead(prox) ;)

vi da' la soluzione. Se poi, Tu come tanti altri, non vuoi far muovere quei Neutroni che hai ed avere tutto e subito senza neanche capire il perchè... beh, come dicevo all'inizio.... Ciao !

nemmeno io sentirò la vostra se uno scrive su un forum è perchè da solo non riesce a trovare una soluzione che senso ha continuare a dire fallo pensaci da solo, ti do un indizio... se vuoi aiutare qualcuno dai direttamente la soluzione concludo con: bla bla bla

Vuoi la soluzione ?

A = digitalRead(prox);
  if (A == LOW)
  {

Brunello:
Vuoi la soluzione ?

… tempo perso Brunello ::slight_smile: , meglio lasciarla andare certa gente … tanto “voglia di capireZERO, ancor meno di “sforzarsi a studiare:smiling_imp: :smiling_imp: :smiling_imp:

Guglielmo

jul89:
nemmeno io sentirò la vostra
se uno scrive su un forum è perchè da solo non riesce a trovare una soluzione
che senso ha continuare a dire fallo pensaci da solo, ti do un indizio…
se vuoi aiutare qualcuno dai direttamente la soluzione
concludo con: bla bla bla

Chiedo al moderatore di bannare questo personaggio. Grazie.

Purtroppo con l'allargarsi della conoscenza della scheda, e che con questa sia tutto facile costruirsi/programmare anche cose complicate senza aver avuto la pazienza, di studiarsi un po' di basi e di sbattersi nel cercare la soluzione ai problemi che ti si presentano davanti, di persone così ne vedremo sempre più spesso nel forum. :-\

jul89 Ti poni in modo sbagliato. La persona arrogante e cattiva sei Tu che insisti che non Ti hanno dato la risposta.

Tu hai fatto un errore in una funzione che Ti viene spiegato nelle prime lezione dei tutorial di Arduino. Guglielmo Ti ha dato la risposta della soluzione senza scriverTi il codice giusto perché Tu potessi imparare come funziona.

Ritengo giusto che Tu Ti scusi con lui perché sei Tu nel torto.

Ciao Uwe

Ciao Uwefed,

purtroppo la pensiamo in maniera diversa. Copio e incollo le frasi di guglielmo

prima di buttarsi a scrivere programmi, almeno le basi del linguaggio che si deve usare bisognerebbe studiarle, perché .... qui stiamo parlando proprio delle BASI Guarda, prenditi un bel testo di 'C' e comincia a studiarlo, poi ti riavvicinerai, sicuramente più produttivo, al tuo programma.

Secondo me questo è un modo arorgante di rispondere. Se poi giudichi quelle frasi carine e gentili, bè, penso che il problema non è sicuramente il mio. Sono stato molto cordiale io, se vuoi puoi rileggere i miei primi post.

Sono membro di una community su una distribuzione Linux e non ho mai visto questo comportamento. Quando un utente ha qualche problema non gli viene mai detto di studiarsi la guida e tornare quando ha imparato ad usare la distrubuzione. Che senso avrebbe? Lo si aiuta in modo che può iniziare a muoversi da solo. A volte basta una picocla spiegazione. Oltretutto prima di scrivere nel forum mi sono letto "arduino programming notebook di brian w.evans", ma evidentemente qualche cosa mi è sfuggita.

Concludo dicendo che è nocivo giocare agli indovinelli in un forum. Ora ho una brutta opinione di questo forum, e sicuramente non ne parlerò bene con i miei amici che vogliono avvicinarsi a questo programma.

Se esistesse l'opzione delete account avrei già provveduto a cancellarmi. Vi invito a leggere il forum tedesco o internazionale per capire come l'ambiente è diverso. Tra l'altro non credo esista nemmeno una obbligatorierà di presentarsi per ricevere una risposta. Fa molto " club esclusivo"

jul89: Ciao Uwefed,

Vi invito a leggere il forum tedesco o internazionale per capire come l'ambiente è diverso. Tra l'altro non credo esista nemmeno una obbligatorierà di presentarsi per ricevere una risposta. Fa molto " club esclusivo"

No, non è una regola, si chiama solo "educazione". Rileggiti bene i punteggi di Karma di Guglielmo in relazione al numero di post che fà. E' uno di quelli che riceve il maggior numero di approvazioni da chi ha aiutato.

jul89:

Secondo me questo è un modo arorgante di rispondere. Se poi giudichi quelle frasi carine e gentili, bè, penso che il problema non è sicuramente il mio.

Troppo facile copiare SOLO pezzi di frase … dimostri di essere anche in malafede !

Ecco la mia fase completa :

gpb01:
Perdona però, ma … magari, prima di buttarsi a scrivere programmi, almeno le basi del linguaggio che si deve usare bisognerebbe studiarle, perché … qui stiamo parlando proprio delle BASI … ::slight_smile:

… non mi sembra ne una frase offensiva, ne arrogante, ma un consiglio ed un invito (che, per altro, ribadisco) a studiarsi almeno le BASI prima di avvicinarsi a qualunque ambiente (… che mi sembra il minimo).

Comunque … abbiamo capito come la pensi, e “i tuoi amici”, se sono come te, non ci interessa che ci frequentino, quindi … parla pure male di noi ! :smiling_imp:

Buona continuazione su altri lidi …
… e chiudiamola qui !

Guglielmo

Rileggiti bene i punteggi di Karma di Guglielmo in relazione al numero di post che fà. E' uno di quelli che riceve il maggior numero di approvazioni da chi ha aiutato.

Non vedo correlazione tra il suo modo arrogante di porsi e il numeor di approvazioni che ha. E' una difesa smodata nei confronti di guglielmo? L'arringa finale?

Ma da qui posso cancellarmi?