Pages: [1]   Go Down
Author Topic: Arduino waarde naar processing [OPGELOST!]  (Read 2696 times)
0 Members and 1 Guest are viewing this topic.
Netherlands
Offline Offline
Newbie
*
Karma: 0
Posts: 5
arduino student
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo!

Ik ben op dit moment bezig met het bouwen van een morsecode installatie, met een knop. In arduino wordt dit verwerkt en in de Serial Monitor komen de letters tevoorschijn als er geklikt is op de knop. In processing wil ik de Serial Monitor lezen en deze weergeven in een scherm, maar hier gaat het fout. Ik krijg de letters niet te zien in het scherm.. Weten jullie misschien hoe ik dit werkend kan krijgen? Ik ben radeloos!



ARDUINO CODE
Code:
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int i = 0;
int itw = 0;
String morseVar;

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

  Serial.begin(9600);
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  delay(buttonState + 100);

  if(buttonState == 1)
  {
    i++;
    itw = 0;
  }
  else
  {
    if (i == 1 || i == 2)
    {
     morseVar = morseVar + "K";
     i=0;
    }
    else if (i >= 3)
    {
     morseVar = morseVar + "G";
     i=0;
    }
  };
  
   if(buttonState == 0)
  {
    if(morseVar == ""){}
    else {itw++;};
    
    if (itw > 10)
    {
     morseVar = morseVar + "X";
     itw=0;
    }
  };
  
   if(morseVar.length() == 4)
  {
    if (morseVar == "KGXX")
    {
      Serial.println("A");
      morseVar = "";
    }
    else if (morseVar == "GKKK")
    {
      Serial.println("B");
      morseVar = "";
    }
    
    HET ALFABET --> ENZ...

    else if (morseVar == "GGKK")
    {
      Serial.println("Z");
      morseVar = "";
    }
    else
    {
      morseVar = "";
    }
  }
  
  if (buttonState == HIGH) {      
    digitalWrite(ledPin, HIGH);
    tone(6, 10, 1000);
  }
  else {
    digitalWrite(ledPin, LOW);
    noTone(6);
  }

}

PROCESSING CODE:
Code:
import processing.serial.*;

Serial port;
String input;
String zin;
int i = 0;

void setup() {
  // Setup the screen for output.
  textFont(createFont("Arial", 25));
  size(500, 300);
  background(0);
  fill(255);
  // List all the available serial ports:
  println(Serial.list());
  port = new Serial(this, Serial.list()[0], 9600);
  noLoop();
}

// Process a line of text from the serial port.
void serialEvent(Serial p) {
      input = (port.readString());
      if(input == null)
      {}
      else
      {
      
      zin = input;
      }
      loop();
}

void draw() {
  if(input== null)
  {}
  else{
  i++;  
  print(i);
    print(input);

    if(i==1)
    {text(input, 20, 60);noLoop();}
    if(i==2)
    {text(input, 37, 60);noLoop();}
  noLoop();
  }
}
« Last Edit: April 04, 2012, 09:24:03 am by renaldo90 » Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dag Renaldo90
Als ik je setup zo bekijk zie ik niet direct iets fout.
Wat ik me wel afvraag is waarom je arduino code en proicessing code hebt. Heb je zelf je serial montitor geschreven?
Indien zo heb je al eens geprobeerd met de arduino IDE bijgeleverde monitor?
Wat ik zou doen is de setup code vervangen door deze:
Code:
void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

  Serial.begin(9600);
  Serial.println("morse code sleutel is klaar voor gebruik");
}
Zo weet je zeker of serial werkt of niet.
Indien je de boodschap krijgt op je monitor zit het probleem in je morse code afhandeling. Anders zit het in je monitor setup.
Dan kan je best de IDE monitor proberen en zorg er zeker voor dat je daar ook 9600 gebruikt. Anders zie je ook niks.

Met vriendelijke groet
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Netherlands
Offline Offline
Newbie
*
Karma: 0
Posts: 5
arduino student
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dag Renaldo90
Als ik je setup zo bekijk zie ik niet direct iets fout.
Wat ik me wel afvraag is waarom je arduino code en proicessing code hebt. Heb je zelf je serial montitor geschreven?
Indien zo heb je al eens geprobeerd met de arduino IDE bijgeleverde monitor?
Wat ik zou doen is de setup code vervangen door deze:
Code:
void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

  Serial.begin(9600);
  Serial.println("morse code sleutel is klaar voor gebruik");
}
Zo weet je zeker of serial werkt of niet.
Indien je de boodschap krijgt op je monitor zit het probleem in je morse code afhandeling. Anders zit het in je monitor setup.
Dan kan je best de IDE monitor proberen en zorg er zeker voor dat je daar ook 9600 gebruikt. Anders zie je ook niks.

