{"id":353,"date":"2012-12-30T19:14:32","date_gmt":"2012-12-30T18:14:32","guid":{"rendered":"http:\/\/www.valcon.it\/processing\/?p=353"},"modified":"2024-07-12T10:51:48","modified_gmt":"2024-07-12T08:51:48","slug":"pong-clock","status":"publish","type":"post","link":"https:\/\/www.valcon.it\/processing\/pong-clock\/","title":{"rendered":"PONG CLOCK"},"content":{"rendered":"<p>Un orologio molto movimentato&#8230;<\/p>\n<ul>\n<li>Versione originale:\u00a0<a href=\"http:\/\/www.sandermulder.com\/\">http:\/\/www.sandermulder.com\/<\/a><\/li>\n<li>Versione con Arduino:\u00a0<a href=\"http:\/\/123led.wordpress.com\/about\/\">LED Pong Clock<\/a><\/li>\n<\/ul>\n<p>In questa versione<\/p>\n<ul>\n<li>la palla si sincronizza con l&#8217;orologio del tuo computer al primo cambio dei minuti<\/li>\n<li>successivamente la palla segnala\n<ul>\n<li>i\u00a0<strong>secondi<\/strong>, ogni volta che urta una paletta<\/li>\n<li>i\u00a0<strong>minuti<\/strong>, quando\u00a0<em>va fuori<\/em>\u00a0e riparte dalla parte opposta con una nuova traiettoria<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><em>Il movimento delle palette potrebbe essere reso ancora pi\u00f9 naturale<\/em>.<\/p>\n<ul>\n<li><a href=\"http:\/\/www.valcon.it\/processing-\/OrologioPong.jar\"><strong>Applicazione Java<\/strong><\/a><\/li>\n<\/ul>\n<pre>final float dimPalla=5;\r\nfloat minX, maxX, minY, maxY, dimX, dimY, lineaP; \r\ncolor lineaS;\r\nBARRA barra_s, barra_d;\r\nfloat barraB, barraH;      \r\nPALLA palla;\r\nfloat xp, yp;      \r\nint   h, m, m2, s, mm, ritardo;\r\n\r\nPFont font;\r\n\r\nvoid setup()\r\n{\r\n  size(500, 350); \r\n  rectMode(CENTER);  \r\n  smooth();                  \r\n  strokeWeight(2);   \r\n  font=loadFont(\"C20.vlw\"); \r\n  textFont(font);\r\n  textAlign(CENTER);\r\n\r\n  lineaP=width\/2;  \r\n  lineaS=color(200, 200, 100);\r\n  barraB=width\/40;\r\n  barraH=height\/8;\r\n\r\n  minX=1.5*barraB;  \r\n  minY=dimPalla;\r\n  maxX=width-minX;  \r\n  maxY=height-dimPalla;\r\n  dimX=maxX-minX;   \r\n  dimY=maxY-minY;\r\n\r\n  barra_s=new BARRA(barraB, height\/2, barraB, barraH); \r\n  barra_d=new BARRA(width-barraB, height\/2, barraB, barraH);   \r\n  palla=new PALLA();\r\n\r\n  ritardo=0;  \r\n}\r\n\r\nvoid draw()\r\n{\r\n  background(0);\r\n\r\n  \/\/ linea verticale\r\n  stroke(lineaS);\r\n  line(lineaP, minY, lineaP, maxY);                       \r\n\r\n  \/\/ orologio digitale\r\n  h=hour();\r\n  m2=minute();         \r\n  s=second();\r\n  mm=millis();  \r\n  if(m2 != m)\r\n  {\r\n\tpalla=new PALLA(); \r\n\tm=m2;\r\n\tritardo=mm;\r\n\tif(m%2 == 0)\r\n\t  ritardo-=1000;\r\n  } \r\n  mm=mm-ritardo;\r\n\r\n  fill(255);  \r\n  text(nf(h, 2), lineaP-20, 20);            \r\n  text(nf(m, 2), lineaP+20, 20);            \r\n\r\n  palla.aggiorna();\r\n\r\n  xp=palla.x();\r\n  yp=palla.y();\r\n  barra_s.aggiorna(xp, yp);\r\n  barra_d.aggiorna(xp, yp);\r\n}\r\n\r\n\r\nclass BARRA\r\n{\r\n  final color coloref=color(50, 150, 150);  \r\n  final color colores=color(25, 75, 75);  \r\n\r\n  float x, y;\r\n  float B, H;\r\n  float minYb, maxYb;\r\n\r\n  BARRA(float nx, float ny, float nB, float nH)\r\n  {\r\n\tx=nx;\r\n\ty=ny;\r\n\tminYb=barraH\/2+dimPalla;\r\n\tmaxYb=height-barraH\/2-dimPalla;\r\n  }\r\n  void aggiorna(float nx, float ny)\r\n  {\r\n\tif(s &lt; 59)\r\n\t{\r\n\t  if(x &lt; lineaP &amp;&amp; nx &lt; lineaP || x &gt; lineaP &amp;&amp; nx &gt; lineaP)\r\n\t  {\r\n\t\tif(ny &gt; maxYb)\r\n\t\t  y=maxYb;\r\n\t\telse if(ny &lt; minYb)\r\n\t\t  y=minYb;\r\n\t\telse\r\n\t\t  y=(y+ny)\/2;   \r\n\t  }\r\n\t}  \r\n\tstroke(colores);   \r\n\tfill(coloref);\r\n\trect(x, y, barraB, barraH);\r\n  }\r\n}\r\n\r\nclass PALLA\r\n{\r\n  final color colores=color(200, 100, 100);\r\n  final color coloref=color(255, 200, 100);\r\n\r\n  final float minANG=PI\/20, maxANG=PI\/2.5;\r\n\r\n  float   diametro;\r\n  float   x, y;\r\n  float   Y0, dx, dy, seno;\r\n\r\n  PALLA()\r\n  {\r\n\tdiametro=dimPalla;\r\n\tY0=random(dimY);\r\n\tseno=sin(random(minANG, maxANG));\r\n  } \r\n  void aggiorna()\r\n  {             \r\n\tif(s &lt; 59) { dx=mm*dimX\/1000.0; dy=Y0+seno*dx; dx=dx%dimX; if((mm\/1000) % 2 == 0) x=minX+dx; else x=maxX-dx; y=dy%(2*dimY); if(y &gt; dimY)\r\n\t\ty=2*dimY-y;\r\n\t  y+=minY;\r\n\r\n\t  stroke(colores);\r\n\t  fill(coloref);\r\n\t  ellipse(x, y, diametro, diametro);    \r\n\t}\r\n  }\r\n\r\n  float x() { \r\n\treturn x; \r\n  }\r\n  float y() { \r\n\treturn y; \r\n  }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un orologio molto movimentato&#8230; Versione originale:\u00a0http:\/\/www.sandermulder.com\/ Versione con Arduino:\u00a0LED Pong Clock In questa versione la palla si sincronizza con l&#8217;orologio del tuo computer al primo cambio dei minuti successivamente la palla segnala i\u00a0secondi, ogni volta che urta una paletta i\u00a0minuti, quando\u00a0va fuori\u00a0e riparte dalla parte opposta con una nuova traiettoria Il movimento delle palette potrebbe &#8230; <a title=\"PONG CLOCK\" class=\"read-more\" href=\"https:\/\/www.valcon.it\/processing\/pong-clock\/\" aria-label=\"Per saperne di pi\u00f9 su PONG CLOCK\">Leggi tutto<\/a><\/p>\n","protected":false},"author":1,"featured_media":9631,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app"],"_links":{"self":[{"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":4,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"predecessor-version":[{"id":9751,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/posts\/353\/revisions\/9751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/media\/9631"}],"wp:attachment":[{"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.valcon.it\/processing\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}