sábado, 30 de dezembro de 2017

Java FX - Primeira aplicação

Olá a todos, hoje trago um tutorial introdutório de JavaFX, abordando como usar JavaFx na IDE Eclipse sem o uso de plugin por ora. Necessitaremos que você tenha instalado em seu ambiente:

JDK do Java 1.8.x
Eclipse Oxygen

Vamos ao primeiros passos no Eclipse (No netbeans é equivalente).

Primeiro crie um novo projeto Java com ctrl + n ou como na imagem a seguir.



Certifique que está selecionando um projeto Java.




Em seguida, vamos nomear o nosso projeto e escolher a JRE instalada.



Após isso, crie uma nova classe a qual onde desenvolveremos o nosso código.



Nomeie a classe conforme ilustra a imagem, e marque a checkbox public static void main() (método principal de nossa aplicação).



Essa será a cara de nossa classe.


Para que ela seja uma classe de aplicação JavaFX, temos que adicionar extends Application , logo após o nome da classe e fazer a importação desta classe Application.


Note que aparecerá um erro. Quando uma classe extende de Application, a mesma necessita herdar método abstrado da Application, O eclipse lhe auxiliará em consertar este erro, Clique em add unimplemented method.


Em seguida vamos ter o método start(Stage primaryStage), esté método preparará o palco para as nossas futuras cenas, este palco é a "borda" de todos os programas que temos em nosso computador, inclusive deste navegador, e cada Sistema operacional tem suas categorias peculiares.




Agora sim vamos criar nosso código, mas antes, explicarei em tópico oque cada um é:


  • AnchorPane : É um Node, onde ficarão contidos (De forma "ancorada") todos os demais Nodes. Seu método .prefSize(), recebem dois parâmetros (X e Y) para definir sua área .
  • TextField : Um Node o qual recebe textos e também há a possibilidade de setar textos no mesmo com o .getText e .setText.
  • Lable : Node o qual serve de texto fixo.
  • Button: Como o próprio nome já diz, é um Node do tipo Botão o qual executa ações. Seu método setOnAction comprova isso, criamos um Handle, onde será disparado quando o mesmo for clicado e fará uma ação.
  • VBox : É um Node do tipo container, onde ele alinha dodos seus Nodes internos na Vertical, daí seu nome.
  • Scene : Como introduzido, o JavaFX é semelhante a uma peça de teatro, onde temos o palco (Stage), os atos(Action), os atores (TextField, Buttons, Labels ... ) e também, temos a Cena (Scene), é o local onde ocorrerá oque o usuário deseja.



import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class AppBlogFX extends Application { public static void main(String[] args) { launch(); } @Override public void start(Stage primaryStage) throws Exception { AnchorPane root = new AnchorPane(); root.setPrefSize(400, 400); TextField tfMensagem = new TextField(); tfMensagem.setPromptText("Digite sua mensagem aqui!"); Label lblMensagem = new Label(); Button btnAction = new Button("Aperte"); btnAction.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { if(tfMensagem.getText().isEmpty()) { lblMensagem.setText("Digite uma mensagem!"); } else { lblMensagem.setText(tfMensagem.getText()); } } }); VBox vb = new VBox(tfMensagem, btnAction, lblMensagem); vb.setLayoutX(100); vb.setLayoutY(200); root.getChildren().add(vb); Scene cena = new Scene(root); primaryStage.setScene(cena); primaryStage.show(); } }

terça-feira, 5 de setembro de 2017

O Java FX





Resultado de imagem para Java FX




O Java FX é uma plataforma desenvolvida pela Oracle atualmente nas mãos da Gluon, construída em Java possibilitando ferramentas para uso em aplicações nas mais variadas plataformas as quais temos atualmente (Apesar de ver comumente em desktop). É Rica em ferramentas e possui uma documentação a qual simplifica seu uso até mesmo em tarefas simples de se executar com a console da IDE usada.

Imagem relacionada
Exemplo de aplicação em JavaFX.


Quando se busca em fóruns e sites de buscas, são notados dois tipos de uso do JavaFX, um utilizando apenas o código, e outra utilizando o software SceneBuild, para auxiliar na criação de layout da aplicação. Com o uso deste programa, nota-se um tipo diferente de programar, pois o usuário apenas se preocupará em fazer a classe "Controller" para chamar os métodos que serão usados.

Como sendo a primeira postagem falando de JavaFX, meus próximos tutoriais serão feitos usando apenas linha de código, porém haverão links de download para o estilo FXML. No caso, com experiência, indico o estudo do JavaFX utilizando o FXML.

