Arrivato!

Arrivato oggi, arduino2009, eth shield e componenti vari... molto bello!
Sorprendentemente piccolo tra l'altro, mi aspettavo le schede più grandi :slight_smile:

Primissima domanda.
Ho, seguendo la guida, uploadato lo sketch blink... tutto apposto, il led blinka :slight_smile:
Mi chiedevo però: è normale che i tempi di upload per uno sketch così piccolo siano così lunghi?
da quando clicco upload a quando appare "done" passano quasi due minuti.
E' il tempo standard?

Nel weekend inizio a sperimentare con i componenti.
Se c'è qualcuno interessato alla vecchia discussione sull'eth shield originale o meno dico che, pur avendo ordinato quella di robot italy, non ho ricevuto la shield mostrata in foto, ma quella classica dello store arduino con le serigrafie abituali ed il packaging standard. Ne sono, inutile dirlo, molto contenta.
Inoltre sono rimasta molto soddisfatta di robotitaly, consegna velocissima e prezzi abbastanza adeguati :slight_smile:

Usi Windows?
Ho notato che Windows mi pare che abbia una strana latenza, sembra quasi che il compilatore impieghi parecchi secondi prima di iniziare la compilazione dello sketch.
La velocità di upload della 2009 è di 57600 baud, la metà di quella dell'Arduino UNO ma per sketch di 1/2 kB come il Blink la differenza è minima, io credo più al problema su esposto.

Si, windows xp.
Come risolvo il "problema"?

Ho visto lo stesso difetto su un'altra installazione di Win'XP. Non so se è insito nel sistema, bisognerebbe avere altre conferme.
Cmq 2 minuti mi paiono tanti. Ma che computer hai?

Un banalissimo dual core e1200 (desktop) con 3 giga di ram, dovrebbe essere più che adeguato al compito :
2 minuti sono tantini si, soprattutto quando bisogna fare molte prove. Diventa più il tempo per l'upload che quello a scrivere il codice...
Non ci sono soluzioni?

cavolo mi stavo quasi lamentando io che con 200 Kbyte di sketch circa ci metto 20 secondi ... allora mi consolo :slight_smile:
win xp

ciao

pablos71:
cavolo mi stavo quasi lamentando io che con 200 Kbyte di sketch circa ci metto 20 secondi ... allora mi consolo :slight_smile:
win xp

ciao

200 kB? Forse 20 :wink:

Cmq io sto peggio di te! Il firmware della mia stazione meteo passa i 25 kB e con la tecnica dell'ArduinoISP la velocità è limitata a 19200 baud, il che si traduce in un tempo di programmazione "REALE" (cioè proprio della trasmissione dei dati misurata in base ai lampeggi dei led RX/TX) in più di 1 minuto!!! :astonished:

200k su 258k sono quasi a tappo :slight_smile:

Forse risolto.
Ho visto che il compilatore usa java... così ho dato una ripulita all'installazione java sul mio pc. Ovvero ho disinstallato.
Ora la compilazione + l'upload, per lo sketch blink, prende 24 secondi.
Solo compilazione... 24 secondi comunque :slight_smile:

E' un tempo nella media, oppure devo vedere come migliorare ancora ?

pablos71:
200k su 258k sono quasi a tappo :slight_smile:

Ma tu hai la Mega?

@Daniela:
mi pare tanto lo stesso per compilare il blink. Non vorrei dipendesse proprio da XP.

si SDK mega, devo fare dei tagli a sto sketch.... chiamerò Monti :slight_smile:

ciao

io ho un codice che occupa quasi tutto il 328, ma compilazione + upload in totale non porta via più di 20 secondi, solo compilazione 5-8 secondi

leo72:
mi pare tanto lo stesso per compilare il blink. Non vorrei dipendesse proprio da XP.

XP, o 7, non c'entra nulla, a me il blink lo compila in meno di 3 secondi con tutti e due i S.O., poi ci vogliono altri 2-3 secondi per caricarlo su Arduino.
Mi ricordo che questa cosa della compilazione lenta era venuta fuori anche sul vecchio forum ed era stato scoperto il motivo e risolta, però non mi ricordo ne da cosa dipendeva e tanto meno la soluzione.

DanielaES:
Solo compilazione... 24 secondi comunque :slight_smile:

E' un tempo nella media, oppure devo vedere come migliorare ancora ?

:astonished: Sono tanti lo stesso! Se mi ci volessero 24 secondi per caricare lo sketch con tutti i ritocchi e ri-flash che faccio starei ancora caricando il blink su arduino. Anche io ho XP e rimango sui tempi di Astrobeed.

DevonMiles:

DanielaES:
Solo compilazione... 24 secondi comunque :slight_smile:

E' un tempo nella media, oppure devo vedere come migliorare ancora ?

:astonished: Sono tanti lo stesso! Se mi ci volessero 24 secondi per caricare lo sketch con tutti i ritocchi e ri-flash che faccio starei ancora caricando il blink su arduino. Anche io ho XP e rimango sui tempi di Astrobeed.

A me ultimamente si sta piantando.. tipo.. 20 secondi per compilare ed uppare 18000 byte ma credo di essere ancora dentro a tempistiche ragionevoli...

Boh. Non so, sono aperta a qualsiasi suggerimento.
Nel weekend proverò queste opzioni:
Aggiornare all'ultima java.
Applicare questo fix [Guide] Fix Arduino IDE slowdown in Windows
Quest'ultima cosa non dovrebbe cambiare molto, riguardando i rallentamenti nell'apertura del programma e nei menu... però tentar non nuoce.

