Show Posts
Pages: [1] 2 3
1  International / Hardware / Re: Servomotore smette di funzionare on: January 05, 2013, 06:03:56 am
Ciao, grazie a tutti per le risposte, leOS è alquanto interessante, penso che lo userò presto. In merito al vasino...la stavo facendo fuori alla grande, ora capisco anche che parte del codice causava il problema smiley se il pacchetto dati non aveva il delimitatore finale si attaccava a quello seguente e io finivo per mettere 8 dati in un array da 4 smiley ho fatto un po' di modifiche e per ora sembra andare tutto bene smiley grazie mille ancora a tutti!!!

Buona giornata,

Pro
2  International / Hardware / Re: Servomotore smette di funzionare on: December 30, 2012, 06:06:00 am
Buondì smiley
Ho lavorato ancora un po' al problema. Ho eliminato la funzione map che creava problemi semplificando un po' il codice e ho provato anche ad usare un altro servomotore. Ora il problema non sorge più passando da una modalità all altra ma salta fuori semplicemente dopo un po' di tempo, senza che eventi particolari avvengano nel frattempo. Da quel che avevo visto il flusso sembra seguire il corso giusto e non si blocca mai. Mi domando se non sia un qualche problema della scheda, magari è rotta :S

p.s arduino ha il multitasking?

Buona giornata,

Pro
3  International / Hardware / Re: Servomotore smette di funzionare on: December 26, 2012, 06:58:12 am
Effettivamente potrebbe essere un ottima idea quella di usare un altra variabile, e  per la variabile fuori range ho usato un if con la condizione che il numero preso in considerazione sia nel range corretto. Il problema maggiore rimane nel fatto che il servo si muove in base a un numero pre impostato e non in base a una variabile (uso servo.write(45) e non p.es servo.write(variabile) ). Ciò che mietete più in crisi è che la funzione che crea problemi non tocca minimamente il servo, e oltretutto se provo a muoversi manualmente non si sposta, indicando il fatto che è attivo smiley
4  International / Hardware / Re: Servomotore smette di funzionare on: December 26, 2012, 05:59:27 am
Il problema è sulla scheda della macchina: una arduino MEGA2560 R3. Comunque sull'altra scheda uso una porta software fatta con softwareserial. A proposito dell errore della macchina: ho isolato il problema: sembra proprio essere causato dalla funzione map()ho cancellato tutto il codice e mantenendo ogni pezzo singolarmente l unico che sembra dare errore è quello di map nella parte di codice con spia==1
5  International / Hardware / Re: Servomotore smette di funzionare on: December 26, 2012, 04:12:22 am
Il fatto è che non so più dove guardare: da quello che vedo io non c'è niente che possa fare interferenza :S non so veramente più cosa fare. Comunque oggi provo di nuovo a eliminare la parte del codice che fa interferenza e aggiungere mano a mano le funzioni smiley . Avevo pensato al WD come possibile soluzione ma se mi dici così, eviterò di usarlo
Per la seriale: la serial3 comunica usando un xbee serie 1, mentre la serial usa la normale USB leggiseriale legge i dati dall' xBee (s3). Avevo pensato alla possibilità che creassero problemi ma non ho pensato a togliere quella di debug. In ogni caso entrambe le modalità funzionano ( sempre, l unico problema è che il servo è immobile) smiley

6  International / Hardware / Re: Servomotore smette di funzionare on: December 25, 2012, 01:59:24 pm
Ciao,
innanzitutto buon natale e buone feste a tutti. Mi è venuta un idea ma volevo consultarono prima con voi. smiley è accertato che l errore compare solo dopo la seconda esecuzione del codice, quindi, anche a costo di essere un po' grezzo e brutale, potrei usare il watchdog per reset tare la scheda riavviando la macchina così che non entra in errore?

Buone feste,

Pro
7  International / Hardware / Re: Servomotore smette di funzionare on: December 22, 2012, 05:49:07 pm
Ciao!
Ho provato ancora un po di cose: invertire il codice, togliere i while e tenere gli if (spia==0,1) ma il problema persiste, tornando sempre nello stesso momento. A questo punto è più che confermato che si tratta della parte di codice "automatica" che causa l'errore. Che voi sappiate la funzione map può causare problemi di questo genere? perchè sembra essere l'unica funzione che compare solo in questa parte di codice e non nelle altre.

Ora sono in vacanza 2 settimane e provo un po a vedere che succede.

Buona serata Pro
8  International / Generale / Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! on: December 19, 2012, 02:28:48 pm
Ciao a tutti,

