C'è una parentesi di troppo prima dell'if(millis()..., che poi viene anche chiusa.
Prova anche a togliere MD_MAX72XX:: dove fai la regolazione dell'intensità.
Mah, non capisco intanto perché non usare la map() che fa esattamente quello che serve. Poi magari usare anche qualche Serial.print() giusto per capire cosa "vede" e cosa imposta (ovviamente nella setup devi fare begin):
...
if (millis() - t_potRead > 200)
{
t_potRead = millis();
int pot = analogRead(pinPotenziometro);
Serial.print("pot="); Serial.print(pot);
pot = map(pot,0, 1024, 0, 16);
Serial.print(" -> "); Serial.println(pot);
mx.control(MD_MAX72XX::INTENSITY, pot);
}
...
A questo punto dovresti verificare se i valori corrispondono a quanto atteso.
1)Cambiato in:
if (millis() - t_potRead > 200)
{
t_potRead = millis();
mx.control(MD_MAX72XX::INTENSITY, analogRead(pinPotenziometro) / 64);
}
togliendo la { di troppo,ma uguale
- Togliendo MD_MAX..... mi restituisce:
exit status 1
'INTENSITY' was not declared in this scope
docdoc:
Mah, non capisco intanto perché non usare la map() che fa esattamente quello che serve. Poi magari usare a
Grazie,appena rientro provo
docdoc:
Mah, non capisco intanto perché non usare la map() che fa esattamente quello che serve.
E' anche bene usare la testa rendendosi perfettamente conto di ciò che si sta facendo, quando una cosa è molto semplice, anche perché librerie e macro hanno sempre dei limiti con cui ci si può scontrare in alcune situazioni. Nel caso specifico, ricordo che proprio la map() in un caso non funzionava. Credo, però, che sia stato risolto.
Tra dovermi ricordare certe funzioni e i casi in cui non funzionano, preferisco fare da solo... ![]()
docdoc:
A questo punto dovresti verificare se i valori corrispondono a quanto atteso.
Ho provato,e non ho lettura:
pot=0 -> 0
Ma con il multimetro il valore cambia.
Però ora il programma riesce a funzionare come prima,anche se,purtroppo,senza controllo della luminosità
Ma come hai collegato questo potenziometro? Che valore ha? Fai uno schemino ...
Guglielmo
Se anziché:
int pinPotenziometro = A4;
scrivi:
int pinPotenziometro = 18;
che fa?
Comincia così:
unsigned long t_read;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(millis()-t_read>200) {t_read=millis(); Serial.println (analogRead(18);}
}
collegando il cursore del potenziometro ad A4: che leggi sul monitor seriale?
Scusa e secondo te dove sarebbe la differenza ? ? ? :o :o :o
Il file "pins_ arduino.h" definisce chiaramente:
#define PIN_A0 (14)
#define PIN_A1 (15)
#define PIN_A2 (16)
#define PIN_A3 (17)
#define PIN_A4 (18)
#define PIN_A5 (19)
#define PIN_A6 (20)
#define PIN_A7 (21)
static const uint8_t A0 = PIN_A0;
static const uint8_t A1 = PIN_A1;
static const uint8_t A2 = PIN_A2;
static const uint8_t A3 = PIN_A3;
static const uint8_t A4 = PIN_A4;
static const uint8_t A5 = PIN_A5;
static const uint8_t A6 = PIN_A6;
static const uint8_t A7 = PIN_A7;
... quindi?
Guglielmo
gpb01:
Ma come hai collegato questo potenziometro? Che valore ha? Fai uno schemino ...Guglielmo
5v al pin sinistra
Gnd al pin destra
A4 a quello centrale
del pot
Di che valore (resistenza in Ω) è detto potenziometro ?
Guglielmo
5 KOhm 20%
Allora fai una bella cosa, lascia temporaneamente stare il tuo programma e scrivi proprio due righe in cui leggi solo l'ingresso analogico e stampi il valore ... visto mai che ci sia qualche problema ... :![]()
Guglielmo
Ecco il valore roteando in senso orario il pot
:
21:40:19.114 -> 0
21:40:19.585 -> 0
21:40:20.112 -> 0
21:40:20.589 -> 0
21:40:21.109 -> 74
21:40:21.628 -> 127
21:40:22.098 -> 160
21:40:22.618 -> 199
21:40:23.088 -> 238
21:40:23.609 -> 283
21:40:24.131 -> 328
21:40:24.608 -> 384
21:40:25.129 -> 390
21:40:25.602 -> 456
21:40:26.120 -> 519
21:40:26.634 -> 570
21:40:27.107 -> 644
21:40:27.627 -> 731
21:40:28.101 -> 802
21:40:28.617 -> 832
21:40:29.142 -> 900
21:40:29.616 -> 967
21:40:30.137 -> 1023
21:40:30.609 -> 1021
21:40:31.129 -> 1023
21:40:31.603 -> 1021
21:40:32.122 -> 1023
21:40:32.639 -> 1023
21:40:33.113 -> 1023
21:40:33.629 -> 1023
21:40:34.150 -> 1023
21:40:34.624 -> 1023
21:40:35.145 -> 1023
21:40:35.617 -> 1023
21:40:36.141 -> 1022
21:40:36.614 -> 1023
Potenziometro "rumoroso" ma sembra corretto come risultato...
si,forse ho girato troppo velocemente!
Sono i valori verso il fine corsa che mi sembrano "rumorosi", ma sappi che è normale. Neanche da nuovi sono precisi!
zonalimitatore:
Ecco il valore roteando in senso orario il pot ...
... ecco, allora c'è chiaramente qualche cosa che NON va nel tuo programma più complesso perché, come vedi, la lettura analogica, da sola, funziona correttamente ... :![]()
Cosa hai di collegato a quella Nano? Puoi fare uno schema dei collegamenti?
Guglielmo
