Show Posts
Pages: 1 ... 497 498 [499] 500 501 ... 738
7471  International / Generale / Re: Problema alimentazione arduino stazione meteorologica on: November 28, 2011, 01:10:00 pm
la via più facile è staccare la corrente: se usi un transistor NPN (ma quà qualcuno mi corregga se dico baggianate), metti l'entrata a 5v o 3v (dipende a quanto va alimentato il sensore), il comando su un pin arduino, e l'uscita al sensore.

Il transistor si comporta da interruttore: quindi passa corrente SOLO quando il pin di arduino è HIGH (il contrario con un transistor PNP, che però vuol dire che per spegnere il sensore devi consumare corrente per tenere il pin di arduino su HIGH)

l'arduino invece è un poco più complicato, io non l'ho mai fatto, ma so che può essere messo a dormire fichè non arriva un segnale su di un suo PIN: e questo segnale è l'allarme dell'RTC, che puio impostare da arduino ogni tot.

in pratica:
SETUP:
1. avvio arduino
2. setti la sveglia
3. spegni i sensori
4. sleep di arduino

LOOP:
5. passa il tempo
6. suona la sveglia
7. accendi i sensori
8. fai le letture e le salvi
9. risetti la sveglia (se necessario, ovvero non è in auto-ripetizione ogni tot)
10. torni a dormire e ricominci dal punto 5

Questo funziona solo se il tuo RTC supporta la modalità "sveglia"

in oltre arduino consuma di meno se lo fai funzionare più lentamente: puoi togliere il clock esterno, e usare quello interno da 8MHz, o addirittura abbassarlo se non erro fino ad 1MHz.
Ovviamente questa operazione funziona solo se non usi un arduino, ma se ti stai facendo il circuito da solo.
7472  International / Generale / Re: Problema alimentazione arduino stazione meteorologica on: November 28, 2011, 12:27:32 pm
a parte il sensore metano, che abiamo detto consuma un sacco, grazie all'RTC e con un poco di pratica puoi mettere in sleep tutti i sensori + arduino, finhè non scatta l'allarme dell'RTC (la sveglia!), arduino se ne accorge, si sveglia, sveglia i sensori, logga tutto, e torna a dormire.

se immaginiamo che fai una sola lettura del carbonio all'ora, anzichè usare il sensore 24H su 24H, riduci di molto il suo consumo! (usa un transistor per dealimentare correttamente i sensori, meglio un NPN, in modo che per spegnerli spegni il pin in uscita di arduino, risparmiando pure su quello!)

x l'ethernet shield mi pare una spesa inutile... se porti in giro l'arduino, tanto vale scaricare i dati via USB...

su internet ci sono molti negozi, RS-online è anche in italia ed è un grosso distributore di componenti, però tipo gli arduino non li ha, ha gli atmega da cui puoi fare uno stand-alone.
2 negozi al 100% italiani sono robot-italy e gioblu
7473  International / Generale / Re: puntatori a funzioni on: November 28, 2011, 11:48:36 am
Ciao ragazzi, stò cercando una piccola info, su arduino esistono i puntatori a funzione ? perchè sto creando una piccola libreria per arduino e mi servirebbe sapere se l'utente ha implementato o meno alcune funzioni.
Grazie!

scusa, ma non risparmieresti un sacco di grattacapi usando le classi?
7474  International / Megatopic / Re: swRTC on: November 27, 2011, 07:43:24 pm
@aventrax: giusto per farti felice (e insegnarti qualcosa di nuovo):
Code:
if (rtc.getMonth() < 10) { Serial.print((String("0") + String(rtc.getMonth(), DEC))); }
  else { Serial.print(rtc.getMonth(),DEC) ;}

diventa:

Code:
rtc.getMonth() < 10 ? Serial.print("0");
Serial.print(rtc.getMonth(),DEC) ;

