Show Posts
Pages: [1]
1  International / Hardware / Arduino due con gldc touch, mouse e tastiera on: December 03, 2012, 09:06:01 am
Ciao a tutti.
Premetto che è un progetto che ho in testa, quindi devo ancora definire cosa comprare e non ho un codice su cui lavorare. Infatti prima di iniziare vorrei vedere se è fattibile.

La mia idea era di creare una specie di mini-tablet, come quelli che girano ora. In generale vorrei collegare ad Arduino due un lcd grafico (non per forza touch) e creare una interfaccia grafica dove posso muovere un puntatore guidato dal mouse, e a seconda di dove clicco far partire dei sotto-programmi, uno di questi può essere un semplice editor di testo su cui scrivere con la tastiera.

Però non so se è fattibile...Arduino due dovrebbe permettere di gestire mouse e tastiera no? E contemporaneamente?
Su internet ho trovato molti glcd a colori di vario tipo, voi ne avete qualcuno da consigliarmi?

Grazie a tutti
2  Using Arduino / Sensors / Re: Problems with optical encoder and motor shield. on: November 28, 2012, 04:29:02 am
I'm using this motor shield and there are two power lines, the first 9V for arduino which feeds a servomotor, a ultrasonic sensor and the two encoders, the second for motor shield and motors.

How can i screen the connection from encoders to Arduino?
3  Using Arduino / Sensors / Problems with optical encoder and motor shield. on: November 18, 2012, 03:25:36 pm
Hi everybody, i have a problem with optical encoder and the motor shield. When the two motors are stopped, the encoders function properly: making them rotate by hand, they count 20 steps per spin but when the motors are on, some interferences make much many steps be counted instead of their real number.
I paste the code but not the whole one because it’s too long. I don’t think there’s something wrong, but there could be something to better.
Code:
#define LEFT 0
#define RIGHT 1

//i pin usati per i due motori
int SX = 6;
int M1 = 7;
int DX = 5;
int M2 = 4;
//le due "velocità" dei motori
int velocita_sx = 100;                                       
int velocita_dx = 100;

//array per l'encoder
long coder[2] = {0,0};

