Show Posts
Pages: [1] 2 3 ... 183
1  International / Software / Re: come "uscire" da una void una variabile?? on: Today at 12:42:32 pm
Oppure la rendi pubblica.

maaaaa...il titolo come "uscire" da una void una variabile? equivale a "escimi la bambina che la gioco"?  smiley-grin smiley-grin smiley-grin
2  International / Software / Re: Websocket [ci siamo quasi] on: April 15, 2014, 08:17:25 am
Quote
chiariscimi cosa vuoi fare.
Niente di particolare, ho solo comunicato che è stato implementato l'"ambaradan"  smiley-lol anche sugli smartphone. A me serviva vedere arduino da browser in real-time e non in modalità polling che spreca risorse, per me l'obbiettivo è raggiunto, era diventata solo una questione d'onore ahahahahahahha  
Se hai qualche idea di impiego e migliore d'utilizzo di questo protocollo proponi pure, pare comunque che l'argomento interessi poco .... è stato letto 7700 volte, ma nessuno ha partecipato attivamente tranne (si può dire) noi 2.

Quote
Non troppo tempo fa ho rilasciato un parser HTTP ... cosa che nessun webserver arduino fa che io sappia
per visualizzare la request è sufficiente stampare il classico char c = client.read(); che troviamo in tutti gli esempi, una libreria che fa il parsing  l'abbiamo sempre avuta è la tinywebserver.cpp che +/- fa quello che hai fatto tu distingue il GET-POST-PUT il tipo di file richiesto  HTM-TXT-CSS-XML-JS-GIF-JPG-PNG-ICO-MP3 preparando la risposta adeguata, il DELETE mi manca però smiley
Senza quella lib non sarei arrivato a fare un websoket con download e upload di file sulla SD, tra le atre cose è l'unica che mi ha chiarito quale è il problema di instabilità della ethernet shield .... questo Ovidiu Predescu's aveva le idee chiare smiley

Quote
volendo potresti usare un browser via seriale
che intendi?

ciao




3  International / Software / Re: Websocket [ci siamo quasi] on: April 15, 2014, 03:16:41 am
 Grazie per il link molto interessante smiley
Ma il problema non era lato client era su arduino, lo script che va messo sull'html per aprire la connessione tipo websocket sono meno di 10 righe mi sembra di averlo messo post indietro.
Per quanto riguarda le connessioni multiple per un micro così piccolo è assurdo quindi ho deciso di limitarlo a solo 1 connessione max, risolvo anche il problema autenticazione digest, nessun altro si può connettere se un client è connesso. Al massimo posso creare un codice master che tramite una request sulla 80 può disconnettere l'utente connesso sul sock 1 e prendere io il comando, ma questi sono dettagli che portano via tempo e voglia.
sock 0 su porta 80 [load pagine html]
sock 1 su porta 9990  [scambio dati websocket]
sock 2 su porta 8888 [server NTP]
sock 3 chiuso

Se tu intendi realizzare una rete lan tra arduini che comunicano tra loro tramite websocket senza caricare pagine html  ... bhe è tutta un altra faccenda che si potrebbe vedere.
Qui bisogna valutare cosa vogliamo fare di definitivo con questo sistema  smiley-lol
ciao
4  International / Software / Re: Websocket [ci siamo quasi] on: April 14, 2014, 04:12:53 pm
Rieccomi ... ho ripreso dopo 9 mesi circa il progetto socket che avevo interrotto poichè senza funzionalità sugli smartphone non sapevo che farmene, avevo perso lo stimolo di continuare  smiley-sweat
Ricaricando i vecchi sketch e testandoli su android ora girano, mentre prima ottenevo "funzione socket non supportata" ora funziona bene, le nuove versioni lo hanno implementato.
Bene per un minuto circa  smiley-roll-blue, poi l'eccessiva velocità del traffico la velocità di visualizzazione va diminuendo fino a inchiodare gli smartphone, cosa che su pc non accade (dovrei risolvere riducendo o eliminando i char memorizzati sul textbox presente sull' htm).
Considerando che un anno fa avevo aumentato la velocità del micro 2560 del 50% la cosa mi lascia perplesso visto che ora ho librerie del core originali, il problema più grosso però è che delle 3000 e più  righe di sketch, le modifiche sulle librerie w5100, ethernet, client, server e il core di arduino che avevo fatto non le comprendo più.
Comunque quello che volevo dire è che ora ... [dico a te Lesto ahahahahahha] possiamo riprendere l'argomento  smiley-grin smiley-grin ... il mio IP è sempre quello di un anno fa, tieniti pronto per i test  smiley-grin smiley-grin.....

