Pages: [1]   Go Down
Author Topic: transfert en continu de coordonnes(x,y) d arduino vers processing et inversement  (Read 574 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjours a tous,
je suis novice en processing et en arduino.
j ai un projet en cours qui est le pilotage  d une imprimante à 2 axes faite maison par arduino et dont l impression se ferait en temps reel ( en meme temps que l on trace notre figure dans un programme processing) et  j ai donc besoin de transferer les coordonnes (x,y) des points en continu vers arduino  mais egalement dans l autre sens pour utiliser un ecran tactile sur arduino.


1: ecran tactile (arduino) ---envoi x,y---> vers processing.
    
et en parrallele avec (1:) arduino anime les moteurs pour tracer la figure.

2: processing trace l image dans une fenetre.

je me suis deja ateler a ma programation des etapes separees
et en voicis les codes:

*********ARDUINO*********
Code:
int y1 = A0;
 int x2 = A3;
 int y2 = A1;
 int x1 = A2;
 
void setup() {
 Serial.begin(9600);

 }

int readX(){
 pinMode(y1, INPUT);
 pinMode(x2, OUTPUT);
 pinMode(y2, INPUT);
 pinMode(x1, OUTPUT);
 
digitalWrite(x2, LOW);
 digitalWrite(x1, HIGH);
 
delay(5); //pause pour metre en tension
 
return analogRead(y1);
 }
 
int readY(){
 
pinMode(y1, OUTPUT);
 pinMode(x2, INPUT);
 pinMode(y2, OUTPUT);
 pinMode(x1, INPUT);
 
digitalWrite(y1, LOW);
 digitalWrite(y2, HIGH);
 
delay(5);
int Y= analogRead(x2);
 return Y;
 }
 
void loop()
 {
 int x = readX(); //coord en x
 int y = readY(); //coord en y

 if (x == 0 & y == 0){
 Serial.print(x-10000);//impression coord en x
 Serial.print(" ");
 Serial.println(y-10000);//impression coord en y
 }
 else {
 if(x < 1000 & y < 1000){
 if(x > 100 & y > 100){
 Serial.print(x-100);//impression coord en x
 Serial.print(" ");
 Serial.println(y-100);//impression coord en y
 }
 else{
 Serial.print(x-10000);//impression coord en x
 Serial.print(" ");
 Serial.println(y-10000);//impression coord en y
 }
 }
 }
 //calibrage pour ne pas avoir de coordonnes negatives

delay(0);
 
}


**********Processing**********

Code:
‎/*
 * Mouse Press.
*
* Move the mouse to position the shape.
* Press the mouse button to invert the color.
*/
 // modifier par carmelo pirrera.
 // programme de base de procesing qui tace des croix suivant le curseur de la sourie
import processing.serial.*; //import information from the arduino
 
int delayValue=0; //variable for delayValue
 int min_value=0; //variable for the lowest level of light
 int max_value=0; //varaible for the highest level of light
 
Serial myPort; //Chose the prot for communication with arduino
 
void setup() {
 size(800, 600);//taille de la fenetre
 noSmooth();
 fill(0);
 background(255);
 }
 
void draw() {
 /*
if (mousePressed) {
 stroke(255);
 } else {
 stroke(0);
 }

 line(mouseX-10, mouseY, mouseX+10, mouseY);
 line(mouseX, mouseY-10, mouseX, mouseY+10);
*/
 //base permetant de tracer des lignes

if (mousePressed){
 stroke(0);//ligne en noir
 line(mouseX, mouseY, pmouseX, pmouseY);//trace une ligne entre nouvelle coordonnes et ancienne
}
 // noStroke();// enleve le contour du cercle
// fill(0,0,0);//cercle en noir
 // ellipse(mouseX, mouseY, 10, 10);//on trace un point noir suivant les coordonnees
 
}


********************************************************************************************************
la question est comment transferer en continu mes couples (x,y)
 de processing vers arduino et d arduino vers processing
(pouvez vous si possible me fournir un exemple de code qui me permetterait cela )

je vous le demande car j ai lontemps chercher sur le net et tout ce que j ai trouver a echouer
merci d avance.
« Last Edit: February 09, 2013, 04:34:54 pm by AWOL » Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ne comprend pas trop pour quoi tu voudrais faire un aller retour avec la même information ?
Processing n'a pas besoins d'envoyer les coordonnées qui sont déjà connue par l'Arduino.

Tu peux jeter un oeil la dessus :

http://accrochages.drone.ws/en/node/90
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok merci pour la reponce. j ai reussit a envoyer les coordonnees de arduino vers processing pour mon ecran tactile .
par contre j aimerait egalement envoyer les coordonnes x,y de la souris (qui trace sur processing ) vers arduino maiscomment faire dans ce sens ?
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ce serait sympa de ne pas réouvrir un autre sujet avec la même question....

J'efface le doublon.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjours,
j aimerait savoir depuis mon programme ci desous comment tracer un dessin.
je recoit les coordonnes x,y depuis un ecran tactile et j anime un point de cette maniere.
seulement je voudrais plus tot que d animer mon point tracer un dessin.
pour cela j ai besoin des coordones de 2 point  (au temps t1 et au temps t2) hors je n ai que 1 point a la foi.
comment puije reprendre les coordonnes du point precedant ??

Code:
**************PROCESSING***************

import processing.serial.*;
Serial myPort;


void setup()
{
  size( 800, 800 );//taille fenetre
  background( 0 );// couleur du fond
  myPort = new Serial(this, Serial.list()[0], 9600); //[port] de l entree et
  myPort.bufferUntil(' ');
}



void draw() {  
}

void serialEvent( Serial myPort )
{
  String inString = myPort.readStringUntil( '\n' );

  if( inString != null )
  {
    inString = trim( inString );
    int[] coords = int( split( inString, ',' ) );
    background(255);//couleur du fond (blanck)
    stroke(100);// couleur du tour du cercle
    fill(100);// couleur de l interieu du cercle
    int i=0;
  
    int x = coords[0];
    int y =  coords[1];
    // on va limiter les contours du dessin
    if (x<700 & y<700){
      if (x>0 & y>0){
        ellipse(y, x, 10, 10); // permet de tracer un cercle qui suit notre point
      }
    }
  
  
  }
}
« Last Edit: February 10, 2013, 12:00:21 pm by Jean-François » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok desole  smiley-roll-sweat
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu as presque tout ici pour Processing :

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.OUTILSProcessing

Et coté Arduino (+ Processing) :

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertSerieDepuisPCReceptionStringProcessing
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1]   Go Up
Jump to: