Show Posts
Pages: [1] 2 3 ... 46
1  International / Software / Re: Contare fronte di salita segnale on: March 25, 2014, 07:07:36 am
No, conta solo i fronti di salita, ovvero quando pinOld vale false e digitalRead(pin) vale true.
Per far contare anche i fronti di discesa la condizione sarebbe stata:

Code:
static bool pinOld;
if (pinOld != digitalRead(pin)){
  //Quello che devi fare
};
pinOld = digitalRead(pin);

@giammy-vise
Mi sa che devi studiarti un po' il C++. Non vuol essere un rimprovero ma se non sai neppure cosa è l'operatore di confronto && prima di andare avanti il mio consiglio è di fermarti un attimo e leggerti qualche guida o meglio ancora un buon libro di C++...
Passi il non sapere cosa significa la parola chiave static, ma credo sia anche difficile spiegartelo se non sai le regole di visibilità e tempo di vita di una variabile, cose fondamentali da sapere anche per una programmazione di base.

P.S. Se proprio volessimo fare i pignoli, nell'esempio che ho scritto sopra c'è il rischio che non funzioni in quanto ci sono due digitalRead diverse e potrebbe succedere che lo stato del pin cambi proprio nel mezzo fra le due (caso improbabile ma non impossibile). Per evitare questo dovremmo fare una cosa del genere:

Code:
static bool pinOld;  //Stato del pin al ciclo precedente
bool pinAct;                           //Stato del pin in questo ciclo

pinAct = digitalRead(pin); //Faccio una sola digitalRead
if (!pinOld && pinAct ){
  //Quello che devi fare
};
pinOld = pinAct ;
2  International / Generale / Re: Risoluzione sistema di equazioni on: March 20, 2014, 10:09:05 am
Ma leggendo il titolo, non è che siete andati un attimo OT?  smiley-wink
3  International / Generale / Re: Risoluzione sistema di equazioni on: March 13, 2014, 07:00:27 am
Altrimenti se proprio con la Due non riesci ad arrivare alle prestazioni che si servono valuta di passare ad un'altra MCU, ad esempio una STF32F4, basata sul Cortex-M4, più potente del Cortex-M3 su cui è basato il SAM3X di Arduino Due, clock fino a 180MHz e soprattutto una FPU integrata.
Ovvio che non sono user-friendly così come Arduino...  smiley-wink
4  International / Software / Re: Array ed operatore % on: March 12, 2014, 02:47:03 pm
bello, e' piu' facile da ricordare rispetto ad usare i corrispondeti ascii,
karma+1  smiley

Bello, non lo sapevi? ;-)
5  International / Software / Re: Array ed operatore % on: March 12, 2014, 11:50:10 am
Il compilatore ti dice se quello che stai scrivendo è sintatticamente scorretto ma non semanticamente.

Un esempio: io voglio fare
Code:
int c;
c = a + b;
un errore di sintassi può essere questo:
Code:
int c;
c = a + ;b;
In quanto è, secondo le regole del C++, sbagliato mettere quel ; prima di b. Invece non ti da nessun errore se invece scrivi
Code:
int c;
c = a + 'b';
In quanto lui prende il carattere b, lo converte nella sua corrispondente codifica ascii, lo somma ad a e mette il risultato in c. E' un'operazione del tutto lecita, ma non è quello che volevi fare, ma il compilatore non può sapere quello che volevi fare...  smiley-wink

Un esempio di utilizzare i caratteri come numeri è quello di voler verificare se un carattere è maiuscolo o minuscolo, e si può fare così:
Code:
char c;
if (c >= 'A' && c <= 'Z') {  //Se c è un carattere maiuscolo
  ...
};
6  International / Generale / Re: Problema dopo un mese di corretto funzionamento on: February 21, 2014, 04:01:59 am
La butto li, non è che fai un sacco di scritture sulla EEPROM?
7  International / Generale / Re: Risoluzione sistema di equazioni on: February 21, 2014, 03:58:35 am
E mi immagino che il micro ci metta un sacco di tempo per eseguire un calcolo in virgola mobile con quella precisione...  smiley-wink
8  International / Generale / Re: Risoluzione sistema di equazioni on: February 19, 2014, 04:25:39 pm
Allora scrivici le equazioni...  smiley-wink