ciao ciao
 
5  International / Software / Re: termometro lcd lm35 on: April 14, 2014, 07:42:31 am
Prova mettendo solo LM35 senza display e senza led nelle altre uscite con questo sketch e verifica i valori se sono ancora sballati nel serial monitor, solo 1 LM35 poichè con 2 analog già complichi le cose

Code:
void setup(){
  delay(1000);
  Serial.begin(9600);
}

void loop(){
   double temp = 0; //Variabile in cui verrà memorizzata la temperatura rilevata
   for(byte i=0; i<10; i++) //Esegue l'istruzione successiva 5 volte
    temp += (analogRead(A0)  / 9.31); //Calcola la temperatura e la somma alla variabile 'temp'
    temp = temp/10; //Calcola la media matematica dei  valori di temperatura
     Serial.println(temp);
    delay(1000);
}  

oltre tutto nel tuo sketch non vedo un azzeramento di temp  all'uscita del ciclo, in pratica continua a fare somme e medie su valori dei cicli precedenti
6  International / Software / Re: problema gestione pulsante on: April 13, 2014, 09:12:13 am
E' veramente difficile comprendere quello che scrivi ..... quando esce un dizionario spiddese1-Italiano faccelo avere  smiley-lol smiley-lol smiley-lol
Ti consiglio di :
1) usare i tutorial per cose elementari, li  trovi molte info
2) cercare nelle pagine del forum prima di chiedere,
3) cerca su google anche li trovi molte info
4) postare uno schemino di quello che hai o quello che vorresti avere
5) partecipare alle discussioni, poichè una volta fatta la domanda tu sparisci e non sappiamo nemmeno se le risposte le hai lette

http://arduino.cc/en/Tutorial/HomePage

http://arduino.cc/en/Tutorial/ButtonStateChange
http://arduino.cc/en/Tutorial/Debounce
http://arduino.cc/en/Tutorial/Button

ciao
7  International / Hardware / Re: Stanza domotica on: April 12, 2014, 02:56:02 pm
anche la 380-400v AC è considerata bassa tensione, 10-15Kv sono media tensione 300-380kv è alta tensione

Quote
Personalmente ritengo alta tensione qualsiasi V che mi faccia andare al creatore
anche una batteria di un camion a 24v se presa bene in determinate circostanze può mandarti al creatore,  in ogni caso è molto dolorosa , oggi è veramente difficile morire con una sberla su 220v e 380v sono ancora qui  smiley-eek, però assicurati di essere in buona e sana costituzione  smiley .... contrariamente se un dentista possiede macchine non adeguate si può morire anche con pochi mV durante un intervento chirurgico.

Tornando all'argomento, il sistema di Brunello che crea un deviatore con relè a uno scabio è valido e funzionante, ma ha il difetto che mescola meccanicamente un controllo manuale all'automatico che obbliga a lasciare un relè alimentato per tenere spenta una lampada se è stato azionato il deviatore manuale (a muro), in secondo luogo quel circuito non può possedere un contatto ausiliario che ti consenta di sapere se la lampada è accesa o spenta.
Ti consiglio di convertire l'impianto togliendo interruttori deviatori o invertitori con sistema passo-passo+ausiliario, esistono da poco anche dispositivi modulari con batteria che hanno durata di diversi anni applicabili a qualsiasi frutto di serie civile in commercio, puoi creare tutti i pulsanti che vuoi senza filo.
Utilizza un protocollo 485, ormai tutto gira su 2-4 fili