Aqui no blog farei muito o uso de gráficos e tableviews pois acredito que são oque mais se usa em aplicações robustas além de outros plugins externos para criação de jogos, gráficos dinâmicos e listviews interaticas.

É isso, esta é apenas um introdução do que veremos nas proximas semanas.

sexta-feira, 30 de junho de 2017

Arduino - Meu primeiro Projeto



Muitas vezes nos deparamos com limites quando usamos o Arduino Uno, um deles é a quantidade de portas que apesar de haverem muitas, em alguns projetos, se tornam pouquíssimas, foi o caso na utilização do Display TFT LCD 2,4'. É um display único para aqueles que gostariam de interagir direto com seus projetos, pois além de contar com uma resolução de 320x240 pixels, também há a possibilidade de usar o Touch-Screen. Controlado pelo Driver ILI9325 (Datasheet), há uma gama de utilidades, como por exemplo a leitura de arquivos em um SD card mini embutido em sua parte traseira, porém em contra partida, exige quase todas as portas do Arduino Uno, como mostra a tabela abaixo:

O Display dispõe de um biblioteca muito grande e confusa para quem não é acostumado com a linguagem, mas seu manuseio é bem simples como já abordado aqui no tutoria de Arduino e o Display TFT 2,4'. 
Neste projeto nos deparamos com a impossibilidade de usar as portas já utilizadas pelo LCD no Arduino Uno, então a saída foi utilizar a Comunicação via SDA/SCL entre um UNO e MICRO como descrito no esquema abaixo:


O LCD utilizado no esquema não condiz com o real, mas suas portas coincidem, o montei no protoboard apenas para mostrar melhor a ligação entre os Arduinos e suas respectivas alimentações.


A comunicação I2C.


A sigra é Inter-Integrated Circuit, consiste em um protocolo de comunicação entre hardwares, o qual trabalha com o modelo master-Slave, onde pelo menos deve haver um master o qual envia parâmetro ou consulta os Slaves aos quais podem haver aproximados 112 dispositivos.O protocolo I2C é muito eficaz devido sua configuração, pois diminui a quantidade de conexões a serem utilizadas no caso de grandes projetos como segue o exemplo abaixo.

O Arduino Uno vem com as portas A4 e A5 (SDA/SCL respectivamente) configuradas para esta função já o Arduino micro, nas portas 2 e 3 (SDA/SCL respectivamente). A sigla SDA significa Serial Data o qual é responsável por enviar e receber dados sendo assim bi-direcional e SCL Serial Clock, por sua vez, responsável pela temporização entre os dispositivos.

Aplicação no projeto.


Assim, com base no protocolo, definimos como Master o Arduino Micro e Slave o Arduino Uno, assim os códigos Compilados foram:


Assim, através deste projeto, conseguimos, apenas visualizar a distância em Centímetros no Lcd, e podendo usar outra lógica de programação para obter o mesmo resultado.



O Arduino

Hoje trago uma matéria referente a plataforma Opensouce, Arduino. Considerada por muitos uma das melhores ferramentas já desenvolvidas para fins de construir dispositivos novos e automatizados, por conter um micro controlador Atmel AVR de 8 bits e suas demais portas auxiliares com um custo benefício bem baixo.

Porém dizer isso tudo torna-se tão vago para quem ainda quer iniciar neste mundo único da eletrônica/elétrica/programação, se eu não explorar as utilidades deste pequeno microcontrolador, então neste poste explanarei as utilidades do que ele pode fazer e proporcionar ao seu usuário.


Arduino IDE.


O arduino IDE é um software montado basicamente em Java e oferece ao usuário um interface interativa que o leva a criação de aplicações para todos os tipos de projetos. A mesma IDE pode ser encontrada no link abaixo.

Arduino IDE Download.

O Hardware.


Enfim agora apresentaremos a lista de arduinos existentes, todos fabricados pela empresa italiana Smart Projects, além da empresa SparkFun produzir modelos sob a mesma licença.


Particularmente, nas futuras postagens, trabalharemos muito mais com o Arduino UNO e Micro, porém haverá a necessidade de utilizar as demais distribuições conforme o projeto exige.

Arduino UNO e suas portas.



Como podemos perceber, o Arduino Uno é muito complexo por conter várias saídas e entradas digitais/analógicas, aqui explanaremos o básico delas e conforme a necessidade, exploraremos mais ainda no futuro.

Alimentação.