Sono Filippo, vivo in Svizzera e sono studente. Nella panoramica degli studi che ho scelto ho messo come materie supplementari robotica e informatica (livello di base: facciamo qualche programma in python, C++ e usiamo HTML/XML/css eccetera ma a livelli amatoriali). Sono appena entrato in contatto con la realtà di Arduino e ne sono rimasto piacevolmente sorpreso. Arduino è stato l'acquisto più utile, bello, fantastico, ... che io abbia fatto da un po di tempo a questa parte!!! Attualmente sto facendo un progetto per scuola, nella più completa solitudine: sono più o meno abbandonato dai docenti che sono purtroppo più interessati all NXT della LEGO.

Spero di poter imparare un po' di cose su Arduino così da poter essere di aiuto, in futuro, a altri utenti come lo sono stati molti per me!

Salutoni,

Filippo
9  International / Hardware / Re: Servomotore smette di funzionare on: December 19, 2012, 08:20:30 am
Argh! io mi sto perdendo, scusatemi tantissimo ma tra cose di scuola e questo problema sto impazzendo. Mi sono letto le regole che avete appena postato. ora so cosa fare per il prossimo post! in merito al mio problema avrei un ipotesi: se io blocco void loop() un po a lungo (faccio eseguire a lungo un ciclo while all'interno di loop) potrei creare dei problemi? potrebbe essere che mi si bloccano alcune parti perchè eseguo una sola volta void loop? Appena ci entro il codice fa partire un ciclo while, di conseguenza blocco l'esecuzione di loop() che si riattiva solo quando passo dalla manuale (seconda parte del codice) alla modalità automatica (finisce la manuale, finisco il codice in void loop e quello riparte dall'inizio, momento in cui sorge il problema). Per le immagini, come ieri, aspetto di essere a casa e poi le ricarico.
Comunque ho provato a cercare una possibile soluzione ovunque: forum, google, altri forum,...
Grazie mille di tutto, e scusatemi per aver creato tutti questi problemi!!!
10  International / Hardware / Re: Servomotore smette di funzionare on: December 18, 2012, 12:09:56 pm
Ciao, finalmente posso caricare tutti i dati. Ho già provveduto a cancellare l'altro post e ora metto qui dati e foto. I dettagli generali sono già presenti sopra. In merito ai commenti ho una precisazione da fare: ogni tanto angolature e commenti non coincidono perchè a causa di come è fatto e montato il servo i gradi che metto come input in arduino sono sfasati di 5° nella realtà ( e i commenti si riferiscono a questa). Spero i dati siano sufficienti, se caso carico ogni altro elemento necessario. Il problema sorge quando si passa dalla modalità automatica (2° parte del codice in void loop) alla modalità manuale. Quindi il servomotore funziona solo se uso fin da subito la modalità automatica.
11  International / Hardware / Re: Servomotore smette di funzionare on: December 18, 2012, 04:54:56 am
Perfetto, non ne avevo idea, e in effetti è la prima volta che sono su un forum. Farò in modo di rimediare: appena ho sottomano il computer cancello il post e vi fornisco tutti gli elementi smiley grazie mille per l aiuto
12  International / Hardware / Re: Servomotore smette di funzionare on: December 18, 2012, 04:00:39 am
Lo so ma era su quello internazionale e mi hanno consigliato di andare a postarlo su quello italiano (via messaggio privato). Tecnicamente è come postare su due forum diversi. Comunque farò in modo di mettere anche gli schemi elettrici eccetera
13  International / Hardware / Servomotore smette di funzionare on: December 18, 2012, 01:33:35 am
Ciao, ho un problema con un progetto che sto facendo per scuola: sto costruendo un veicolo in grado di muoversi autonomamente o essere telecomandato. Esso consiste in: una macchina telecomanda privata  elettronica sulla quale ho messo le mie componenti, controllata da arduino MEGA2560 con scheda motori di adafruit (afmotor shield) e xbee per comunicare. Mentre per il controllo uso arduino diecimila at168 ( non sono sicuro della versione poiché faceva parte di un kit proposto da un università ma con pochi dettagli tecnici sulla scheda) con un xbee e un joystick tipo Playstation ( solo il controller per pollice). Il problema sorge quando passo dalla modalità telecomandata a quella manuale: il servomotore, che uso per orientare un sensore di distanza a ultrasuoni, non si muove più: sento ancora la resistenza che va se provo a spostarmi manualmente ma non sembra più ubbidire quando richiamo servo.write(90). Ora sono su cellulare ma vi invio il link del forum internazionale dove ho messo il codice.
Grazie mille in anticipo, cordiali saluti, propilot

la parte di codice è la seguente:

Code:
void loop() // questa è la funzione principale, simile al task main() di NXT. Il suo funzionamento è comparabile a quello di un ciclo while(true)
{
  spia=leggiseriale();
  motor.setSpeed(data[3]);//serialcom[3]);//viene impostata la velocità di default inviata dalla stazione di terra
  if(spia==0)/*se la modalità scelta dall'utente è quella automatica si avvia la prima parte della funzione main, altrimenti la seconda*/
  {
    Serial.print("funzione avanti"); //test per eventuali bug
    distFD=ping(); //viene aggiornata la distanza avanti
    while(distFD>30)//&&(emerg==0)) //questa funzione fa andare avanti la macchina fintanto che la distanza è maggiore di 30 centimetri
                  //emerg ha problemi, di conseguenza lo elimino dalla funzione, eventualmente posso collegarlo al tasto reset.
    {
      Serial.print(distFD); //test della funzione ping
      //tempodopo=millis(); //millis misura il tempo passato dall'inizio dell'esecuzione del programma (si attiva subito dopo che viene eseguito il bootloader)
      //if(tempodopo-tempoprima>1000) //se tra un intervllo di tempo e quello precedente è passato un secondo viene fatto il controllo della direzione di casa
      //{
        //cercacasa(); //si esegue la scansione a infrarossi
        //tempoprima=tempodopo; //il vecchio intervallo di tempo viene sostituito dal tempo attuale
      //}
      distFD=ping(); //viene aggiornata la distanza avanti
      Serial.print(srange.read());//test seriale per bug
      spia=leggiseriale();//controllo della modalità inviata dal telecomando
      if(spia==1){break;}//se il telecomando segnala l'ordine comando via radio si esce dalla fuunzione
      Serial.print("AVANTI A TUTTA \n");
      motor.run(FORWARD);
      delay(10);
    }
    Serial.print("fuori"); //test di uscita dalla funzione attuale
    motor.run(RELEASE); //frenata dei motori
    direzione();//viene scelta la direzione di marcia
  }
  if(spia==1)//!!!IL PROBLEMA SORGE ENTRANDO IN QUESTA PARTE DI CODICE!!!la macchina riceve l'ordine di passare alla modalità telecomandata
  {
    while(spia==1)//viene mantenuta questa modalità fintanto che spia ha come valore 1
    {
      percentualech1=data[1];
      percentualech2=data[2];
      //percentualech1=map(percentualech1,0,255,0,100);
      //percentualech2=map(percentualech2,0,255,0,100);
      if((percentualech2>138)&&(percentualech2<256))
      {
        motor.run(BACKWARD);
        percentualech2=map(percentualech2,128,255,0,255);
        motor.setSpeed(percentualech2);
      }
      else if((percentualech2<118)&&(percentualech2>-1))
      {
        motor.run(FORWARD);
        percentualech2=map(percentualech2,128,0,0,255);
        motor.setSpeed(percentualech2);
      }
      else
      {
        motor.run(RELEASE);
      }
      if((percentualech1>-1)&&(percentualech1<256))
      {
        percentualech1=map(percentualech1,0,255,410,570);
        resetdirezione(percentualech1);
      }
      /*if(percentualech1>138)
      {
        percentualech1=map(percentualech1,128,255,490,570);
        resetdirezione(percentualech1);
      }
      else if(percentualech1<118)
      {
        percentualech1=map(percentualech1,0,128,490,570);
        resetdirezione(percentualech1);
      }
      else
      {
        resetdirezione(490);
      }*/
      spia=leggiseriale();
    }
    //motorrot.setSpeed(200);
    motor.setSpeed(serialcom[3]);
  }
  Serial.print(srange.read());
  delay(1000);
  srange.detach();
  srange.attach(9);
}
14  Using Arduino / Networking, Protocols, and Devices / Re: send array of integers via xBee s1 on: December 16, 2012, 03:30:13 pm
ok everything fixed, I found the problem and now it doesn't give troubles anymore. But something other apppeard. everything is going well but I have a problem with a servo. I already made a topic about that but I ask also here. Here are the details:

http://arduino.cc/forum/index.php/topic,137726.0.html
15  Using Arduino / Networking, Protocols, and Devices / Re: send array of integers via xBee s1 on: December 14, 2012, 01:38:02 am
Perfect! But I have to read 3 variable resistors, how do I change the value from integer from 0 to 1023 to byte from 0 to 254?
Pages: [1] 2 3