Met vriendelijke groet
Jantje

Beste Jantje,

Ik heb al veel tests uitgevoerd en ben erachter gekomen dat het probleem niet in de arduino code ligt, maar in de processing code. Ik heb inderdaad de code zelf geschreven. Het probleem is volgens mij dat de scope van de variable alleen in de functie void serialEvent(Serial p) blijft. Ik heb geen idee hoe ik deze variable globaal kan maken..
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Renaldo
Heb je al getest met de arduino serial monitor.
Als het daar mee werkt weet je zeker dat het aan je code ligt.
Als het aan je code ligt zal je toch wat meer info moeten geven wat je gebruikt om die code te schrijven.
In welke tool/taal schrijf je die code? Op basis van de import lijkt het me java te zijn. Java heeft echter geen goede ondersteuning voor serial monitors. Ikzelf heb er uren aan gespendeerd om het aan het werk te krijgen.
Waarom wil je je eigen serial monitor schrijven?

Met vriendelijke groet.
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Netherlands
Offline Offline
Newbie
*
Karma: 0
Posts: 5
arduino student
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beste Jantje,

De code die ik gebruik is de code van arduino. Volgens mij zie ik iets over het hoofd of heb ik het verkeerd uitgelegd.

De serial monitor werkt goed. Als ik deze test, dan krijg ik in processing de letter die ik in arduino in de serial monitor heb gezet. Alleen verlies ik de letter (die in de variable input zit) als hij buiten de functie "void serialEvent(Serial p)" is. Ik heb de input bovenaan de code genoemd, dus het zou een globale variable moeten zijn, maar toch pakt hij het niet in de functie void draw(). Misschien ligt het aan de volgorde dat de scripts worden gelezen?? Bij void draw() gaat er dus iets fout.. Weet jij misschien wat hier precies aan de hand is?

Met vriendelijke groet,

Renaldo
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Renaldo
Volgens mij heb je een java multythreading probleem. Ik kan je daar echter zelf niet mee helpen daar ik er niet genoeg vanaf ken.

Met vriendelijke groet
Jan
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Netherlands
Offline Offline
Newbie
*
Karma: 0
Posts: 5
arduino student
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo!

Ik heb het werkend gekregen. De code voor arduino heb ik niet aangepast. Voor processing heb ik deze code gebruikt:

Code:
import processing.serial.*;

Serial port;
PImage b;
String input = "";
String zin = "";

void setup() {
  // Setup the screen for output.
  textFont(createFont("Arial", 25));
  size(300, 460);
  b = loadImage("background.jpg");
  background(b);
  fill(255);
  // List all the available serial ports:
  println(Serial.list());
  port = new Serial(this, Serial.list()[0], 9600);
}

void draw() { 
  if(port.available() > 0)
    {
      b = loadImage("background.jpg");
      background(b);
      input = (port.readString());
      print(input);
      zin = zin + input;
      text(zin, 30, 40);
    }
    else
    {};
}

Renaldo
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Renaldo
Blij te horen dat je het hebt op kunnen lossen.
Was het inderdaad een thread probleem?
Met vriendelijke groet.
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Netherlands
Offline Offline
Newbie
*
Karma: 0
Posts: 5
arduino student
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jantje,
Ik weet niet zo goed wat een thread probleem is, maar het probleem was dat de functie die tussen setup en draw stond, niet goed gelezen werd. Ik heb nu de losse functie in draw gevoegd en werkt gelukkig nu!
Bedankt voor je tijd!

Renaldo
Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 390
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@renaldo90 als ik mag voorstellen om de titel van je oorspronkelijke post te wijzigen naar:

"Arduino waarde naar processing [SOLVED]"

zo weet iedereen meteen, dat je probleem werd opgelost. Probeer dit ook te doen in andere forum-secties.

veel Arduino plezier.
Logged


Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 227
Posts: 14007
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
"Arduino waarde naar processing [SOLVED]"
[OPGELOST]  ?  smiley-wink
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1926
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

[OPGELOST]
Das de juiste spirit   smiley-grin

Met groeten uit vlaanderen
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 390
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
[OPGELOST]
Das de juiste spirit   

Met groeten uit vlaanderen
Jantje

jajaja, net wat ik bedoelde  smiley-kiss
Logged


Pages: [1]   Go Up
Jump to: