Show Posts
Pages: 1 [2] 3 4 ... 8
16  International / Software / Re: Problema con analogRead on: December 16, 2012, 08:47:03 am
ok grazie
17  International / Software / Re: Problema con analogRead on: December 15, 2012, 09:13:06 am
ma quindi posso o no usare due pin analogici come se fossero digitali e altri pin analogici poer leggere un valore correttamente?
18  International / Software / Re: Problema con analogRead on: December 14, 2012, 02:37:50 pm
Cosa ne fai delle resistenze Pullup nei ingressi analogici? Sbagli la misura visto che creii un partitore resistivo tra impedenza del segnale che leggi e la resistenza pullup che é tra 20k e 50kOhm.
Ciao Uwe

non ho capito a cosa ti riferisci...
19  International / Software / Re: Problema con analogRead on: December 14, 2012, 12:07:15 pm
no, non collego niente smiley-wink
chiedevo solo per sapere se fare continuamente queste operazione è troppo "stressante" per l'atmega
20  International / Software / Re: Problema con analogRead on: December 14, 2012, 11:51:04 am
ok
un'altra cosa, se all'interno del programma metto analogReference(INTERNAL) per leggere da un pin, poi rimetto analogReference(DEFAULT) per leggere da un altro pin e lo faccio in continuazione non ci sono problemi?
21  International / Software / Re: Problema con analogRead on: December 14, 2012, 09:03:47 am
pinMode per i pin analogici sò che non va usato, come ha detto leo.

@d407376:
esiste una modalità di lettura, descritta nel datasheet, detta "Free Running Mode", in cui si possono eseguire più letture una dietro l'altra. Se però in questa modalità si cambia canale (cioè pin letto), la prima lettura dopo il cambio di canale rispecchierà il canale precedente e solo quella successiva sarà riferita al nuovo canale.
Ora, analizzando l'analogRead dell'Arduino mi pare che sia impostata proprio questa modalità per cui il problema riscontrato potrebbe essere dato da questo. Quindi la lettura a vuoto per ricalibrare l'ADC è necessaria affinché esso cambi canale correttamente.
Grazie, ho capito il perchè smiley-wink
Mettendo un analogRead() a vuoto prima non è un grand problema, ma se si volesse mettere non in free running sarebbe possibile?
Questa modalità riguarda proprio l'altmega o come è scritta la funzione?
22  International / Software / Re: Problema con analogRead on: December 13, 2012, 02:44:44 pm
Allora, ecco quello che ho scoperto:

Code:
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(analogRead(A0));
  lcd.setCursor(8, 0);
  lcd.print(analogRead(A2));
  lcd.setCursor(0, 1);
  lcd.print(analogRead(A1));
  lcd.setCursor(8, 1);
  lcd.print(analogRead(A3));
 
  delay(500);
}

Con questo codice stampo sull'lcd quello che leggo dai pin analogici 0, 1, 2 e 3.
Quello che c'è collegato ai pin A0 e A1 lo lascio fisso, mentre faccio variare quello collegato ai pin A2 e A3:
  • se alzo A3 cambia anche il valore di A0
  • se alzo A2 cambia anche il valore di A1
Quando alzo A2 o A3 vedo correttamente i valori di A2 e A3 (almeno sembra che salgano correttamente), mentre gli altri valori si alzano di un po' ma non in modo stabile, rimangono sempre più alti del normale ma un po' salgono e un po' scendono.


Se invece faccio:
Code:
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  analogRead(A0);
  lcd.print(analogRead(A0));
  lcd.setCursor(8, 0);
  lcd.print(analogRead(A2));
  lcd.setCursor(0, 1);
  analogRead(A1);
  lcd.print(analogRead(A1));
  lcd.setCursor(8, 1);
  lcd.print(analogRead(A3));
 
  delay(500);
}
funziona tutto correttamente.
Anche se non metto analogRead() a vuoto per i pin A2 e A3 funziona, forse perchè A0 e A1 rimangono sempre uguali?

Se invece degli analogRead() a vuoto metto un delay(10) i valori diventano instabili come all'inizio.

p.s. non ho collegato più nessun interruttore.

