Olá pessoal! Recentemente vi um programinha para fazer aplicativo chamado PROCESSING.
Um programa leve, versátil e muito poderoso. A IDE e a forma de programar dele é muito parecida com a do arduino o que facilitou bastante para mim. Acontece que estou tendo problemas para usar laços nele (if, for, while). Por exemplo eu escrevo um programa usando o laço "if" e se eu adaptar o programa para usar o laço "while" não funciona.
Vejam, este programa que escrevi faz com que um circulo passe pela tela de um lado para o outro.E funciona perfeito assim:
int x=-45;
void setup() //temm a mesma função do setup do arduino, só executa uma vez
{
size(200,200);
background(0);
}
void draw() //equivalente ao void loop no arduino(laço infinito)
{
if (x<245)
{
background(0);
ellipse(x,45,80,80);
delay(10);
x++;
}
}
Mas se eu fizer assim, ele não funciona mais, a tela fica só preta(eu acho que deveria funcionar):
int x=-45;
void setup()
{
size(200,200);
background(0);
}
void draw( )
{
while (x<245)
{
background(0);
ellipse(x,45,80,80);
delay(10);
x++;
}
}
outra forma que não funciona e que eu acho que deveria funcionar era usando um laço "for " no setup:
int x=-45;
void setup()
{
size(200,200);
background(0);
for(x=-45; x<245; x++)
{
background(0);
ellipse(x,45,80,80);
delay(10);
x++;
}
}
void draw()
{
}
Seria algum erro de síntase? Bom, desde já agradeço.
Tags:
Bom dia Rhaicmer,
O processing foi desenvolvido principalmente para gerar interfaces gráficas. E pode fazer interface com Arduino. Na verdade, a IDE do Arduino foi criada baseada no Processing.
https://www.arduino.cc/en/Guide/Introduction
Sugiro que estude a linguagem que é muito interessante. Não a usei ainda, mas já li um bocado sobre ela e gostei. Veja o link com a referência dos comandos e os inúmeros exemplos.
https://processing.org/reference/
https://processing.org/examples/
https://processing.org/reference/if.html
Obrigado pelo retorno.
Vou estudar mais, já dei uma olhada e vou olhar mais ainda para ver se algo esta passando despercebido.
Oi RBC, bom dia.
Não tenho certeza, mas analisando o seu exemplo, o que me pareceu foi o seguinte:
A imagem só é formada após terminar de executar uma função de imagem,
Como no segundo caso, o code ficou dentro da função while, a imagem só formou fora da tela de 200x200.
Testei com a tela "" size(400,400); "", e demorou alguns segundos em tela preta.
Quando x ficou maior que 245, o circulo apareceu +- no meio da tela, coordenada 245.
Teste aí e depois conta pra gente.
Rui
Eu tinha persebido isso, fiz um codigo onde desenho varias linhas horizontais uma abaixo da outra, mesmo dando delay, as linhas só aparecem quando o código sai da função while.
Fiz o teste agora com "size(400,400)" e é como você disse e agora está bem claro o que está acontecendo pois enquanto dentro de um laço as imagens não são atualizadas, mas como reverter isto?(com o laço for o resultado é o mesmo).
Olá gente, olha o que resolveria meu problema seria fazer uma animação simples rodar no void setup()(pode ser uma animação como esta que postei ai). Mas até agora não consegui usar laços como "while" e o "for" que teoricamente resolveria meu problema. E o "if" não da pra usar porque ele só executa uma vez.
Alguem tem uma idéia?
vejam o que eu estou fazendo...Não reparem muito a organização pois ainda nao optimizei o programa
import gifAnimation.*;
Gif loopingGif;
Gif maquina0;
Gif maquina1;
Gif maquina2;
Gif maquina3;
Gif maquina4;
Gif maquina5;
Gif maquina6;
Gif maquina7;
Gif maquina8;
Gif maquina9;
PFont font2;
PFont font1;
PImage perfil;
PImage logo;
PImage painelDevice;
PImage painelNome;
PImage painelMenu;
PImage est00; PImage est01; PImage est02; PImage est03; PImage est04;
PImage est05; PImage est06; PImage est07; PImage est08; PImage est09;
PImage est1;
int ref=1;
int x=0;
int y=265;
int posPainelx=250;
int posPainely=140;
void setup() {
size(1200,700);
frameRate(100);
loopingGif = new Gif(this, "bocca.gif");
maquina0 = new Gif(this, "maquina0.gif");
maquina1 = new Gif(this, "maquina1.gif");
maquina2 = new Gif(this, "maquina2.gif");
maquina3 = new Gif(this, "maquina3.gif");
maquina4 = new Gif(this, "maquina4.gif");
maquina5 = new Gif(this, "maquina5.gif");
maquina6 = new Gif(this, "maquina6.gif");
maquina7 = new Gif(this, "maquina7.gif");
maquina8 = new Gif(this, "maquina8.gif");
maquina9 = new Gif(this, "maquina9.gif");
perfil=loadImage("user.png");
logo=loadImage("iodevice.png");
est1=loadImage("mLigada.png");
est00=loadImage("mDesligada0.png"); est01=loadImage("mDesligada1.png"); est02=loadImage("mDesligada2.png"); est03=loadImage("mDesligada3.png"); est04=loadImage("mDesligada4.png");
est05=loadImage("mDesligada5.png"); est06=loadImage("mDesligada6.png"); est07=loadImage("mDesligada7.png"); est08=loadImage("mDesligada8.png"); est09=loadImage("mDesligada9.png");
painelNome=loadImage("painelS.png");
painelMenu=loadImage("painel.png");
painelDevice=loadImage("painelMaquina.png");
loopingGif.loop();
image(logo,0,0);
}
void draw() {
if(x<1000){
background(0);
image(logo,180,130);
image(loopingGif, 450,300);
x++;}
else{
background(0);
image(painelMenu,10,10);
image(perfil, 14, 20);
font2=loadFont("SegoeUIBlack-30.vlw"); textFont(font2); fill(0);
text("USUÁRIO",68,60);
image(painelNome,250,10);
for( y=265 ;y<1100; y+=180)
{
image(painelDevice,y,140);
image(painelDevice,y,440);
image(maquina0,300,150);
image(est00,270,250);
font1=loadFont("font.vlw"); textFont(font1); fill(0);
text("Máquina ",300,265);
image(maquina1,480,150);
image(est01,450,250);
text("Máquina ",480,265);
image(maquina2,660,150);
image(est02,630,250);
text("Máquina ",660,265);
image(maquina3,840,150);
image(est03,810,250);
text("Máquina ",840,265);
image(maquina4,1020,150);
image(est04,990,250);
text("Máquina ",1020,265);
image(maquina5,300,450);
image(est05,270,550);
text("Máquina ",300,565);
image(maquina6,480,450);
image(est06,450,550);
text("Máquina ",480,565);
image(maquina7,660,450);
image(est07,630,550);
text("Máquina ",660,565);
image(maquina8,840,450);
image(est08,810,550);
text("Máquina ",840,565);
image(maquina9,1020,450);
image(est09,990,550);
text("Máquina ",1020,565);
}
print(mouseX);
print(" ");
println(mouseY);
if(mousePressed)
{
if(mouseX>300 && mouseX<380 && mouseY>150 && mouseY<225)
{
if(ref==0)
{
ref=1;
}
else
{
ref=0;
}
}
if(ref==1)
{
maquina0.loop();
image(est1,270,250);
}
else
{
maquina0.stop();
image(est00,270,250);
}
}
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por