Show Posts
Pages: [1] 2
1  International / Hardware / Re: Rover 5 robot platform on: March 22, 2013, 09:44:39 am
Ciao! Sto usando lo stesso telaio per un progetto che sto costruendo.

Io sto usando un motor shield di Adafruit, che permette di controllare 4 motori in DC, 2 stepper e 2 servomotori.
https://www.adafruit.com/products/81

Controllarlo direttamente da Arduino credo sia impossibile poiché i motori hanno bisogno di una corrente troppo elevata rispetto a quella che fornisce Arduino.
Se proprio non vuoi passare dallo shield puoi comprare gli integrati(ponti-H) e montarli su una basetta, ma credo sia un po' più complesso. smiley
2  International / Hardware / Re: HC-SR04, Dubbi su misurazioni. on: March 21, 2013, 05:27:34 pm
uhmm ma quindi non sai come misurare quest'angolo e chiedi se il sensore da te citato te lo possa tornare?
comunque ipotizzando che la forma del robot sia quadrata potresti posizionare due sensori IR di prossimità ai due angoli, se misurano la stessa distanza sei parallelo al muro altrimenti dovresti riuscire a calcolare lo "sfasamento" in base a quale dei due rileva più o meno distanza!

Sì! ma il problema è che se uno dei due sensori è "sfasato" non riesce a trovare la distanza accurata e quindi misura in modo errato smiley-sad
Quindi è come ipotizzavo all'inizio se l'angolo di incidenza è troppo acuto la misura è falsata...
Credo che risolverò questo problema con gli encoder a questo punto.
3  International / Hardware / HC-SR04, Dubbi su misurazioni. on: March 21, 2013, 11:26:18 am
Ciao a tutti!

Sto costruendo un Robot che fa Odometria per la mia tesina, e sto incorrendo in alcuni problemi.
Il principale è la lettura della distanza effettuata da un sensore a Ultrasuoni HC-SR04, che dovrebbe permettermi di calcolare grazie a teorema di Pitagora e di Carnot l'angolo a cui si trova orientato il robot rispetto al muro.
I sensori ad ultrasuoni ed in particolare il mio sono influenzati dall'angolo a cui si trovano a misurare nella distanza da trovare?
Se la risposta è sì(come presumo smiley-sad ) c'è qualche alternativa che risolva questo problema (IR, laser etc)?
Grazie..
4  International / Software / Re: arcoseno! on: January 18, 2013, 05:26:38 pm

Certo che c'è, è asin(), o acos() per l'arcocoseno, attenzione che il valore ritornato è in radianti.


E di quale libreria fa parte? in Math.h non mi pare che ci sia.

Grazie mille, mi sei di grandissimo aiuto. smiley
5  International / Generale / invio dati con bluetooth on: January 18, 2013, 12:45:30 pm
Ciao a tutti!

Sto incominciando a familiarizzare con il bluetooth. In particolare ho un modulo bluetooth BlueSMIRF silver e un applicazione che si può facilmente trovare sul Google Playstore che si chiama BlueTerm, che permette di inviare dati tramite bluetooth da un dispositivo Android.
Leggendo qualche guida in giro c'è qualcuno che dice che i pin RTS e CTS vanno messi in corto tra di loro, altre che non li citano minimamente, qualche dritta su questo?
Facendo qualche prova preliminare poi , ho accoppiato il modulo con l'applicazione con successo (Led verde acceso al posto del rosso lampeggiante).
Ora dovrei incominciare a inviare i dati e permettere ad Arduino di riceverli, qualche idea e qualche dritta su questo? Non so da dove incominciare...

Grazie in anticipo!  smiley
6  International / Software / arcoseno! on: January 18, 2013, 12:24:00 pm
Ciao a tutti!
Esiste la funzione che calcola l'arcoseno ovvero che ritorna l'angolo che ha come seno un valore compreso tra -1 e 1 ?
E' una funzione che dovrebbe essere utilissima ma non se ne sente parlare molto.. o mi sbaglio? C'è qualche libreria aggiuntiva o devo mettermi a creare 180 costanti diverse nell'IDE di arduino calcolando l'arcoseno con la calcolatrice? smiley

Grazie in anticipo.
7  International / Hardware / Re: Problema pin PWM on: December 31, 2012, 04:33:53 am
Ho provato ed effettivamente gli encoder funzionano anche senza pin PWM. Grazie delle info!!!.
I motori non so a che velocità girano ma hanno dei motoriduttori 87:1, e gli encoder variano di 1000 stati per 3 giri di ruota.
http://www.pololu.com/catalog/product/1551

Per quanto riguarda il collegarli con un'unica fase ti riferisci al fatto di usare solo un pin invece di due?
8  International / Hardware / Re: Problema pin PWM on: December 30, 2012, 03:59:05 pm
 smiley-sad mi sa che mi butterò sul MEGA... e altri soldi che partono!!!
9  International / Hardware / Re: Problema pin PWM on: December 30, 2012, 03:47:34 pm
Ma se connetto il TLC, la scheda per il controllo motori con la sua libreria specifica e che ha i suoi pin dedicati(3-5-6-11 non variabili) posso usarla lo stesso?
10  International / Hardware / Problema pin PWM on: December 30, 2012, 11:08:37 am
Ciao a tutti.
Ho un piccolo problema, sto costruendo un rover che usa un arduino UNO con 4 motori, 2 encoder, 1 servomotore e 1 sensore ad ultrasuoni.
Utilizzo una motorShield Adafruit che mi permette di controllare i motori e il servo, e che mi occupa 5 dei 7 pin PWM, per i due encoder ho bisogno di altri 4 pin PWM no?

HELP 9 pin PWM dove li trovo???

