Show Posts
Pages: 1 ... 41 42 [43] 44 45 ... 49
631  International / Generale / Re: Sensore Ultrasuoni - Informazioni Necessarie on: August 09, 2011, 04:49:28 am
Sinceramente non saprei perchè non l'ho mai usato quello ad infrarossi, ne tantomeno quello ad ultrasuoni.
Comunque ho visto qualche esempio, e l'output del sensore (giallo) viene collegato all'entrata analogica giustamente.
632  International / Generale / Re: Sensore Ultrasuoni - Informazioni Necessarie on: August 08, 2011, 08:34:29 am
Forse intendevi settare il pin come output e non come input ? Comunque sia succederebbe solo che l'arduino non leggerebbe i valori.. poi forse ho capito male.
Comunque occhio allo schema perchè hai invertito la polarità nel collegare le due "strisce"
633  International / Generale / Re: display 7 segmenti anodo comune & arduino on: August 07, 2011, 02:00:59 pm
Se ti interessa ho fatto uno sketch che fa proprio questo. Converte un numero che gli passi (da 0 a 9) in binario e poi con un ciclo che prende ogni bit della stringa binaria setta gli output da mandare all'integrato.
E' un po' confusionario ed allungato probabilmente però è stato interessante farlo.
Code:
void setup(){
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  Serial.begin(9600);
}
void loop(){
  for(int i=0;i<=9;i++){
   set_display(int_to_bin(i));//print di numeri da 0 a 9
   delay(1000);
  }
}
void set_display(String x){
  for(int i=0;i<=3;i++){
   digitalWrite(13-i,0);//spengo tutti i led
  }
  for(int i=0;i<=3;i++){
   digitalWrite(13-i,stringToInt(x.substring(i,i+1)));//assegno al led # il valore 0 o 1
  }
}
String int_to_bin(int x){
  String ris;
  do{
   if (x % 2 == 1){
    x=int(x/2);
    ris="1" + ris;
   }
   else{
    x=x/2;
    ris="0" + ris;
   }
  }while(x!=0);
 
  switch(ris.length()){
    case 1: ris="000" + ris;break; //imbottisco la stringa di "zeri" per renderla di 4 bit
    case 2: ris="00" + ris;break;
    case 3: ris="0" + ris;break;
  }
  return ris;
}
int stringToInt(String s){
  byte sLen = s.length();
  int retNum = 0;
  for(byte k=0; k < sLen; k++){
    retNum += ((byte)s.charAt(k)-48) * pow(10, sLen-k-1);
  }
  return retNum;
}
P.s: la funzione per convertire la stringa in un intero l'ho presa da un post di dani88, visto che in normale (int) non funzionava
634  International / Generale / Re: display 7 segmenti anodo comune & arduino on: August 06, 2011, 08:21:58 am
Potresti usare un decoder binario (se così si chiama) utilizzando 4 uscite digitali dell'arduino, ora non ricordo il circuito ma lo abbiamo utilizzato a scuola.
edit:qui il circuito e qui il datasheet dell'integrato
635  International / Generale / Re: Classiche domande sull'xbee on: August 02, 2011, 01:55:43 pm
Non ho mai ordinato da quel sito. Io uso questi:
https://www.adafruit.com/products/126
come schede xbee
Quello che hai linkato tu ha un pin in più rispetto al mio, chiamato "ct". Cos'è ?
636  International / Generale / Re: Classiche domande sull'xbee on: August 02, 2011, 10:34:01 am
Ottimo, grazie ragazzi!
Qualcuno di voi ha mai ordinato dal sito ? Posso fidarmi ?  http://www.dfrobot.com/
637  International / Generale / Re: Classiche domande sull'xbee on: August 01, 2011, 11:09:34 am
Ok, è arrivato il giorno ! Domani ordino.
Mi dispiace rianimare il post però ho un'altra domanda. Visto che ordino da http://www.dfrobot.com e di shield hanno solo quelle "non compatte" (come definite da un utente smiley-grin) mi chiedevo se fosse possibile collegare ll'xbee all'arduino tramite questo utilizzando i 4 pin tx rx 5v e gnd.
Sarebbe molto conveniente perchè prendendone 2 potrei comunicare da pc a pc(con usb) da arduino ad arduino ("4 pin") e anche arduino e pc.

Sto sbagliando ? smiley-grin
638  International / Generale / Re: salvare stringa on: July 30, 2011, 09:36:57 am
un piccolo esempio... se volessimo salvare http://www.arduino.cc pe esempio il codice sarebbe?
Dipende da come lo mandi sul seriale, cioè se lo scrivi tu a mano nel campo oppure se lo fai mandare da un altro ide.
639  International / Generale / Re: salvare stringa on: July 30, 2011, 09:24:27 am
scusa la mia ignoranza ratto ma come si fa?
il vettore o array non è altro che una variabile con tante sottovariabili chiamate indici, quindi una struttura dati.ti serve nel caso in cui sai già quanto è lunga la stringa, di conseguenza se è lunga 16 caratteri dichiari un vettore da 16 caratteri:  char vet[16] (15 sarebbe più corretto, perchè gli indici partono da 0)
Char perchè ti vai a salvare ogni singolo carattere in una cella. Quindi se hai la stringa "ciao" dovresti avere: vet[0]='c'; vet[1]='i' ...
Comunque se la stringa non ha una lunghezza fissa dai un'occhiata al mio post.
640  International / Generale / Re: Serial.read() di stringhe on: July 30, 2011, 09:14:56 am
Ciao,