Se vi viene in mente qualcosa... son qui :slight_smile:

NB: antivirus e firewall sono disabilitati quando compilo.

proviamo prima di tutto ad isolare il problema.

bisogna editare il file preferences.txt (da arduino ide chiuso) e aggiungere le righe

build.verbose=true
e
upload.verbose=true

il file lo trovate quì: http://arduino.cc/en/Hacking/Preferences
e altre info le trovate quì: Redirecting

e provare a ripodurre i comandi a mano nel terminale, per vedere se il rallentamento deriva dal compilatore, avr-dude, o dall'IDE (java)

fatemi sapere!

astrobeed:
a me il blink lo compila in meno di 3 secondi con tutti e due i S.O., poi ci vogliono altri 2-3 secondi per caricarlo su Arduino.

Risolto! :slight_smile:
Nel mio caso il problema era Online Armour.
Non era sufficiente disabilitare firewall e protezione programmi, rimanevano dei servizi attivi che rallentavano l'arduino (come e perché non lo so).
Chiuso e spento totalmente OA, la compilazione e l'upload del blink avviene in 5 - 6 secondi.
Per ora come firewall uso COMODO che non sembra creare interferenze.

BTW funziona!
Ho collegato i miei primi sensori, scritto (scopiazzando) il mio primo sketch... e va tutto :slight_smile:
Ho diverse domande però, pratiche e non.
Le pratiche le destino ad un altro post, scrivo qui le teoriche.

Per lo schetch sono andata... ad occhio.
Non sapevo bene cosa stavo scrivendo, mi sono basata sull'intuito /se questo è così, forse devo fare così /.
Sono stata fortunata, tutto funziona ma non ho la presunzione di pensare di riuscire a completare il mio progetto andando ad intuito.
Avete quindi link a guide pdf od altro, che illustrino la sintassi ed il linguaggio di programmazione?
Tutorial per i miei specifici bisogni ne ho molti, ho visto che ci sono un paio di libri cartacei ma volevo iniziare a leggere già in settimana e non ho tempo di fare un salto in libreria.
Mi piacerebbe assai una bella guida sulla programmazione in arduino, suggerimenti? Anche in pm volendo.

Cmq, do il mio primo contributo al forum.
Segue codice per leggere due sensori DHT-22 (dht22). Cercando in rete non c'è, magari può essere utile a chi come me inizia :slight_smile:
Basato sul tutorial di ladyada e relative librerie.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN_out 2 // what pin we're connected to
#define DHTPIN_in 3 // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE_in DHT22 // DHT 22 (AM2302)
#define DHTTYPE_out DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht_in (DHTPIN_in, DHTTYPE_in);
DHT dht_out (DHTPIN_out, DHTTYPE_out);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht_in.begin();
dht_out.begin();
}

void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float hin = dht_in.readHumidity();
float tin = dht_in.readTemperature();
float hout = dht_out.readHumidity();
float tout = dht_out.readTemperature();

// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(tin) || isnan(hin)|| isnan(tout)|| isnan(hout)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity in: ");
Serial.print(hin);
Serial.print(" %\t");
Serial.print("Temperature in: ");
Serial.print(tin);
Serial.println(" *C");
Serial.print("Humidity out: ");
Serial.print(hout);
Serial.print(" %\t");
Serial.print("Temperature out: ");
Serial.print(tout);
Serial.println(" *C");
delay(5000);
}
}

leggi pure quì.. Arduino Playground - HomePage
noto con (dis)piacere che il tuo codice utilizza delle librerie C++, ovvero "gli oggetti", cosa che non è inclusa in quella quida... per ora ti basti sapere che è un pò come usare delle librerie, ma non è proprio così... se vuoi approfondire: http://programmazione.html.it/guide/leggi/34/guida-c/

le classi che staiu usando sono:

DHT dht_in (DHTPIN_in, DHTTYPE_in);
DHT dht_out (DHTPIN_out, DHTTYPE_out);

ps. gli antivirus spesso hanno una opzione in cui puoi dirgli di NON controllare alcune cartelle... di solito si usa per i giochi, ma anche la cartella arduino può essere considerata "sicura"

Mannaggia a te lesto :wink:
Leggerò. Btw il reference l'avevo già messo nei preferiti.
Cmq ho trovato qualche guida in pdf che, per certi versi, mi è stata più utile.
Spiegava con parole semplici cos'è il #define i void.setup e void.loop.
Ad esempio con il reference ed i tuoi link ancora non ho una definizione ufficiale del dht_in.begin();
Mi immagino sia "inizializza le classi per il dht_in" o qualcosa di simile.

Cmq, domanda scema:
ma il codice che ho scritto sopra è giusto? un codice sbagliato può superare il verify ed essere uploadato ed apparentemente funzionare?
Notavo che io non leggo il valore del sensore ma faccio solo un serial print. Forse è una questione di lana caprina ma mi sembrano questioni diverse.
Mi pare di capire che il sensore venga letto costantemente ( // Reading temperature or humidity takes about 250 milliseconds! ) ed, in base al mio delay, vengano mostrati i valori.
E' giusto questo modo di operare? O bisognerebbe muoversi:
leggendo i valori ogni tot secondi, caricando i valori in una variabile, mostrando la variabile.
Cosa che comunque non saprei fare per ora, però chiedo :slight_smile: