We are about to switch to a new forum software. Until then we have removed the registration on this forum.
I cant get my instrument to work :-(
I have got this instrument to work, with mouseX in the lines (78 and 79) Now i have tried to use inByte instead of mouseX I have got a test program running with println. writing the arduino number in the Lower window
the attached program is a mixed program, doing all but moving the meter pin. no errors occure.
import processing.serial.*;
Serial myPort;
float brightness = 0;
void setup ()
{
background (240,200,0);
float Xverdi;
float Yverdi;
float Xverdiextra;
float Yverdiextra;
float tal;
float vinkel;
int qrt;
int i;
size(600, 300);
// Opsætning af skala i 10 trin fra vinkel 0
for (tal = 0; tal < 11; tal = tal+1)
{
vinkel=tal*(PI/10);
Yverdi=(-sin(vinkel))*200;
Xverdi=(cos(vinkel))*200;
Yverdiextra=(-sin(vinkel))*230;
Xverdiextra=(cos(vinkel))*230;
line(300+Xverdi, 270+Yverdi, 300+Xverdiextra, 270+Yverdiextra);
}
// Opsætning af skala i 10 mellemtrin fra vinkel 0
for (tal = 0.5; tal < 10.5; tal = tal+1)
{
vinkel=tal*(PI/10);
Yverdi=(-sin(vinkel))*200;
Xverdi=(cos(vinkel))*200;
Yverdiextra=(-sin(vinkel))*220;
Xverdiextra=(cos(vinkel))*220;
line(300+Xverdi, 270+Yverdi, 300+Xverdiextra, 270+Yverdiextra);
}
// Opsætning af skala i 10 mellemtrin fra vinkel 0
for (tal = 0; tal < 10; tal = tal+0.1)
{
vinkel=tal*(PI/10);
Yverdi=(-sin(vinkel))*200;
Xverdi=(cos(vinkel))*200;
Yverdiextra=(-sin(vinkel))*215;
Xverdiextra=(cos(vinkel))*215;
line(300+Xverdi, 270+Yverdi, 300+Xverdiextra, 270+Yverdiextra);
}
// Den følgende del tager sig af at skrive skalaen på instrumentet
for (tal = 0; tal < 11; tal = tal+1)
{
vinkel=tal*(PI/10);
Yverdi=(-sin(vinkel))*250;
Xverdi=(cos(vinkel))*250;
qrt=10-(round(vinkel*3.1));
//rotate(1);
textSize(30);
textAlign(CENTER, CENTER);
text (qrt, 300+Xverdi, 270+Yverdi);
}
}
// opsætning af viser til instrument denne del gentages for evigt
float Xverdi;
float Yverdi;
float inByte=0;
void draw ()
{
// ***************************************************************************
// Her skal indsættes en del der henter fra microcontroler og
// Tilpasser til det rette format
// Husk også at rette i det punkt hvor Enheden skrives på
myPort = new Serial (this, "COM7", 9600);
myPort.bufferUntil ('\n');
inByte = myPort.read();
// ***************************************************************************
stroke(240,200,0);
fill (240,200,0);
ellipse (300, 270, 400, 400);
Yverdi=(-sin((PI/598)*inByte))*195; //i øjeblikket er max sat til 600
Xverdi=(cos((PI/598)*inByte))*195;_
stroke(0);
strokeWeight(4);
line (302, 270, Xverdi+302, Yverdi+270);
}
Answers
Siger med det samme jeg er ny her, og jeg ejer ikke en adrduino så kan ik teste det.
Men tænker måske du ikke skal starte ny serial forbindelse hele tiden i draw og bare sæt den en gang i setup istedet.
fra draw
myPort = new Serial (this, "COM7", 9600);
til setup
og måske hvis du arbejder med små tal(ikke 0-600) vil du slet ikke kunne se nogen forskel.
og self som der også står i kommentarne, tjek at det er den rigtige com port den er sat til.
bare de fejl kilder jeg kunne komme på best of luck
thank you Jellyfish
I do only send a 127 from the arduino so the value should be within a byte
The serial port I am using is the same used when programing the arduino. only 2 ports are shown in the arduino, and when i use COM7 in the test program i get my "127".
the program send did work as the old one :-)
forstår ikke.. så det virker? ellers har jeg lige ændret lidt i koden oven over.
Hej Jellyfish
Den serielle del virker stadig ikke. pilen på instrumentet bevæger sig stadig ikke jeg har lige set, at den virkede forkert men nu har jeg skiftet de -sin((PI til -sin((PI og sat inByteInt til 166 for at vise hvordan det skal se ud når jeg får en byte ind
nonsense message deleted
Hej Jellyfish
Den serielle del virker stadig ikke. pilen på instrumentet bevæger sig stadig ikke. Jeg har lige set, at den virkede forkert, men nu har jeg skiftet de "-sin((PI" til "-sin((PI" og sat inByteInt til 166 for at vise hvordan det skal se ud når jeg får en byte ind.
Hej Jellyfish
Den serielle del virker stadig ikke. pilen på instrumentet bevæger sig stadig ikke. Jeg har lige set, at den virkede forkert, men nu har jeg skiftet de "-sin((PI" til "-sin((PI" og sat inByteInt til 166 for at vise hvordan det skal se ud når jeg får en byte ind.
Har du prøvet et af de eksempler der kommer med processing og fået det til at virke? så kan vi finde ud af om det er koden det er galt. prøv Filer -> exampels -> serial -> simple read
Hej Jellyfish
jeg har bygget mit program på et jeg lånte på processing, men det har jeg smadret
Dette program virker, Skriver i meddeleses feltet og farver firkanten.
jeg vender tilbage i aften, når jeg har prøvet at tilpasse det
ok har ændret koden i comment 2 igen. Hvis det ikke virker må jeg nok indrømme jeg er for noob til at kunne hjælpe.
Prøv også at sende som byte fra arduino
Hej Jellyfish
Jeg prøvede at trække mit program over i det nye eksempel jeg viste dig i min sidste kommentar og nu virker det rimeligt. viseren flakker meget men det regner jeg med ligger i adkonverteringen, og den programering jeg har lavet der.
Du skal have mange tak for din hjælp!
Der er imidlertid lige et spørgsmål mere :-) hvis du gider
Jeg definere alle mine variable i starten af programmet men den vil ikke accepterer Xverdi og Yverdi når jeg kommer ned i draw
når du laver en variabel inde under en funktion (her setup) er den variabel lokal dvs. du kan kun få adgang til den variabel under den funktion, den findes ingen andre steder. Men hvis du istedte starter variablen udenfor en funktion (oftest helt i toppen /istarten) så er det en "global" variabel som kan ændres i hvilken somhelst funktion. din "int val;" er global.
Nice det fungerer! :)