domingo, 22 de abril de 2018

JavaFX - pisca-pisca alternado

Nos tempos em que estávamos aprendendo
eletrônica básica, um dos primeiros
circuitos que aprendemos a montar foi
um multivibrador astável.

Ele utilizava dois transistores e alguns componentes
passivos tais como resistores, capacitores e dois
leds para as piscadas alternadas.
A frequência de oscilação era determinada basicamente

pelos capacitores com limites de correntes feito pelos resistores.
Que saudades destes tempos meus amigos,
nosso pequeno laboratório, nossos colegas
do curso, alguns se deram muito bem,
e hoje nem falam mais comigo.
O que temos por aqui é um código em java
com interface criada em javaFX que simula
um multivibrador astável indicado aos amantes de java.


Veja abaixo uma imagem do programa em execução: 

 

                                                    
                                                     


Veja abaixo um vídeo com o programa funcionando:



 Veja abaixo o código do programa:  


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.util.Duration;
import javafx.animation.*;

public class PROJETO extends Application {
     public Canvas canvas = new Canvas ( 500, 300 );
     public GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     BorderPane root = new BorderPane ( );
     Scene scene = new Scene ( root, 500, 300, Color.WHITE );
     ImageView imageView_1 = new ImageView ( );
     ImageView imageView_2 = new ImageView ( );
     private static Timeline videoTick;
     static int k = 0;
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 200, 235 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 230, 235 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 200, 250 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 210, 275 );
         ctx.setFill ( Color.BLACK );
     }
     // /////////////////////////////////////////////////////////////////////////
     public int Image_View_1 ( ) throws FileNotFoundException {
         Image image_1 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\"
                            + "src\\Foto\\red_button.png" ) );
         imageView_1 = new ImageView ( image_1 );
         // Coluna
         imageView_1.setX ( 130 );
         // Linha
         imageView_1.setY ( 110 );
         // Largura
         imageView_1.setFitHeight ( 100 );
         // Altura
         imageView_1.setFitWidth ( 100 );
         imageView_1.setPreserveRatio ( true );
         root.getChildren ( ).addAll ( imageView_1 );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////////////
     public int Image_View_2 ( ) throws FileNotFoundException {
         Image image_2 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\"
                            + "src\\Foto\\black_button.png" ) );
         imageView_2 = new ImageView ( image_2 );
         // Coluna
         imageView_2.setX ( 280 );
         // Linha
         imageView_2.setY ( 110 );
         // Largura
         imageView_2.setFitHeight ( 100 );
         // Altura
         imageView_2.setFitWidth ( 100 );
         imageView_2.setPreserveRatio ( true );
         root.getChildren ( ).addAll ( imageView_2 );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////////////
     public int Image_View_3 ( ) throws FileNotFoundException {
         Image image_1 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\"
                            + "src\\Foto\\black_button.png" ) );
         imageView_1 = new ImageView ( image_1 );
         // Coluna
         imageView_1.setX ( 130 );
         // Linha
         imageView_1.setY ( 110 );
         // Largura
         imageView_1.setFitHeight ( 100 );
         // Altura
         imageView_1.setFitWidth ( 100 );
         imageView_1.setPreserveRatio ( true );
         root.getChildren ( ).addAll ( imageView_1 );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////////////
     public int Image_View_4 ( ) throws FileNotFoundException {
         Image image_2 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\"
                            + "src\\Foto\\red_button.png" ) );
         imageView_2 = new ImageView ( image_2 );
         // Coluna
         imageView_2.setX ( 280 );
         // Linha
         imageView_2.setY ( 110 );
         // Largura
         imageView_2.setFitHeight ( 100 );
         // Altura
         imageView_2.setFitWidth ( 100 );
         imageView_2.setPreserveRatio ( true );
         root.getChildren ( ).addAll ( imageView_2 );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////////////
     // Abaixo a função usada como clock criada por mim
     public int Sleep ( int x ) {
         while ( k <= 3 ) {
              Duration duration = Duration.millis ( x );
              videoTick = new Timeline ( new KeyFrame ( duration,
                        new EventHandler < ActionEvent > ( ) {
                   public void handle ( ActionEvent actionEvent ) {
                        k++;
                        System.out.println ( k );
                        if ( k == 1 ) {
                            try {
                                 Image_View_1 ( );
                                 Image_View_2 ( );
                            } catch ( FileNotFoundException e ) {
                                 // TODO Auto-generated catch block
                                 e.printStackTrace ( );
                            }
                        }
                        if ( k == 2 ) {
                            try {
                                 Image_View_2 ( );
                            } catch ( FileNotFoundException e ) {
                                 // TODO Auto-generated catch block
                                 e.printStackTrace ( );
                            }
                        }
                        if ( k == 3 ) {
                            try {
                                 Image_View_3 ( );
                                 Image_View_4 ( );
                                 // imageView_1.setVisible ( true );
                            } catch ( FileNotFoundException e ) {
                                 // TODO Auto-generated catch block
                                 e.printStackTrace ( );
                            }
                        }
                        if ( k == 4 ) {
                            try {
                                 Image_View_4 ( );
                            } catch ( FileNotFoundException e ) {
                                 // TODO Auto-generated catch block
                                 e.printStackTrace ( );
                            }
                            k = 0;
                        }
                   }
              } ) );
              break;
         }
         videoTick.setCycleCount ( Animation.INDEFINITE );
         videoTick.playFromStart ( );
         return k;
     }
     // /////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) throws FileNotFoundException {
         stage.setTitle ( "JAVAFX - PISCA-PISCA ALTERNADO" );
         // Usando fonte em italic
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - PISCA-PISCA ALTERNADO", 130, 40 );
         // Criando uma moldura na janela
         root.setStyle ( "-fx-padding: 5;"
                   + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 12;"
                   + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;"
                   + "-fx-border-color: darkblue;" );
         Informe ( );
         // Conta 1/2 segundo por pulso
         k = Sleep ( 500 );
         root.getChildren ( ).add ( canvas );
         stage.setScene ( scene );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         launch ( args );
     }
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.