O Arduino possui uma porta Usb para a receber as aplicações e ainda pode ser alimentada com a tensão padrão da mesma de 5V, assim o pino de 5V  também fica alimentado, podendo ligar um outro dispositivo no mesmo. O mesmo possui um outro pino somente para alimentação, onde pode receber até uma tensão de 12V pois ele passará por um regulador de tensão o qual rebaixará para as tensões de 5V e 3.3V, este mesmo pino encontra-se "jumpeado" no pino Vin o qual tem a mesma função.


Portas Analógicas.


Como dito, há existência de 6 portas analógicas para uso como descrito na imagem acima, porém nota-se a presença de outras funções como a famosa SDA/SCL (A4 e A5 respectivamente), as quais tem a função de fazer conexão com outro Arduino ligados pelas mesmas portas cada, assim comunicando-os através de I2C, essas duas portas são muito importantes quando queremos usar vários Shields ou módulos e os mesmos não cabem em um só Arduino.

Portas Digitais.


A grande família do Arduino, as portas digitais são as mais numerosas e obtém funções muito especiais para quem deseja usar motores ou sensores como por exemplo hipersônico, módulo SD card. As portas 10, 11, 12, 13 possuem especificidades neste, pois permitem também configurar um novo Bootloader ao mesmo através do ICSP, os pinos TX e RX também permitem a comunicação entre Arduinos, de uma forma diferente do SDA/SCL, porém bem prática para alguns projetos.

Recomendo sempre o estudo de linguagem C e eletrônica básica para aqueles aos quais pretendem fazer projetos que exijam conhecimentos específicos, por isso posto uma pequena biblioteca a qual pode ser acessada e livre para todos.


terça-feira, 7 de fevereiro de 2017

Fonte de alimentação para CHIP, ARDUINOS E RASPBERRY Pi

Durante a fase de testes do CHIP, percebi a dependência dele por outro computador alimentando- o pelo USB, e ainda por outros periféricos com tensão e corrente baixa para sua alimentação. Durante uma breve pesquisa percebi que o Raspberry pi sofre do mesmo "defeito", e ainda ocasionando acidentes, como o desligamento do aparelho durante importantes atualizações, ocasionando assim o corrompimento de arquivos.

C.H.I.P. (Lado esquerdo) e Raspberry pi (Lado direito).