void setup(){
  attachInterrupt(LEFT, LwheelSpeed, CHANGE);    //inizializzo il pin 2 per l'interrupt
  attachInterrupt(RIGHT, RwheelSpeed, CHANGE);   //inizializzo il pin 3 per l'interrupt
  pinMode(M1, OUTPUT);                           //pin per il controllo dei due motori
  pinMode(M2, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  Serial.print("Coder value: ");               //stampo a monitor il valore dell'array
  Serial.print(coder[LEFT]);
  Serial.print("[Left Wheel] ");
  Serial.print(coder[RIGHT]);
  Serial.println("[Right Wheel]");
  digitalWrite(M1,LOW);                     //per definire il senso di rotazione
  digitalWrite(M2, LOW);
  if(coder[LEFT] < 50 && coder[RIGHT] < 50){   //dovrebbe fare 50 passi dell'encoder e poi fermarsi
  analogWrite(SX, velocita_sx);     
  analogWrite(DX, velocita_dx);
  }
 
 
  if(coder[LEFT] >= 50 && coder[RIGHT] >= 50){
    analogWrite(DX, 0);
    analogWrite(SX, 0);
  }
}


//le due funzioni chiamate dall'interrupt per aumentare il contatore dei passi
void LwheelSpeed()
{
  coder[LEFT] ++; 
}
 
 
void RwheelSpeed()
{
  coder[RIGHT] ++;
}


Thanks for your help.
4  International / Hardware / Problemi encoder ottico on: August 10, 2012, 03:43:03 am
Ciao a tutti, ho un problema con l'encoder ottico e il motor shield.
Quando i due motori sono fermi gli encoder funzionano perfettamente, infatti facendoli girare a mano contano 20 passi per giro completo, quando invece aziono i motori vengono fuori certe interferenze che fanno contare molti più passi di quanti non lo siano realmente.
Posto il codice interessato, non tutto perchè sarebbe troppo lungo. Anche se non credo ci sia qualcosa di sbagliato, però magari ci potrebbero essere delle migliorie da fare.

Code:
#define LEFT 0
#define RIGHT 1

//i pin usati per i due motori
int SX = 6;
int M1 = 7;
int DX = 5;
int M2 = 4;
//le due "velocità" dei motori
int velocita_sx = 100;                                       
int velocita_dx = 100;

//array per l'encoder
long coder[2] = {0,0};

void setup(){
  attachInterrupt(LEFT, LwheelSpeed, CHANGE);    //inizializzo il pin 2 per l'interrupt
  attachInterrupt(RIGHT, RwheelSpeed, CHANGE);   //inizializzo il pin 3 per l'interrupt
  pinMode(M1, OUTPUT);                           //pin per il controllo dei due motori
  pinMode(M2, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  Serial.print("Coder value: ");               //stampo a monitor il valore dell'array
  Serial.print(coder[LEFT]);
  Serial.print("[Left Wheel] ");
  Serial.print(coder[RIGHT]);
  Serial.println("[Right Wheel]");
  digitalWrite(M1,LOW);                     //per definire il senso di rotazione
  digitalWrite(M2, LOW);
  if(coder[LEFT] < 50 && coder[RIGHT] < 50){   //dovrebbe fare 50 passi dell'encoder e poi fermarsi
  analogWrite(SX, velocita_sx);     
  analogWrite(DX, velocita_dx);
  }
 
 
  if(coder[LEFT] >= 50 && coder[RIGHT] >= 50){
    analogWrite(DX, 0);
    analogWrite(SX, 0);
  }
}


//le due funzioni chiamate dall'interrupt per aumentare il contatore dei passi
void LwheelSpeed()
{
  coder[LEFT] ++; 
}
 
 
void RwheelSpeed()
{
  coder[RIGHT] ++;
}
5  International / Generale / Re: Interferenze Motor Shield e servomotori. on: July 09, 2012, 06:28:49 am
Si quando avevo testato l'alimentazione era abbastanza per tutto.
Ora con il nuovo servomotore (normale, quello di prima era mini) va tutto bene...cosa sarà cambiato? Ma non importa troppo, ora funziona e sono contento!

6  International / Generale / Re: Interferenze Motor Shield e servomotori. on: July 08, 2012, 11:45:39 am
potrebbe anche essere un problema legato al codice, postalo se puoi.
Non credo, perchè anche con semplici test il servo non teneva l'angolo. Lo posterò appena ci si potrà capire qualcosa  smiley-confuse

Hai provato tutte le soluzioni assieme compreso l'optoisolatore? I condensatori di disaccoppiamento vanno il più vicino possibile al servo

Ciao
L' optoisolatore ancora no perchè non ce l'ho. Comunque ho provato a cambiare servo e ora vedo che questo sembra essere stabile. Rimonto tutto per bene e vediamo se va.
7  International / Generale / Re: Interferenze Motor Shield e servomotori. on: July 08, 2012, 04:36:45 am
Ho provato ora a fare quello che hai detto, e non cambia nulla. Noto solo che l'interferenza viene fuori quando il robot è in movimento, ma quando è fermo invece funziona per bene
8  International / Generale / Interferenze Motor Shield e servomotori. on: July 07, 2012, 06:13:27 pm
Ciao a tutti, sto tentando di costruire un robottino con due motori comandati dal motor shield, e un servomotore che supporta il sensore a ultrasuoni.
Il problema sorge quando devo far funzionare le due cose contemporaneamente, il servomotore risente di una qualche interferenza e non riesce più a stare fermo all'angolo impostato.
Ho provato a mettere un diodo all'alimentazione del servo perchè avevo letto che aiutava ad evitare interferenze ma non ha funzionato. Allora ho provato a usare "servo.detach()" ogni volta che non mi serviva muovere il servomotore ma non funziona ugualmente.
Come fare?


Grazie dell'aiuto in anticipo.

Pages: [1]