Show Posts
Pages: 1 [2] 3 4 ... 20
16  International / Software / Aiuto con concatenazione char* on: November 09, 2012, 04:59:31 pm
ciao a tutti, non riesco a risolvere un problema, premetto che devo lavorare con array di char e quindi non posso usare String.

Ho una funzione che deve creare una stringa con degli spazi prima della stringa che leggo, in poche parole:

-chiamo la funzione
-la funzione legge la stringa che mi interessa.
-in base a questa stringa devo leggere calcolare quanti spazi devo mettergli prima
-conosciuti gli spazi, penso dovrei creare un'altra stringa contenente gli spazi
-concatenare gli spazi con la stringa letta...

Riesco a leggere la stringa che mi interessa dall'array, calcolo senza problemi il numero di spazi che devo mettergli prima, ma ho problemi nel creare la stringa di spazi e poi concatenarla, la funzione deve ritornare un char*

Ho provato a creare la stringa di spazi in questo modo:

Code:
char spaces_string[10];
char spazio = ' ';
for(int x=0; x<spaces; x++)
{  
spaces_string[x] = spazio;
}

Penso sia giusto in questo modo, poi ho provato a concatenare con strcat ma penso ci siano problemi con il terminatore in spaces_string.  smiley-roll-blue

Grazie


EDIT: Ho appena provato ad aggiungere il terminatore '\0' in questo modo:

Code:
spaces_string[spaces] = '\0';

Sembra funzioni smiley
17  International / Software / Re: leOS, pauseTask e restartTask! on: November 07, 2012, 01:34:31 pm
Ok, inizio a leggermi qualcosa, praticamente dovrei utilizzare quella libreria per creare i 38Khz tipo come avevi detto tu in un'altro topic:

"Ora, con la modalità FastPWM con tetto impostato da OCR2A la frequenza che si ottiene è data dalla formula:
Fpwm = Fclk / (prescaler * (max_val + 1)) / 2
La divisione per 2 è motivata dal fatto che in modalità FastPWM il canale A è cambiato di stato alternativamente per ottenere un duty cicle del 50%.

Sostituendo a max_val il valore di OCR2A+1, che è 212, abbiamo:
Fpwm = 16000000 / ( 1 * 212) = 37736 Hz"

..credo..smiley
18  International / Software / Re: leOS, pauseTask e restartTask! on: November 07, 2012, 11:49:28 am
Puoi in alternativa utilizzare il timer 1 impostato per generare un segnale PWM a 38 kHz.

Attualmente per attivare i 38khz e poi disattivarli uso queste due funzuini.

Code:
void turn_on_IR ()
{
  TCCR2A = _BV(WGM21) | _BV(COM2A0); // This mode toggles output once per timer cycle
  TCCR2B = _BV(CS20);  // Do not scale the clock down - use 16 MHz timer rate.
  OCR2A = 210; // Divide sys. clock by 210, 1/2 cycle = 76 khz, 1 cycle = 38 khz
    // Output pin 11 should now be emitting a 38 khz signal.
}

void turn_off_IR ()
{
// TCCR2A = 0; // Disconnect PWM
  //TCCR2B = 0; // Stops the timer
  //OCR2A = 0;  // No timer top
  digitalWrite(irLED, LOW);  // Ensure output is off
 
}


Quindi utilizzo il timer 2 per generare i 38khz. Se volessi quindi utilizzare il timer1 come dovrei procedere per modificare le due funzioni, o meglio, a questo punto solo l'accensione visto che turnOff() spegne solo il led..
Queste funzioni aimè sono copia e incolla quindi non saprei dove mettere mani..:/

Grazie
19  International / Hardware / Re: Valvola solenoide 12v - velocità apertura/chiusura on: November 07, 2012, 11:43:57 am
Allora io intanto ho proceduto a fare qualche esperimento, come detto all'inizio mi ritrovo una valvola solenoide a 12v.
Ho quindi cercato di capire come stava la situazione se era fattibile o meno. Sono rimasto piuttosto sorpreso, in allegato potete trovare una riproduzione di quello che ho messo in piedi fino ad ora:).
Praticamente la valvola che mi ritrovo se in entrata avesse pressione sarebbe l'ideale, ma siccome io non ho modo di fare entrare liquidi in pressione, ho optato per quantità, in caduta libera maggiore è la quantità (es. di acqua) maggiore è la pressione che esercita sul solenoide. Effettivamente in questo modo, sfiorando i 12v si riescono a creare gocce.
Ovviamente, sto facendo il tutto sfiorando con la mano quindi non so quanto veloce sono io! smiley
A questo punto quindi volevo chiedere alternative nel pilotare questa valvola.
Abbiamo detto che i relè sono da escludere, effettivamente avremmo troppe sollecitazioni.
Volevo chiedere quindi, alimentando la valvola anche con una batteria a 12v, ed interrompere uno dei poli, sarebbe possibile usare un fotoaccoppiatore per creare il contatto, precisamente un 4n35? Sarebbe il caso o meglio un mosfet (tenendo sempre in considerazione che la valvola voglia alimentarla esternamente).