come ci sono arrivato(ovvero il trucco del mestiere)?
passaggio N1: ottimizziamo... String(rtc.getMonth(), DEC) la devi eseguire sia che l'if sia vero che sia falso... quindi va fuori dall'IF così lo scrivi una volta sola... quindi diventa:
(notare che rimanendo String("0") da sola, quindi senza il bisogno di essere concatenata con un altra stringa, si può evitare... In oltre è buona cosa identare il codice.
Code:
if (rtc.getMonth() < 10) {
    Serial.print("0");
}
Serial.print(rtc.getMonth()) ;

Passaggio N2:
un if che deve eseguire una sola istruzione, e quindi non necessita di {}, per esempio:
Code:
if (a==b)
  faiC();
else
  faiD();

più essere scritto:
Code:
a==b?faiC():faiD();

ovviamente non avevamo bisogno dell'else (i due punti) e quindi l'ho omesso nel codice, esattamente come un if normale. CREDO che si possano usare le parentesi graffe lo stesso con questa tipologia di if, ma l'uso lo sconsinglio per una questione di leggibilità: un else è facile da trovare, un : no.
7475  International / Generale / Re: Arduino ethernet problemi on: November 26, 2011, 08:52:15 am
anche il fatto che la eth prenda vita se collegata al pc mi sembra strano.... alchune schede di rete moderne possono switchare internamente i 2 piedini dei cavi ethernet, in modo che di fatto non gli servano i cavi incrociati... e non credo che questo l'arduino lo passa fare. Controlla bene i cavi, il fatto che funzionino bene col PC non esclude che siano cross, e che su arduino non funzionino.

anche l'alimentazione va fatta seriamente, come dicevano prima usa un alimentatore da almeno 1A, così andiamo sul sicuro.

Infine prova le porte del router col PC, soprattutto se sono router marchiati dalle compagnie telefoniche, alcune funzionalità vengono escluse, altra fonte di problemi.

Infine devi considerare che se hai fastweb, è un poco più difficile impostare la rete, perchè hai un IP per ogni porta fisica... meglio andare di DHCP per evitare casini.
7476  Community / Bar Sport / Re: [OT EX TREME :D] Lo spamm bar on: November 26, 2011, 08:44:20 am
Ho un problema...

Allora... vediamo se riesco a spiegarlo... antani come se fosse la supercazzola dell'ISP ha ruotato a destra il microchip che ha perso i contatti con la sbiriguda del piedino anfetaminico di messa a massa del telaio anafilattico senza profilassi dentale su Vcc.
soluzione:
siringona di adrenalina diretta nel cuore...
7477  International / Generale / Re: info sulla teoria di funzionamento del ricv IR on: November 26, 2011, 08:02:10 am
scrivere

Code:
#define B 1
#define D 1
#define F 1

vuol dire che da ora in poi nel codice ogni D, F e B saranno sostituite con un 1.... Non è assolutamente quello che ti serve!

il codice
Code:
if((results.value, HEX) == B)
    if((results.value, HEX) == F)
    if((results.value, HEX) == D){
    digitalWrite(13,HIGH);
    }

per essere corretto deve essere:
Code:
if((results.value, HEX) == 'B')
    if((results.value, HEX) == 'F')
    if((results.value, HEX) == 'D'){
    digitalWrite(13,HIGH);
    }

notare l'apice singolo: vuol dire che quei B F e D vanno considerati come lettera (UNA sola lettera) e non come variabile. ovviamente i #define dovrai toglierli, oppure rischi che quando compili tutte le lettere B D e F vengano sostituite da 1 e poi è ovvio che il tuo codice non funzioni....
però questo funziona solo le results.value() restituisce un carattere alla volta, se inveece te li da tutti insieme la cosa si complica un poco.
7478  International / Generale / Re: info sulla teoria di funzionamento del ricv IR on: November 25, 2011, 01:52:05 pm
la prima domanda: questi dati stampati sono frutto della codifica operata dalla libreria e si possono già usare come elementi di comparazione in uno sketch con l'operatore if per esempio?
sì, come qualsiasi dato del C

se si, come si usano nell'operatore if per dirgli di comparare non un numero ma una stringa alfanumerica?
semplice, metti l'if in un ciclo e testi ogni singola lettera... poi ovvio che esiste una funziona già fatta in C nella libreria string.h ed è la strcmp, oppure l'OGGETTO String.h di arduino possiede il metodo compare()....





[/quote]
7479  International / Generale / Re: Forum lento on: November 25, 2011, 12:00:45 pm
riquito, complimenti per l'analisi
7480  International / Generale / Re: Arduino ethernet problemi on: November 25, 2011, 11:51:26 am
ok, allora un'altra prova: alcune USB non erogano abbastanza miliampere per reggere lo shield, prova ad alimetare arsuino con un alimentatore esterno!
7481  International / Generale / Re: Si possono usare i pin 0 1 (rx e tx)? on: November 25, 2011, 11:48:46 am
o anche creando due RX TX virtuali con newSoftSerial, così puoi usare 2 pin a piacimento. con i2c devi usare i 2 pin SCL e SDA, ma la comunicazione è molto più veloce
7482  International / Generale / Re: microcontrollore con meno pic on: November 24, 2011, 07:15:38 pm
ma senza reset poi come puoi ricaricare uno sketch? bisogna prima rifleshare i fuse? e basta il classico metodo o il non avere un reset incasina un pò e servono metodi particolari?
7483  International / Generale / Re: Arduino ethernet problemi on: November 24, 2011, 07:12:31 pm
Non usare uno sketch server, che probabilmente quello che ti blocca sonop firewall e nat, ma prova con uno script client, tipo questo:
Quote
/*
  Web client
 
 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 18 Dec 2009
 by David A. Mellis
 
 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,177 };
byte server[] = { 173,194,33,104 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
  // start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;smiley-wink
      ;
  }
}


ovviamente IP e GATEWAY vanno modificai per le tue esigenze... in teoria nella serial monitor dovrebbe arrivati "connected", poi l'header+l'html della pagina principale di google. Essere client vuol dire sorpassare senza problemi le NAT e i firewall che normalmente son presenti nei router.
7484  International / Generale / Re: Si possono usare i pin 0 1 (rx e tx)? on: November 24, 2011, 07:00:52 pm
...
Si potrebbe far comunicare i due arduino incrociando RX TX dell'USB si avrebbe lo stesso effetto?
No, non fuziona con USB. l'USb funziona in modo diverso e non puoi collegare 2 dispositivi USB Slave come sono gli Arduini.

hai ragione, errore mio
7485  International / Generale / Re: driver arduino UNO, win XP e 7 on: November 24, 2011, 06:00:14 pm
la procedura che hai scritto è esattamente quella che ho descritto...
Pages: 1 ... 497 498 [499] 500 501 ... 738