ciao
8  International / Software / Re: Controllare Arduino Mega con Ethernet Shield tramite comando o link diretto on: April 08, 2014, 11:56:45 am
Ma questa non è una sezione ita?
9  International / Software / Re: String troppo "lunga" on: April 06, 2014, 02:47:06 pm
Vorrei anche aggiungere che per mandare lo status di 8 porte puoi inviare direttamente il byte leggendolo dal registro del micro e poi lo scomponi sullo script della pagina web che ha un processore molto più potente es. send (String)DDRA
Elimina i prefissi A0= .. A1= .. manda solo i valori usando dei semplici separatori, elimina parentesi e = riduci ArduID con solo ID, ArduIP con solo IP, postCod con PC e CtrlCod con CC rivedendola tutta la tua stringa diventa lunga 1/4 di quella che hai.

Anche se hai risolto tieni conto che le connessioni verso gli smartphone sono limitate poi si paga la differenza, è sempre buona norma inviare il minor numero di dati possibile. Magari oggi non ti serve una connessione tramite cell, ma domani dovrai rifarlo tutto.

ciao

10  International / Software / Re: EEPROM inizializzazione on: April 05, 2014, 02:10:24 pm
si ho dimenticato un diviso 60 ... ero un po' turbato dal risultato, mi pareva un po' troppo 2 mesi smiley ... vabbè il concetto è quello  smiley-lol

 
11  International / Software / Re: EEPROM inizializzazione on: April 05, 2014, 10:20:29 am
Quote
salvare al suo interno dei valori durante il funzionamento in modo tale che all'accensione successiva tutto possa ripartire da un valore noto.
Ma nessuno ha chiesto ogni quanto tempo scrive su queste celle? ... usa la eeprom come backup in tempo reale o quasi .... pare di capire ......   smiley-sweat

Rebel, la eeprom non è fatta per salvare su di essa in modo continuato . Scrivendo una volta al secondo ti dura +/- 2 mesi poi dovrai rinunciare a quelle celle e cambiare indirizzo.
ciao
12  International / Software / Re: String troppo "lunga" on: April 04, 2014, 07:16:32 am
Ci faresti vedere come prepari quella stringa prima di inviarla?

La ethernet è come la seriale, il send invia un char alla volta in modo seriale, il problema è che prepari una stringa troppo lunga ma dipende anche da quanto spazio hai in memoria in quel momento, magari ottimizzando lo sketch nelle varie parti recuperi spazio.

Nessuno ti impedisce di spezzare la stringona in 2 parti o 3-4... tipo:

aggiungo un indice identificativo es CtrlCod+="A&";
Preparo la stringa aggiungendo gli altri dati
invio CtrlCod+=#####&ArduId=##&ArduIP=###.###.###.###
svuoto la stringa CtrlCod

aggiungo un indice identificativo es CtrlCod+="B&";
Preparo la stringa aggiungendo gli altri dati
invio CtrlCod+=a0=###&a1=###&a2=###...d7=#&d8=#&d9=#
svuoto la stringa CtrlCod

A& e B& identificano il tipo di dati che stai mandando così il tuo programma che riceve può fare un salto ad un altra funzione
il programma che riceve dovrà essere un po' modificato, ma non è difficile, però dirti dove è il problema senza vedere niente resta sempre un incognita.

ciao

13  International / Software / Re: Problema SD.begin per datalogger on: April 01, 2014, 01:43:42 pm
la tua domanda
Quote
La mia domanda era proprio perchè, pur essendo presente la SD, la funzione SD.begin non ritorni TRUE e il programma avanzi regolarmente con il loop?
ti ho spiegato perchè la scheda sd non funziona più nel post precedente una volta che l'hai tolta devi rifare la procedura di inizializzazione quando la rimetti ..... sta a te fare in modo che arduino si accorga della sua assenza o presenza .... e' importante che non venga estratta mentre scrive ovvero con file.open in write rovini il file system e devi riformattarla, se sta leggendo poco importa.