Spero di essermi spiegato smiley

Grazie

Ciao

Nicola
20  International / Software / Re: leOS, pauseTask e restartTask! on: November 07, 2012, 11:14:12 am
Resto in attesa anche se prima di domani sera non ti potrò rispondere - domani giornata pienissima.

Ieri non ho potuto rispondere, allora ho risolto ma il problema non stava nel "volatile".
Procedo per passi:
-Entro la prima volta nella funzione che mi interessa.
-Si avviano i task leOS e tutto va bene.
-Si attiva tra questi un'altro task che rileva la pressione del pulsante per uscire dal menu.
-alla pressione di quel pulsante viene chiamata una funzione: returnToMenu();
-chiamato returnToMenu() la prima volta funzione tutto, ma returnToMenu() fa diverse cose, arresta i task, ripristina variabili, ed in più, spegne un led ir che utilizzo per mandare un segnale. Per spegnere il led chiamo un funzione turn_off_IR() che fa questo (se ricordi bene questa funzione mi fu data in un topic dove parlammo di una barriera ir, la funzione fa questo:

Code:
void turn_off_IR ()
{
// TCCR2A = 0; // Disconnect PWM
  //TCCR2B = 0; // Stops the timer
  //OCR2A = 0;  // No timer top
  digitalWrite(irLED, LOW);  // Ensure output is off
 
}

Ora non ho debuggato tutto ma così con quelle righe commentate non si blocca più! Uso turn_off_IR() per spegnere un led ir sul pin 11 che invia un segnale a 38Khz, credo che userò comunque il metodo che mi dicesti stesso tu per fermare il segnale ir a 38Khz, che se non ricordo male era mettere il pin 11 prima in input e poi in output..

In conclusione comunque, leOS non era, ed è sempre più un divertimento usare quei task a piacimento!:)

Rinnovo quindi i miei complimenti per leOS smiley-wink
21  International / Hardware / Re: Comunicazione Arduino --> Bluetooth. Consigli? on: November 06, 2012, 02:08:40 pm
30/45 giorni  smiley


Sempre pochissimo..smiley
22  International / Hardware / Re: Comunicazione Arduino --> Bluetooth. Consigli? on: November 06, 2012, 01:10:09 pm
Ok perfetto, dai allora procedo anche io con l'acquisto di questo, inizierò con l'accensione di un led e poi vediamo se riesco ad integrarlo completamente..

una cosa, "Shenzhen, China"  smiley-roll

Quanto tempo ci ha messo ad arrivare?! smiley
23  International / Hardware / Re: Comunicazione Arduino --> Bluetooth. Consigli? on: November 06, 2012, 12:30:44 pm
la scelta del modulo non e' importante, vanno bene tutti, la grossa differenza e' su quelli rpogrammabili o meno come master o slave, ma se li compri con la funzione giusta che ti serve non ci sono problemi, per la tua idea devi prednere la versione slave, perche' Android ti fara' da Master. io sto' usando un HC-07 da 5 euro

Riepilogando quindi, sono arrivato a pagina 8 del megatopic!:) Cercavo quindi quale modulo comperare, solo che forse ho un po di confusione, io stavo pensando di utilizzare un master da collegare ad arduino, perchè altri dispositivi (smartphone) deve collegarsi ad arduino. (sbaglio no xD).

Quello che vorrei io è che si possa utilizzare il tutto o tramite lcd e pulsanti, oppure, collegando il cellulare al modulo, utilizzare il tutto tramite un'applicazione android ad esempio..

Comunque, se dovessi prendere uno slave, mi linkeresti (immagino hai preso anche tu slave) il modulo che hai comperato?
E' un'idea che mi è in venuta in mente oggi ma credo mi porterà via il doppio del tempo di quello che ho fatto fino ad ora..smiley

Grazie
24  International / Hardware / Comunicazione Arduino --> Bluetooth. Consigli? on: November 06, 2012, 09:41:28 am
Ciao a tutti, ero indeciso tra la sezione hardware e software, spero vada bene questa:)
Veniamo al dunque, ho quasi ultimato un progetto, con tanto di display lcd, sensori, relè.. Come al solito, più ci pensi, più ti vengono in mente altre cose.xD
Il progetto come detto contiene un display, con menu e pulsanti, comandi che puoi inviare, mi piacerebbe interfacciare tutto questo su una piattaforma portatile. Tipo iphone / android / pc portatile (questo per ora non mi interessa).
Quello che volevo capire è la comunicazione. volevo una cosa che non implichi connessione ad internet, quindi escluderei ethernet e moduli wifi. Rimane quindi (credo) il bluetooth.
Ora, scegliendo un bluetooth.. in una futura programmazione di applicazioni android o iphone, troverei dei limiti?
Se scelgo di interfacciare arduino al pc tramite cavo usb entra in gioco la comunicazione seriale, quindi lettura da seriale e comando da far eseguire ad arduino, ma bluetooth?
Ho cercato un po in giro ma ce un po di confuzione, poi il modulo da scegliere, è importante così come la scelta di un ethernet shield? (librerie esistenti/compatibili)..
Insomma volevo un po una panoramica da chi ha avuto esperienza con situazioni del genere.

