Netherlands
Offline
Newbie
Karma: 0
Posts: 5
arduino student
|
 |
« on: March 30, 2012, 05:15:31 am » |
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 // 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: 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
Edison Member
Karma: 34
Posts: 1074
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #1 on: March 30, 2012, 05:52:55 am » |
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: 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
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 5
arduino student
|
 |
« Reply #2 on: March 30, 2012, 06:15:39 am » |
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: 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
Edison Member
Karma: 34
Posts: 1074
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #3 on: March 30, 2012, 06:53:19 am » |
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
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 5
arduino student
|
 |
« Reply #4 on: March 30, 2012, 07:51:17 am » |
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
Edison Member
Karma: 34
Posts: 1074
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #5 on: March 30, 2012, 09:05:38 am » |
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
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 5
arduino student
|
 |
« Reply #6 on: April 02, 2012, 02:43:32 pm » |
Hallo! Ik heb het werkend gekregen. De code voor arduino heb ik niet aangepast. Voor processing heb ik deze code gebruikt: 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
Edison Member
Karma: 34
Posts: 1074
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #7 on: April 02, 2012, 04:25:50 pm » |
Renaldo Blij te horen dat je het hebt op kunnen lossen. Was het inderdaad een thread probleem? Met vriendelijke groet. Jantje
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 5
arduino student
|
 |
« Reply #8 on: April 02, 2012, 04:36:08 pm » |
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
Sr. Member
Karma: 3
Posts: 383
|
 |
« Reply #9 on: April 03, 2012, 08:52:20 am » |
@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
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 90
Posts: 9414
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #10 on: April 03, 2012, 01:27:45 pm » |
"Arduino waarde naar processing [SOLVED]" [OPGELOST] ?
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Belgium
Offline
Edison Member
Karma: 34
Posts: 1074
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #11 on: April 03, 2012, 02:23:15 pm » |
[OPGELOST] Das de juiste spirit  Met groeten uit vlaanderen Jantje
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Hamme, Belgium
Offline
Sr. Member
Karma: 3
Posts: 383
|
 |
« Reply #12 on: April 03, 2012, 02:34:02 pm » |
[OPGELOST] Das de juiste spirit
Met groeten uit vlaanderen Jantje jajaja, net wat ik bedoelde 
|
|
|
|
|
Logged
|
|
|
|
|
|