Quote
può succedere che una funzione giri in un programma e nn in un altro?(per esempio per possibili incompatibilità tra librerie o altre funzioni...
si, può succedere che 2 librerie siano state create da due utenti diversi per due scopi ben diversi, poi arriva un terzo utente che nel suo progetto le vuole usare entrambe e nasce il problema, ad esempio la libreria <IRremote.h> non va daccordo con <RTC.h> semplicemente perchè entrambe usano lo stesso timer, ci si arma di pazienza e si vanno a modificare per farle coesistere.
Io non so dirti se quella sfilza di librerie che usi hanno qualche conflitto tra loro, il tuo post era rivolto ad un problema con la SD.

Puoi anche non stavolgere il tuo lavoro ignorando le porzioni di codice che ho scritto prima, ricordati solo di fare in modo che quando arduino non vede più la SD di fargli fare tutta la procedura di inizializzazione come se facessi un reset della scheda.
Per completezza ti ricordo che la funzione Setup() viene eseguita una sola volta all'avvio di arduino in modo automatico, mentre il loop() è un ciclo infinito tutte le altre funzioni raccolte tra parentesi graffe vengono richiamate dal tuo sketch

Ps non darci del Lei ci fai sentire vecchi ahahahahhahaha

ciao
14  International / Software / Re: Problema SD.begin per datalogger on: April 01, 2014, 11:52:27 am
Hai ragione avevi detto che è il pin 10  smiley-grin , non conosco quella scheda, se lo confermi tu va benissimo.
Ho confuso il tuo post con un conflitto eth e sd ... sorry

Mi sono picchiato molto con la sd su letture e scritture quindi ti passo qualche pezzo che puoi testare
Io farei così:
innanzi tutto metterei il pin 10 in HIGH nel setup e Inizializzerei la scheda con altre istruzioni le quali non mi hanno  mai dato problemi

Code:
#include <SPI.h>
#include <SD.h>

#define DEBUG_SD 1  // 0 per non stampare i debug
unsigned long previousMillis_f = 0;    
byte err_sd=1;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;

void setup()
{
  delay(1000);
  Serial.begin(9600);//debug
  
  pinMode(10, OUTPUT);
  digitalWrite(10, 1);
  sd_init();
}

creati una funzione di inizializzazione della SD contenente le istruzioni separata dal setup, perchè avrai la possibilità di richiamarla quando ti serve. Ad esempio quando arduino è in running ed estrai la SD al suo reinserimento la SD non risponde più e sei costretto a resettare per tornare ad avviare il setup e inizializzare.

Code:
void sd_init()
{  
  err_sd=0;
  if (!card.init(SPI_FULL_SPEED, 10)) err_sd=1; // <<<<<< pin 10 nel tuo caso
  if (!volume.init(&card)) err_sd=1;
  if (!root.openRoot(&volume)) err_sd=1;
  
  #if DEBUG_SD
  if (err_sd==0)
  Serial.println("inizializzazione SD completata.");//debug  
  else //debug
  Serial.println("inizializzazione SD fallita.");//debug
  #endif
}  

Qui puoi ottenere 3 tipi di errore sulla sd uno dei 3 è proprio la presenza della SD nello slot non mi ricodo quale però

ora non ti resta che aggiungere nel loop un po' di controlli con un millis() ogni tot (ad esempio 500 ms) se la scheda è presente
esempio:
Code:

void loop()
{
   if(millis() - previousMillis_f > 500)  {  
        previousMillis_f = millis();
        verify_sd();
  }    
 }


void verify_sd()
{  
  if (!volume.init(&card))
  {
    #if DEBUG_SD
     Serial.print("ERRORE SD Card. Ripristino in corso ...");
    #endif
     digitalWrite(5,1); //led errore acceso
     err_sd=1;
     file.close();
     root.close();
     sd_init();  // qui tento l'inizializzazione, perchè se l'hai estratta dovrà essere ripristinato (ti evita il reset)
   }
     else
     {
      
       digitalWrite(5,0); //led errore spento
       err_sd=0;
     }
}

istruzione per leggere il file
Code:
if(file.open(&root, "miofile.ini", O_READ)) 
  {

istruzione per scrivere su file
Code:
file.open(&root, "miofile.ini", O_TRUNC | O_WRITE);

hai una variabile di controllo err_sd pubblica, quindi la puoi usare per bloccare i processi se ti serve in caso di errore
Questi sono i passi che avevo fatto e funzionanti, spero di non aver dimenticato nulla

ciao
15  International / Software / Re: Problema SD.begin per datalogger on: March 31, 2014, 05:33:22 pm
Quote
const int chipSelect = 10; //per la SD
no, il 10 è dedicato all'ethernet (W5100), il 4 è l'SD ti rinvio a questa discussione hai lo stesso problema
http://forum.arduino.cc/index.php?topic=229852.0

ciao
Pages: [1] 2 3 ... 183