Grazie mille! smiley


EDIT: http://arduino.cc/forum/index.php/topic,104903.0.html

O.o l'ho appena trovato in megatopic, in italiano, 13 pagine! Inizio la lettura! xD
25  International / Software / Re: leOS, pauseTask e restartTask! on: November 05, 2012, 05:19:06 pm
Si deve essere per forza quello! Sennò non so più che pensare, le stavo provando di tutte fino a 3 ore fa! E ora devo aspettare fino a domani mattina per riprovare con volatile noooo...xD Darò notizie domani comunque!

Grazie!
26  International / Software / Re: leOS, pauseTask e restartTask! on: November 05, 2012, 05:05:31 pm
Non dovrebbe. In questo momento ho accanto una Leonardo con lo sketch di test "leOS_tasks_managin" che mette in pausa e riattiva ogni 5 secondi un task e sta funzionando correttamente.

Mmm allora in questo momento in non posso provare sull'arduino uno in cui mi si presenta il problema (dove sta anche collegato un display 16x2 e un'altro bel po di cose xD ). Ma credo di aver capito, ho appena aperto lo sketch che mi hai detto "leOS_tasks_managin" e ho notato che nei tasks sono stati utilizzati variabili con la parola chiave volatile prima. Io effettivamente nel task che ho bisogno utilizzo un paio di flag di tipo byte (tipo il tuo "volatile byte ledStatus") solo che effettivamente senza il volatile.
Il task funziona la prima volta, premendo un pulsante, questo pulsante mette in pausa i task in esecuzione e azzera i vari flag (si tratta in effetti di un ritorno al menu principale, per questo ho bisogno di fermare tutti i task e azzerare ogni tipo di variabile, tipo quelle che fanno rifermento al menu attuale..) ma se rientro la seconda volta, l'ultima cosa che ho notato prima di rientrare a casa è che, tramite un print entro nel task, ma il flag che dovrebbe servire a fare una cosa o un'altra diciamo che non risponde..

Comunque il task è questo:

Code:
void blink_delay()
{
Serial.println("sono in blink_delay");
if (inMenu == 1)
{
  text = !text;
  if (text == true)
  {
     digitalWrite(13,HIGH);
//Serial.println("testo");
    lcd.setCursor(4,1);
    lcd.print(intervalometer_delay);
  }

  if (text == false)
  {
     digitalWrite(13,LOW);
//Serial.println("spazio");
    lcd.setCursor(4,1);
    lcd.print("   ");
  }
}

}

text in questo caso è un booleano (l'ultima modifica che ho fatto)

Code:
boolean text;

La prima volta che avvio il task il led 13 si accende e si spegne, se premo il pulsante, fermo i task, rimetto text=false(anche se non dovrebbe servire), e azzero altre variabili che mi interessano, se rientro nel task, il led13 ne si accende e ne si spegne più..

Penso a qesto punto il problema sia che non uso il volatile giusto?
27  International / Software / Re: leOS, pauseTask e restartTask! on: November 05, 2012, 04:41:51 pm
Che versione usi? Nelle vecchie versioni c'era effettivamente un bug.

Quella prasa in fondo a questa pagina (il tuo sito) smiley :

http://www.leonardomiliani.com/?p=516#wpfb-file-31

quindi la versione 1.0.1a

Dici che questa versione non dovrebbe essere affetta da bug?
28  International / Software / Re: leOS, pauseTask e restartTask! on: November 05, 2012, 02:39:18 pm
Si sto cercando di debuggare un po il tutto.. appena ho maggiori info comunico per ora volevo solo sapere se qualcuno ha riscontrato problemi nel mettere in pausa e riavviare un task..
29  International / Software / leOS, pauseTask e restartTask! on: November 05, 2012, 02:06:56 pm
Ciao a tutti, volevo sapere se qualcuno ha riscontrato problemi nell'utilizzo della libreria leOS, in particolare quando si mette in pausa un task e nel suo riavvio (restartTask).

Grazie a tutti.
30  International / Hardware / Re: Valvola solenoide 12v - velocità apertura/chiusura on: November 03, 2012, 04:10:39 am
Siamo sicuri che questa:

http://www.ebay.it/itm/150885130408

Vada con la 220? Per quanto riguarda l'altra elettrovalvola, all'idea di stringere il foro ci avevo pensato anche io ma poi ho pensato subito la stessa cosa tua, e cioè che l'acqua rimasta dopo la valvola continuerebbe a gocciolare..

Serve qualcosa di molto preciso..  smiley-roll-blue
Pages: 1 [2] 3 4 ... 20