per farvi capire ho fuso insieme le righe di codice che avevo in "nero" con quelle "blu" ma la soluzione che ho ottenuto non è stata quella che mi aspettavo. se guardiamo il codice senza le righe "blu" il print Serial.print(analogRead(greenPin)); nella console è molto veloce, per intederci fa un check sul pulsante premuto 5 volte al secondo( più o meno, sto ipotizzando), mentre se inserisco il for questo "check" si sballa e viene eseguito solo alla fine del for stesso. spero di essere stato chiaro, come faccio a risolvere la cosa e far tornare il "check" + reattivo mantenendo altri elementi all'interno del codice?
no, sinceramente non sei stato molto chiaro
Non capisco perchè avresti dovuto fondere il codice in blu, così va benissimo.
Se ho ben ccapito tu vuoi spostare le printl sui pin analogici al'interno del secondo for, giusto?
l'analogRead dura circa 100micros, quindi non credo sia il problema. La serial già è più lenta, dipenda dal baudrate che hai impostato. Il baudrate è il numero di caratteri al secondo, un numero è composto da tanti caratteri quante le sue cifre, e andare a capo è un carattere. Fatti quattro calcoli per vedere se per caso è la serial che rallenta tutto.
"const int redPin = A0;" non puoi mettere una stringa in un int. L' entrata analogica A0 viene considerata anche pin 0 percui scrivi "const int redPin = 0;". La stessa cosa per le altre entrate analogiche.
"const int redPin = A0;" non puoi mettere una stringa in un int. L' entrata analogica A0 viene considerata anche pin 0 percui scrivi "const int redPin = 0;". La stessa cosa per le altre entrate analogiche.
Grazie per la risposta Uwe, ho provato ad integrare la guida dentro il mio codice ma no riesco proprio a capire come farlo funzionare dentro il mio for, potresti darmi una mano, grazie
Esatto.
I pin sono contati a partire da 0. Sulla UNO, fino al pin 13 i pin corrispondono ai pin digitali, dal pin 14 al pin 19 corrispondono ai pin analogici. Però se metti D0 è equivalente a mettere 0, se metti A0 è equivalente a mettere 14, solo che la forma alfanumerica (Ax) è preferibile a quella solo numerica.
The analog input pins can be used as digital pins, referred to as A0, A1, etc.
non vorrei intromettermi ma non siamo un po OT :P? io volevo sapere come inserire la funzione millis dentro il mio codice al posto di delay, non riesco proprio a comprendere la logica dell'esempio, qualche dritta?
Ciao filoo
per usare millis() memorizzi quando vuoi fare partire il ritardo il valore che Ti da millis() in una variable di tipo unsigned long. Poi controlli se millis() é arrivato al valore millis() della variablie sommando il ritardo in millisecondi. Se sei arrivato a wuel tempo fai eseguire il condice che vuoi eseguire dopo il ritardo.
sotto l' esempio BlinkWithoutDelay comentato in italiano
/* Blink without Delay
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay */
const int ledPin = 13; // led sul piedino 13 di arduino
int ledState = LOW; // stato del LED (acceso o spento)
long previousMillis = 0; // variabile per memorizzare il tempo di partenza ritardo
long interval = 1000; // ritardo in millisecondi
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis(); // memorizza il valore di millis() nella varabile come tempo di partenza
if(currentMillis - previousMillis > interval) { // controlla se il tempo di ritardo é passato
previousMillis = currentMillis; // mette il tempo attuale della variabile perché in questo esempio il led lampeggia di continuo.
if (ledState == LOW) // il ritardo é passato, esegue il codice di invertire lo stato del LED
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState); / scrive lo stato del LED sul uscita led.
}
}
leo72:
I pin sono contati a partire da 0. Sulla UNO, fino al pin 13 i pin corrispondono ai pin digitali, dal pin 14 al pin 19 corrispondono ai pin analogici. Però se metti D0 è equivalente a mettere 0, se metti A0 è equivalente a mettere 14, solo che la forma alfanumerica (Ax) è preferibile a quella solo numerica.
ok, ma la mia domanda é: funziona anche se metti in mezzo una variabile di tipo int?