Devi pensare a una procedura che un bambino scemo dovrebbe fare per risolvere le equazioni, del tipo prendi questo numero, moltiplicalo per quest'altro, etc... Poi scrivere il codice dalla procedura è relativamente semplice.
9  International / Generale / Re: Risoluzione sistema di equazioni on: February 18, 2014, 09:49:50 am
Mi sa che Paolo non stava chiedendo come inserire le equazioni dentro il codice, stava chiedendo le equazioni...  smiley-sweat
10  International / Software / Re: Problema sostituzione funzione Delay con Millis on: February 13, 2014, 10:11:24 am
Non è così banale e immediato, devi usare la millis() dentro una macchina a stati. Una macchina a stati è un'ingegnoso sistema per divivere il funzionamento della tua macchina in blocchi (stati). Ad esempio:

Stato 1: Vai avanti, aspetta 60 secondi e poi vai allo stato 2
Stato 2: Attiva il freno e aspetta 1 minuto prima di andare allo stato 3
Stato 3: etc.....

Ti faccio un esempio, poi vedi te come inserirlo nel tuo codice, ma prima leggiti l'istruzione switch

Code:
int stato;
unsigned long timePrec;

void loop() {
  switch (stato) {
    case 0:  //Lo switch esegue a partire da qui quando stato vale 0
    //lo stato di riposo, dove è tutto fermo. Parti da qui e quando vuoi partire metti stato = 1
    if ( quello che ti pare) {
      timePrec = millis();
      stato = 1;
    }
    break;
    
    case 1:  //Lo switch esegue a partire da qui quando stato vale 1
    //vai avanti motore
    //etc...
    if (millis() - timePrec >= xxxx) {
      timePrec = millis();
      stato = 1;
    }
    break;
    
    case 2: //Lo switch esegue a partire da qui quando stato vale 2
    //ferma motore
    //attiva freno
    //etc...
    if (millis() - timePrec >= xxxx) {
      timePrec = millis();
      stato = 2;
    }
    break;
    
    case 3:
    //
    
    //...
    //...
    //...
    
    case n:
    //quando hai finito il ciclo devi tornare allo stato 0 (a riposo)
    if (millis() - timePrec >= xxxx) {
      timePrec = millis();
      stato = 0;
    }
    break;
  }
}
11  International / Software / Re: Problema sostituzione funzione Delay con Millis on: February 12, 2014, 05:48:21 am
@Elrospo, quando scivi codice dei inserirlo negli appositi tag altrimenti la leggibilità va a farsi benedire.

Inoltre
Code:
Serial.println(millis());
non serve assolutamente perché vedresti solo quanti millisecondi sono trascorsi dall'accensione, e visto che, come ti hanno già detto sopra, buona programmazione è NON azzerare il timer di millis(), quella riga non serve a niente.

@robpg
Millis non si deve resettare, come ti hanno giò indicato sopra...
Consiglio sia di studiare QUESTO articolo che di capire come utilizzarla in QUEST'altro, che spiega la cosa ... smiley
12  International / Software / Re: Problema sostituzione funzione Delay con Millis on: February 11, 2014, 07:21:14 am
lo strumento principale per il debug  è il serial print  con quello puoi vedere "tutto" cio che accade

Ho la vaga idea che tu non sappia cosa è un debugger...
Magari è lo strumento di debug più utilizzato su Arduino perché non necessita di hardware dedicato...
13  International / Software / Re: Ribaltare (not) comunicazione seriale on: January 27, 2014, 02:38:01 pm
@Guglielmo
Hai ragione, non c'avevo capito una mazza...  smiley-wink

@Deltoz
Non sono sicuro di aver capito bene: i segnali tx e rx con i quali devi interfacciarti sono open-collector npn?
14  International / Software / Re: EthernetClient e ip on: January 27, 2014, 10:47:41 am
Quella funzione "funziona" (passami il gioco di parole  smiley-wink ) solo se la comunicazione viene instaurata mediante il protocollo UCP. La EthernetClient lavora con il protocollo TCP.
15  International / Software / Re: Ribaltare (not) comunicazione seriale on: January 27, 2014, 10:46:07 am
UWE, che io sappia la seriale ha valori di tensione +-12V, ed infatti ci sono quando utilizzi i convertitori di livello ci sono i condensatori per accumulare la tensione generata dalle pompe di carica dei convertitori stessi.

Tornando al problema, in genere è più semplice cambiare una scocchezza software che non aggiungere transistor qua e la... La funzione che ti serve è la Bitwise NOT, vedi tu dove ti conviene metterla.

Secondo me ti conviene semplicemente negare la variabile tutte le volte che devi trasmettere in quanto ci sono un sacco di overload delle funzioni della seriale.
Pages: [1] 2 3 ... 46