p.p.s.
La prima volta che si usa l'ADC è bene fare una lettura a vuoto per calibrare il circuito S&H interno. Questo vale anche nel caso di ADC spento per motivi di sleep o altro.
Intendi una lettura a vuoto all'inizio di tutto e poi basta o ogni volta prima di leggere da un pin analogico?
Perchè se metto una lettura a vuoto in setup() non funziona l'lcd.
edit: forse non si era resettato bene l'lcd smiley-wink ho riprovato e funziona ma i valori sono instabili come all'inizio.
23  International / Software / Re: Programmazione ISP con IDE 1.0.2 on: December 13, 2012, 02:20:24 pm
Ringraziandovi per il supporto confermo che funziona tutto correttamente anche con la versione 1.0.3 e che con evince riesco a copiare il testo dal pdf della guida.
24  International / Software / Re: Problema con analogRead on: December 12, 2012, 03:44:42 pm
dopo varie prove ho scoperto che se prima di leggere quello che mi serve metto un'analogRead() a vuoto funziona tutto correttamente.
Per esempio se invece di mettere
Code:
int a = analogRead(A0);
metto
Code:
analogRead(A0);
int a = analogRead(A0);
funziona.
Ma è normale che faccia così?
25  International / Software / Problema con analogRead on: December 10, 2012, 10:54:49 am
Ho uno strano problema con analogRead() e non riesco a capire perchè mi succede.

Uso tre ingressi analogici e un lcd per vedere i valori letti.
Uno lo uso come un digitale, quindi nel setup() ho messo pinMode INPUT numerando il pin secondo i pin analogici ma da 14 a 19 anzichè da 0 a 5.
Agli altri due pin ho collegato dei potenziometri.
Con un analogRead() leggo il primo valore analogico dal potenziometro.
Il secondo valore analogico dell'altro potenziometro lo leggo solo quando vedo che il pin che uso come digitale è alto, per farlo uno digitalRead() e un interruttore.
Se lascio l'interruttore aperto vedo il primo valore analogico correttamente.
Se invece chiudo l'interruttore il secondo valore analogico lo vedo correttamente, ma il primo che continuo a leggere sale e scende da solo...
Non capisco perchè succeda, ho letto che servono almeno 100us per ricaricare il condensatore dell'analogRead(), ma anche mettendo 10 millisecondi di delay tra un analogRead() e l'altro non cambia...
26  International / Software / Re: Programmazione ISP con IDE 1.0.2 on: December 08, 2012, 04:22:55 pm
Scusatemi, stavo guardando la parte finale della guida riferita all'ide 1.0.1 invece che la parte relativa al caricamento del bootloader...  smiley-red
Comunque mettendo quel codice sono riuscito a caricare il bootloader senza errori, però ho un dubbio: quando carico il bootloader metto come Programmatore Arduino as ISP nell'ide; quando popi devo caricare lo sketch devo lasciare Arduino as ISP o mettere AVRISP mkll?
27  International / Software / Programmazione ISP con IDE 1.0.2 on: December 08, 2012, 03:00:12 pm
Ciao, vorrei programmare via isp un atmega 328 con l'ide 1.0.2.
Con l'ide 022 seguendo la guida di Michele Menniti sono riuscito a fare tutto correttamente.
Con l'ide 1.0.2 invece aggiungendo nel boards.txt la parte che va bene per l'ide 022 ovviamente non funziona e non riesce neanche a compilare il codice.
Anche la procedura relativa all'ide 1.0.1 presente nella guida non la posso fare perchè nel file boards.txt dell'ide 1.0.2 non è presente la parte indicata.
Qualcuno l'ha già fatto?

p.s. devo programmare un atmega328 come quello dell'arduino uno
28  International / Software / Re: Array globale int o byte? on: December 04, 2012, 09:53:03 am
ok grazie smiley-wink
29  International / Software / Array globale int o byte? on: December 04, 2012, 08:50:11 am
Se voglio dichiarare in un array globale dei numeri di pin di arduino da usare all'interno del programma è meglio dichiarare l'array come int o come byte?

una variabile byte può andare da 0 a 255, quindi penso che byte vada bene, ma se non ho problemi di memoria e di numeri troppo grandi da memorizzare uno vale l'altro?
30  International / Megatopic / Re: leOS - un semplice OS per schedulare piccoli task on: November 30, 2012, 08:21:16 am
ho provato a fare un buffer con un array char bidimensionale, ma non riesco a stamparlo sul display con print() o write()
se invece faccio due buffer uno per riga li riesco a stampare
Pages: 1 [2] 3 4 ... 8