A 2 anos estive com este problema em arduinos, e para solucionar, tive que contar com um shield de alimentação, baseado no regulador de tensão LM2596 (https://github.com/JuniorEC/Alternative-power-supply-for-your-CHIP).

Shield LM 2596


Ele proporciona uma tensão DC-DC de 1V até ~35V além de ter uma corrente de 1A a 3A ou seja, ideal para estes pequenos projetos que necessitam de shields e periféricos, oque tendem a exigir mais tensão e corrente da placa no caso do CHIP, os Dips como Placa de HDMI e VGA.

Shield LM 2596 em funcionamento.


C.H.I.P. em funcionamento alimentado pelo shield


DIPs disponibilizados pela NTC para uso de VGA e HDMI


Ainda assim a pequena placa, precisa de uma fonte de corrente/ tensão contínua, mas ao mesmo tempo abre um slot para a ligação de outra fonte, como por exemplo uma bateria de 9V a qual tem uma duração prolongada de 5 Horas, ou até mesmo o conjunto de pilhas das espécimes A e AA.

Indo mais além, para projetos de sistemas embarcados e robótica, pode-se acoplar um painel solar para ceder a energia ao pequeno controlador, e assim, dando total flexibilidade ao sistema, assim apenas dependendo do raio de controle, geralmente por bluetooth ou wifi.

Em sistemas, pode-se controlar o mesmo remotamente afim de fazer apenas reparos ou novas atualizações.

Em breve disponibilizarei o layout para fazer sua própria Pcb.





Gostou da idéia?? Curta a página e fique por dentro das novidades! Compartilhe, é gratis.
Dúvidas comente ai!

domingo, 5 de fevereiro de 2017

Next Thing Co. Lança o CHIP


Como primeira postagem neste blog, antes idealizado para publicações de esquemas de circuitos associados a arduinos, mas com o grande lançamento da Next thing co. o CHIP, mudou bastante o pensamento quanto ao assunto de microcontroladores, pois, para vocês leitores, sabemos muito bem que um arduino custa em média 90R$, sem contar os shields e periféricos que ekle necessita para executar sua função, e ainda há algumas limitações que ele apresenta. O CHIP nos apresenta uma nova ideia de micro computador, fugindo da comparação com o microcontrolador.

Como apresentado ele é um microcomputador e como todo computador, ele apresenta um SO (Sistema operacional) baseado no debian, semelhante ao do raspberry pi, e uma gama de softs pré instalados, sem contar as possibilidades de utilidades que podemos dar a ele.


Seu hardware é bem projetado com dimensões pequenas e sofisticado. Contando com uma porta micro- USB a qual pode servir para alimentação da placa, uma USB, para ligar Mouses, teclados, Pen drive, e demais periféricos (Senti falta de mais portas), também há um conector para bateria, possibilitando o usuário a usar seu chip em qualquer lugar, e também o que eu achei sensacional nele, uma porta component, assim deixando o usuário o conectar em qualquer televisão. Ainda há um módulo wifi e bluetooth  acoplado nele, assim podendo conectar também, mouse e teclado, e o mais injusto, uma memória de 4Gb, os novos modelos são 8Gb (no meu caso).
Mas há a pergunta, não há VGA ou HDMI? Sim, há, porém é vendido a parte, são os chamados DIP's, elas são acopladas nos conectores laterais proporcionando uma experiência superior ao componente, e tem um custo benefício muito alto.

Ganhei a minha placa essa semana, e ainda não tive tempo para estudar melhor sua configuração e Pin out, então disponibilizarei aqui:

 

U13LU13RU14LU14R
GND : groundCHG-IN : 5V input (power and battery charge)GND : groundVCC-5V : 5V power
VCC-5V : 5V powerGND : groundUART1-TX : UART serial transmitHPL : audio out left
VCC-3V3 : 3V powerTS : analog temperature sensor inputUART1-RX : UART serial receiveHPCOM : audio out common ground
VCC-1V8 : 1.8 V powerBAT : LiPo batteryFEL : “fel mode”: connect to ground to put CHIP in fel mode for firmwareHPR : audio out right
TWI1-SDA : two-wire serial bus 1PWRON : power onVCC-3V3 : 3 volt powerMICM : mic mute
TWI1-SCK : two-wire serial bus 1GND : groundLRADC : low-res Analog-Digital ConverterMICIN1 : audio in
X1 : Resistive touchpanel input (touchscreen)X2 : Resistive touchpanel input (touchscreen)XIO-P0 : expander GPIOXIO-P1 : expander GPIO pin 1
Y1 : Resistive touchpanel inputY2 : Resistive touchpanel input (touchscreen)XIO-P2 : expander GPIO pin 2XIO-P3 : expander GPIO pin 3
LCD-D2 : RGB666 dataPWM0 : pulse width modulation (also used for LCD backlight dimming)XIO-P4 : expander GPIO piXIO-P5 : expander GPIO pin 5
LCD-D4 : RGB666 dataLCD-D3 : RGB666 dataXIO-P6 : expander GPIO pin 6XIO-P7 : expander GPIO pin 7
LCD-D6 : RGB666 dataLCD-D5 : RGB666 dataGND : groundGND : ground
LCD-D10 : RGB666 dataLCD-D7 : RGB666 dataAP-EINT1 : Application Processor InterruptAP-EINT3 : Application Processor Interrupt pin, necessary for certain kinds of hardware-software interactions (keyboard expander, etc.)
LCD-D12 : RGB666 dataLCD-D11 : RGB666 dataTWI2-SDA : two-wire serial bus 2 (I2C)TWI2-SCK(*) : two-wire serial bus 2 (I2C)
LCD-D14 : RGB666 dataLCD-D13 : RGB666 dataCSIPCK : CMOS serial interfaceCSICK : CMOS serial interface, can be used for attaching a serial camera sensor
LCD-D18 : RGB666 dataLCD-D15 : RGB666 dataCSIHSYNC : CMOS serial interfaceCSIVSYNC : CMOS sync
LCD-D20 : RGB666 dataLCD-D19 : RGB666 dataCSID0 : CMOS serial interfaceCSID1 : CMOS serial interface
LCD-D22 : RGB666 dataLCD-D21 : RGB666 dataCSID2 : CMOS serial interfaceCSID3 : CMOS serial interface
LCD-CLK : RGB666 clockLCD-D23 : RGB666 dataCSID4 : CMOS serial interfaceCSID5 : CMOS serial interface
LCD-VSYNC : vertical sync for LCD screenLCD-HSYNC : horizontal sync for LCDCSID6 : CMOS serial interfaceCSID7 : CMOS serial interface
GND : groundLCD-DE : RGB666 dataGND : groundGND : ground
Espero que esse projeto avance muito pois ele trouxe novas idéias a mim, mais tarde postadas e também que a comunidade chippster do Brasil cresça nesses próximos anos, pois percebi que poucas pessoas conhecem esse projeto. Ajudem a divulga-lo. Abraços e até a próxima.