Ho dato un occhiata in giro e c'è il TLC5940 con scheda breakout che moltiplica i pin PWM, ma se la motorShield ha bisogno di pin PWM specifici non c'è rischio di conflitti?
Devo passare ad un arduino MEGA?
11  International / Hardware / Re: Convertitori ADC on: December 04, 2012, 09:59:17 am
Ciao,
Non sarebbe più semplice utilizzare degli IO extender su I2C? Tipo, per esempio, i PCF8574 (un tutorial: http://www.settorezero.com/wordpress/utilizzare-l-io-expander-pcf8574/). Ti offre 8 linee che puoi usare sia come input che come output (nel tuo caso ti interessano come output). Ne metti tre (costano circa un paio di euro l'uno) ed ottieni le 24 linee che desideri. Poi magari ne esiste anche una versione con più uscite...

Ciao.
Vittorio.



Mah, personalmente non ho mai usato la comunicazione I2C e mi troverei in difficoltà, l'idea degli ADC mi piaceva di più, guarderò e vedrò cosa mi conviene(prezzo e facilità di realizzazione).
Ciao Leo
12  International / Hardware / Re: Convertitori ADC on: December 03, 2012, 04:02:14 pm
Ciao,

perchè hai bisogno di integrati esterni? Arduino fa già la conversione A/D con 10 bit di risoluzione.


Il mio obiettivo è controllare una matrice led con 4 pin analogici di Arduino, la matrice led 8x8 ha 24 pin in tutto in 2 file da 12, per ogni fila 8 pin indicano la colonna e i 4 rimanenti per 4 righe, lo stesso dall'altra parte 8+4 righe rimanenti(cambiando il colore).
Non posso usare 24 pin solo per la matrice... (anche perché l'UNO non ha tutte quelle uscite smiley ).
Il mio interesse non è la "conversione", utilizzerei un ADC per ottenere fino a 128 combinazioni diverse con un solo pin analogico...
Non so se mi sono spiegato..
13  International / Hardware / Convertitori ADC on: December 03, 2012, 12:23:24 pm
Ciao a tutti, vorrei sapere il nome di 2 buoni integrati che realizzano una conversione analogico-digitale. Gli ADC per capirci.
Uno con precisione di 4 bit e l'atro con 8.
Ovviamente pilotabili facilmente con Arduino.
Li dovrei usare per pilotare una matrice LED.

Grazie  smiley
14  International / Generale / Re: Processing-Java on: May 27, 2012, 10:12:44 am
No, il programma (che poi c'è anche un errore dato che avevo postato quello vecchio) invia sulla seriale un numero(in questo caso 0) per 20 volte con una pausa di 1000ms.
Comunque, funziona... Grazie mille:)
15  International / Generale / Re: Processing-Java on: May 26, 2012, 12:32:54 pm
Ciao!

Ho provato a fare qualche piccola modifica a questo programma: http://java.sun.com/developer/releases/javacomm/SimpleWrite.java per fargli inviare un intero direttamente in questo modo:


import java.io.*;
import java.util.*;
import gnu.io.*;

public class Serial {
    static Enumeration         portList;
    static CommPortIdentifier portId;
    static int         numeroDaInviare = 0;
    static SerialPort         serialPort;
    static OutputStream       outputStream;
    static boolean         outputBufferEmptyFlag = false;

    public static void main(String[] args) {
   boolean portFound = false;
   String  defaultPort = "COM3";

   if (args.length > 0) {
       defaultPort = args[0];
   }

   portList = CommPortIdentifier.getPortIdentifiers();

   while (portList.hasMoreElements()) {
       portId = (CommPortIdentifier) portList.nextElement();

       if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

      if (portId.getName().equals(defaultPort)) {
          System.out.println("Found port " + defaultPort);

          portFound = true;

          try {
         serialPort =
             (SerialPort) portId.open("SimpleWrite", 2000);
          } catch (PortInUseException e) {
         System.out.println("Port in use.");

         continue;
          }

          try {
         outputStream = serialPort.getOutputStream();
          } catch (IOException e) {}

          try {
         serialPort.setSerialPortParams(9600,
                         SerialPort.DATABITS_8,
                         SerialPort.STOPBITS_1,
                         SerialPort.PARITY_NONE);
          } catch (UnsupportedCommOperationException e) {}
   

          try {
             serialPort.notifyOnOutputEmpty(true);
          } catch (Exception e) {
         System.out.println("Error setting event notification");
         System.out.println(e.toString());
         System.exit(-1);
          }
         
         
          System.out.println(
             "Writing \"" + numeroDaInviare + "\" to " + serialPort.getName());
         
          for(int i=0; i<20; i++){
             System.out.println("Scrittura del numero su seriale");
             try {
             
             
         outputStream.write(numeroDaInviare);
         
             
          } catch (IOException e) {}

          try {
             Thread.sleep(1000);  // Be sure data is xferred before closing
          } catch (Exception e) {}
          }
          serialPort.close();
          System.exit(1);
       }
       }
   }

   if (!portFound) {
       System.out.println("port " + defaultPort + " not found.");
   }
    }


}

Mentre in arduino ho scritto questo:
void setup(){
  pinMode(13, OUTPUT);
  Serial.begin(9600);
 
}

void loop(){
  int x;
  while (Serial.available() > 0) {
    int x;
    x = Serial.parseInt();
    if(x == 2){
      digitalWrite(13, HIGH);
      delay(150);   
      digitalWrite(13, LOW);
      delay(150);
      digitalWrite(13, HIGH);
      delay(150);   
    }
}

Cioè se legge dalla seriale un intero (2), deve far lampeggiare il led sul pin 13.
Ho tentato in tutti i modi di illuminare quel dannato led ma non c'è verso.
E' un problema di sincronizzazione? Metodi sbagliati? Inesperienza?
Pages: [1] 2