Quote
Una cosa.. non c'è modo di aprire il monitor seriale mentre lo sta usando il python vero ?

Puoi utilizzare un software per il monitotaggio delle porte seriali (cerca serial monitor o serial sniffer in Google) come, ad esempio, questi:

http://www.serial-port-monitor.com/
Vi e' anche una versione piu' recente (DMS).
http://www.eltima.com/products/rs232-data-logger/
Poi hanno fatto la versione a pagamento http://www.eltima.com/products/serial-port-monitor/

Puoi sempre utilizzare anche le trial edition che forniscono quasi tutte le software house (in genere per un 30gg).

Controlla prima se possono funzionare con la versione di Windows che hai.

Prima devi avviare il serial monitor e poi apri la comunicazione da Python o altro software.

Ciao,
Marco.
Sembra funzionare, anche se ancora devo smanettarci smiley-grin

Comunque adesso ho un altro problema.I valori che mando sul seriale sono del genere:
stick: 80,80,80,70
stick:30,80,80,75
 e siccome sono quasi in trasmissione continua devo stoppare il ciclo while che mi aveva postato seppe per salvare la prima "ondata" di valori e fare i miei calcoli.
Di conseguenza alla fine di ogni print  sul seriale metto un ';' quindi: stick: 80,80,80,70;
in modo da intercettare la fine della stringa con il seguente codice:
Code:
String lettura="";
  while(Serial.available() && (char)Serial.read() !=';' ){
    lettura+=(char)Serial.read();
  }
  Serial.println(lettura);
Ma qualcosa va storto.. mi salta dei pezzi di stringa all'inizio e a volte non ferma il ciclo e le stringhe si concatenano !
641  International / Generale / Re: Serial.read() di stringhe on: July 30, 2011, 04:42:16 am
Prova una cosa del genere:

Code:
Serial.begin(9600); //inizializzazione della comunicazione seriale
String testo = ""; //creazione di una stringa vuota

while ( Serial.available() )
{
      testo = testo + (char)Serial.read(); //concatenazione del nuovo carattere con i precedenti
}

La trasmissione seriale comunica ad ogni lettura un carattere, e quindi un char, ma se vengono inviati più caratteri, questi rimarranno nel buffer di trasmissione, e quindi la connessione seriale sarà ancora disponibile dopo l'inivio del primo carattere, questo significa che ad una seconda lettura da seriale, otterrai il secondo carattere da concatenare al primo nella stringa del testo... e così via fino all'ultimo...

seppe
Grande, funziona smiley-grin
Una cosa.. non c'è modo di aprire il monitor seriale mentre lo sta usando il python vero ?
642  International / Generale / Re: salvare stringa on: July 29, 2011, 02:13:47 pm
A quanto vedo abbiamo postato un post molto simile a distanza di due minuti(perdonatemi, ma non me ne ero accorto).
Teniamoci in contatto smiley-grin
643  International / Generale / Serial.read() di stringhe on: July 29, 2011, 01:56:39 pm
Salva a tutti !
Ho bisogno di leggere dei valori di due joystick che invio tramite seriale. Siccome di conseguenza ho 4 valori(xleft,yleft,xright,yright)
devo riuscire a riconoscere a quale asse appartiene il valore.
Es.:
xl:250
yr:30
Come faccio quindi a leggere le stringhe dal seriale e successivamente confrontarle conseiderando che la lunghezza è variabile ?
Ho pensato ad un codice del genere che potrei memorizzare ogni carattere in un array ma come dicevo prima la lunghezza è variabile.
Consigli ?
644  International / Generale / Re: serial.readline Python on: July 23, 2011, 02:31:46 am
Non potresti fare:
Code:
Serial.println(analogRead(A0));
? Così \n te lo mette in automatico.
E' quello che facevo ma mi leggeva anche un carattere sconosciuto indicato con un "quadrato"
645  International / Generale / Re: serial.readline Python on: July 22, 2011, 09:09:36 am
Tuttavia non usando da tempo python ho un ricordo vago della classe Serial, mi pare che readline legge una linea, quanto è lunga credo dipenda dal carattere di fine riga "\n" sempre che da arduino tu lo spedisca.
E infatti non lo spedivo, abituato con il vb non ho pensato a questi caratteri di escape(si chiamano così ?).
Effettivamente adesso i valori sono "puliti" cioè senza quadrati accanto smiley-grin
Ho una fotocellula sul A0 con dovuta resisteza tra gnd e pin e usando questo codice il problema rimane comunque lo stesso..è come se non aggiornasse.
Code:
void setup(){
  Serial.begin(9600);
}
void loop(){
   Serial.print(analogRead(A0));
   Serial.print("\n");
}
In poche parole metto il dito sulla fotocellula prima che il python printi i valori sulla shell e,una volta partita, i valori sono intorno al 100 come dovrebbero. ma quando lo tolgo il dito i valori sono comunque quelli, variano di 2-3 numeri in più o in meno a caso..

Una cosa che ho notato è che il led tx dopo un po' si spegne durante la trasmissione..
Pages: 1 ... 41 42 [43] 44 45 ... 49