Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


notas:animacionmorse

Telégrafo en processing

Este programa es una animación processing que reproduce, en código morse, el mensaje propuesto por WWF es “APAGA LA LUZ TODO IRA BIEN”.

La palabra clave saveFrame() del final del programa graba la imagen actual para generar un video.

Puede ver el vídeo generado en: https://vimeo.com/400708482

Este programa reutiliza código de mi vieja página web, disponible en http://jgmoyay.apagada.com

/* ------------- RUTINA MORSE --------------------------------- */
/* ------------- COPYRIGHT J.G.M.Y. 2002 ---------------------- */
/* Juego caracteres morse. Incompleto. Debo añadir números */
String[] morse={
      ".-","-...","-.-.","-..",
      ".","..-.","--.","....",
      "..",".---","-.-",".-..",
      "--","-.","--.--","---",
      ".--.","--.-",".-.","...",
      "-","..-","...-",".--",
      "-..-","-.--","--..",
      ".-.-.-","..--..","--..--",
      ".----","..---","...--",
      "....-",".....","-....",
      "-....","--...","---..",
      "----.","-----",".-..-."
   };
   String definidos="abcdefghijklmnñopqrstuvwxyz.?!1234567890"+'"';
 
String morseSequence;
String tomorse(String inText){
      String st1="";
      String st2="";
      int f=0;
      int d=0;
      String t=""+inText;
      for (f=0;f<t.length();f++){
        st1=""+(t.toLowerCase()).charAt(f);
        d=definidos.indexOf(st1);
        if (d>=0){
          st2+=morse[d];
        } else {
          st2+=t.charAt(f);
        }
        /* Esto genera un espacio entre letras, o
           tres entre palabras */
        st2+=" ";
      }
      return st2;
    }
 
    String encodeMe="APAGA LA LUZ TODO IRA BIEN    ";
    void setup(){
    size(800,600);
    float dpi=96;
    float points=min(height/4,width/4)*72/dpi;
    textFont(createFont("Arial",points));
    textSize(points);
 
    String morseText=tomorse(encodeMe);
    morseSequence=morseText;
    // replace word space with 6 spacing intervals.
    // an additional interval will come from the spacing after dash/dot
    morseSequence=morseSequence.replace("   ","000000");
    // replace symbol space letter with 2 spacing intervals.
    // an additional interval will come from the spacing after dash/dot
    morseSequence=morseSequence.replace(" ","00"); 
    // replace dash with 3 on intervals and 1 off interval. 
    morseSequence=morseSequence.replace("-","1110");
    // deplace dot with quick on-off sequence
    morseSequence=morseSequence.replace(".","10");
    println(morseText);
    println(morseSequence);
    frameRate (4);
}
 
  int blankCount=0;
  int currentChar=0;
  void draw(){
    char status;
    int f=frameCount % morseSequence.length();
    if (f==0) {
       currentChar=0; 
    }
    status=morseSequence.charAt(f);
 
    if (status=='1'){
      background(255);
      fill(0);
      blankCount=0;
    } else {
 
       background (0);
       fill(255);
       blankCount++;
       if (blankCount==3|blankCount==7) {
         currentChar++;
       }
    } 
    textAlign(CENTER);
    text(encodeMe.charAt(currentChar),width/2,height/2+(textAscent()+textDescent())/2);
  saveFrame("Fotograma_"+nf(f,3));  
}
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
notas/animacionmorse.txt · Última modificación: 2020/03/25 15:38 por nepenthes