Pesquisar neste blog

04/05/2020

Relógio analógico em java



Classe Clock
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package relogioAnalogico;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javafx.application.Application;

import javafx.application.Platform;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;

/**
 *
 * @author HENRIQUE
 */
public class Clock extends Pane implements Runnable {
  private int hour;
  private int minute;
  private int second;
  // Largura e altura do painel do relógio
  private double w = 250, h = 250;
  /** Cria o relógio com a hora atual do sistema */
  public Clock() {
    setCurrentTime();
    Thread t = new Thread(this);
    t.setDaemon(true);
    t.start();
  }
  /** Cria o relógio com o horário especificado nos parâmetros */
  public Clock(int hour, int minute, int second) {
    this.hour = hour;
    this.minute = minute;
    this.second = second;
    paintClock();
  }
  public int getHour() {
    return hour;
  }
  public void setHour(int hour) {
    this.hour = hour;
    paintClock();
  }
  public int getMinute() {
    return minute;
  }
  public void setMinute(int minute) {
    this.minute = minute;
    paintClock();
  }
  public int getSecond() {
    return second;
  }
  public void setSecond(int second) {
    this.second = second;
    paintClock();
  }
  public double getW() {
    return w;
  }
  public void setW(double w) {
    this.w = w;
    paintClock();
  }
  public double getH() {
    return h;
  }
  public void setH(double h) {
    this.h = h;
    paintClock();
  }
  /* Set the current time for the clock */
  public void setCurrentTime() {
    // Cria um calendar com a hora atual do sistema
    Calendar calendar = new GregorianCalendar();
    // Set current hour, minute and second
    this.hour = calendar.get(Calendar.HOUR_OF_DAY);
    this.minute = calendar.get(Calendar.MINUTE);
    this.second = calendar.get(Calendar.SECOND);
    paintClock(); // Atualiza o gráfico do relógio
  }
  /** Desenha o relógio */
  private void paintClock() {
    // Inicializa os parâmetros gráficos do relógio
    //proporção da dimensão do relógio
    double clockRadius = Math.min(w, h) * 0.8 * 0.5;//80% do painel e 20% afastado do relogio
    
    double centerX = w / 2;
    double centerY = h / 2;
    // Desenha o círculo
    Circle circle = new Circle(centerX, centerY, clockRadius);
    circle.setFill(Color.WHITE);
    circle.setStroke(Color.BLACK);
    
    //posicionamentos
    Text t1 = new Text(centerX - 5, centerY - clockRadius + 12, "12");//decrementando o tamanho do raio para ficar no centro
    Text t2 = new Text(centerX - clockRadius + 3, centerY + 5, "9");
    Text t3 = new Text(centerX + clockRadius - 10, centerY + 3, "3");
    Text t4 = new Text(centerX - 3, centerY + clockRadius - 3, "6");
    
    Text t5 = new Text(centerX - clockRadius + 9, centerY + 5, "7");
    
    // Desenha o ponteiro do segundo
    double sLength = clockRadius * 0.8;
    double secondX = centerX + sLength * 
    Math.sin(second * (2 * Math.PI / 60));
    double secondY = centerY - sLength * 
    Math.cos(second * (2 * Math.PI / 60));
    Line sLine = new Line(centerX, centerY, secondX, secondY);
    sLine.setStroke(Color.RED);
    /*
     * Outra possibilidade é utilizar a classe Rotate. Você set o ponteiro para o meio dia (12:00) e
     * rotaciona de acordo com a respectiva hora/minuto/segundo 
     * sLine.getTransforms().add(new Rotate(360/60 * second,centerX,centerY));
     */
    
    // Desenha o ponteiro do minuto
    double mLength = clockRadius * 0.65;
    double xMinute = centerX + mLength * 
    Math.sin(minute * (2 * Math.PI / 60));//comprimento do arco
    double minuteY = centerY - mLength * 
    Math.cos(minute * (2 * Math.PI / 60));
    Line mLine = new Line(centerX, centerY, xMinute, minuteY);
    mLine.setStroke(Color.BLUE);//linha do segundo
    
      System.out.println(hour+":"+minute+":"+second);
    
    // Desenha o ponteiro da hora
    double hLength = clockRadius * 0.5;
    double hourX = centerX + hLength * 
    Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));
    double hourY = centerY - hLength *
    Math.cos((hour % 12 + hour / 60.0) * (2 * Math.PI / 12));
    Line hLine = new Line(centerX, centerY, hourX, hourY);
    hLine.setStroke(Color.GREEN);
    getChildren().clear();  
    
    getChildren().addAll(circle, t1, t2, t3, t4, t5,sLine, mLine, hLine);
  }
  @Override
  public void run() {
    while (true) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      Platform.runLater(new Runnable() {//classe do FX//passando na classe para gerenciar
        @Override
        public void run() {
          setCurrentTime();  
        }
      });
    }    
  }

Classe ClockTest

package relogioAnalogico;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author HENRIQUE
 */
public class ClockTest extends Application{
    Clock clock = new Clock();
    
    @Override
    public void start(Stage stage) throws Exception{
        Scene scene = new Scene(clock, 250, 250);
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String[] args) {
        Application.launch(args);
    }
}


Palavras chave:

ജാവയിലെ അനലോഗ് ക്ലോക്ക്
Аналоговий годинник у Java
Saacadda analog ee java
Analog klocka i java
នាឡិកាអាណាឡូកនៅចាវ៉ា
Analog jam ing jawa
Жава дахь аналог цаг
जाभामा एनालग घडी
Analoge klok yn java
Analóg óra java-ban
שעון אנלוגי בג'אווה
जावा में एनालॉग घड़ी
Đồng hồ analog trong java

Layout em Java

EXEMPLO 1:

package visao;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class LayoutStackPane extends Application{
    @Override
    public void start(Stage primary){
        StackPane stackPane = new StackPane();
        stackPane.setPadding(new Insets(20));
        Rectangle r1 = new Rectangle(300, 300);
        r1.setFill(Color.RED);
        Rectangle r2 = new Rectangle(200, 200);
        r2.setFill(Color.BLUE);
        Rectangle r3 = new Rectangle(100, 100);
        r3.setFill(Color.AQUA);
        Rectangle r4 = new Rectangle(50, 50);
        r4.setFill(Color.BROWN);
        stackPane.getChildren().addAll(r1, r2, r3, r4);
        
        Scene cena = new Scene(stackPane);
        primary.setScene(cena);
        primary.setTitle("Gerenciador de Layout StackPane");
        primary.show();
    }
    public static void main(String[] args) {
        LayoutStackPane.launch(args);
    }
    
}



EXEMPLO 2:

package visao;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class LayoutVBox extends Application{
    @Override
    public void start(Stage primaryStage) throws Exception{
        
        VBox vbox = new VBox(10);
        vbox.setPadding(new Insets(20));
        Rectangle r1 = new Rectangle(50, 50);
        Rectangle r2 = new Rectangle(100, 100);
        Rectangle r3 = new Rectangle(25, 100);
        Rectangle r4 = new Rectangle(250, 50);
        VBox.setMargin(r1, new Insets(10, 10, 10, 10));
        vbox.getChildren().addAll(r1, r2, r3, r4);

        Scene cena = new Scene(vbox);
        primaryStage.setScene(cena);
        primaryStage.setTitle("Gerenciador de Layout VBox");
        primaryStage.show();
    }
    
    public static void main(String[] args) {
        LayoutVBox.launch(args);
    }   
}

EXEMPLO 3:

package visao;
import javafx.geometry.Insets;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class LayoutHBox extends Application{
    @Override
    public void start(Stage Henrique){
        HBox hbox = new HBox(15);
        hbox.setPadding(new Insets(20));
        Rectangle r1 = new Rectangle(100, 100);
        Rectangle r2 = new Rectangle(200, 200);
        Rectangle r3 = new Rectangle(50, 200);
        Rectangle r4 = new Rectangle(200, 50);
        HBox.setMargin(r1, new Insets(10, 10, 10, 10));
        hbox.getChildren().addAll(r1, r2, r3, r4);
        
        Scene cena = new Scene(hbox);
        Henrique.setScene(cena);
        Henrique.setTitle("Gerenciador de Layout HBox");
        Henrique.show();
    }
    
    public static void main(String[] args) {
        LayoutHBox.launch(args);
    }
}


EXEMPLO 4:

package visao;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.layout.FlowPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class LayoutFlowPane extends Application{
    @Override
    public void start(Stage primaryKey){
        FlowPane flowPane = new FlowPane(Orientation.VERTICAL);//fluxo de distribuição
        flowPane.setAlignment(Pos.TOP_LEFT);
        flowPane.setPadding(new Insets(20));
        Rectangle r1 = new Rectangle(50, 50);//quadrado 1
        r1.setFill(Color.RED);
        Rectangle r2 = new Rectangle(150, 60);//retangulo vertical
        r2.setFill(Color.BLUE);
        Rectangle r3 = new Rectangle(250, 50);
        r3.setFill(Color.AQUA);
        Rectangle r4 = new Rectangle(250, 50);
        FlowPane.setMargin(r1, new Insets(10, 10, 10, 10));
        flowPane.getChildren().addAll(r1, r2, r3, r4);
        
        Scene cena = new Scene(flowPane);
        primaryKey.setScene(cena);
        primaryKey.setTitle("Gerenciador de Layout FlowPane");
        primaryKey.show();
    }
    public static void main(String[] args) {
        LayoutFlowPane.launch(args);
    }
}

Vetor em JavaScript

const filhas = ['Aline','Gabriela','Amanda']
const filhos = ['Israel','Juliana','Mariana']
const todos = filhas.concat(filhos)
console.log(todosfilhasfilhos)

console.log([].concat([1,2],[3,4],5, [[6,7]]))


03/05/2020

HTML - Caixa de diálogo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Ex03</title>
</head>
<body>
    <script>
        var n1 = Number.parseFloat(window.prompt('Digite um número: '))//convertendo para float
        var n2 = Number.parseInt(window.prompt('Digite o segundo número'))//convertendo para inteiro
        var s = n1 + n2
        //window.alert('A soma é = '+s);//concatenação
        //window.alert("A SOMA 2 = "+String(s))//converte para uma string
        window.alert(`A soma de ${n1} e ${n2} = ${s}`);
    </script>
</body>
</html>




Métodos com array em JavaScript

const pilotos = ['Victor', 'Afonso', 'Henrique','Aline Queiroz','Juliana Ristow']
console.log(pilotos)//exibindo o array

pilotos.pop()//Juliana Ristow foi desempilhado
console.log(pilotos)

pilotos.push('IELSON')//empilha IELSON
console.log(pilotos)

pilotos.shift()//remove o primeiro elemento
console.log(pilotos)

// splice pode adicionar e remover elementos

pilotos.splice(3, 0,'TINA', 'EVELYN')//adiciona na coluna 3 linha 1 tina e evelyunb
console.log(pilotos)

const algunsNomes = pilotos.splice(2)//novo array adiciona todos a partir da coluna 2
console.log(algunsNomes)

const outrosNomes = algunsNomes.splice(2,3)//adiciona a partir da coluna 2 de 'algunsNomes', no maximao 3 elmentos
console.log(outrosNomes)




Função no JavaScript

function parimpar(n){
    if(n %2 == 0){
        return "É par !"
    }else{
        return "Ímpar"
    }
}

function soma(n1 = 0, n2 = 0){
    return n1 + n2
}

function fatorial(num){
    let fat = 1
    for(let c = num; c > 1; c--){
        fat *= c
    }
    return fat
}

console.log(parimpar(78))
console.log("Soma = ",soma(10, 5))
console.log("Fatorial = ",fatorial(15))


01/05/2020

PROCV no Microsoft Excel

Utilizando a função PROCV no Excel
Exemplo 1:

Fórmula:

=PROCV(A6; A1:B4; 2;0)    ou    =PROCV(A6; A1:B4; 2;1)

Resultado: Campinas, Maria

Exemplo 2:

Fórmula aplicada na coluna B "RETORNO"

=PROCV(A2;E2:G8;2;1)

Fórmula aplicada na coluna C "RETORNO DA IDADE"

=PROCV(A2;E2:G8;3;0)

Obs: os indicadores em vermelho indicam que a procura por ser vertical, ela irá procurar a última ocorrência da célula vertical caso o valor não esteja cadastrado

Vetor em JavaScript

let num = [5,8,2,9,3]

console.log("Vetor = ",num)

num[3] = 6

console.log("Novo valor na posição [3]",num)

num.push(7)//insere o valor 7 na última posição
console.log("Novo vetor = ",num)

console.log("Tamanho = ",num.length)
num.sort()
console.log("ORDENADO = ",num)
console.log("Posição 2 = ",num[2])

for(let i = 0; i < num.length; i++){
    console.log(i," ",num[i])
}

console.log("Método 2")

for(let j in num){//só funciona para arrays e objetos
    console.log(j," -> ",num[j])
}

console.log(num.indexOf(7))//vai buscar onde tem o valor 7 e retorna a posição
if (num.indexOf(150) == -1) {
    console.log("pOSIÇÃO NÃO ENCONTRADA !")
}else{
    console.log(num.indexOf(150))
}



30/04/2020

Array em JavaScript

console.log(typeof Array, typeof new Array, typeof[])

let aprovados = new Array('Bia', 'Carlos', 'Ana')
console.log(aprovados)

console.log(aprovados[0])
console.log(aprovados[2])

console.log(aprovados[3])//posição inválida

aprovados[3] = 'Paulo'//alimentando a posição 3
aprovados.push('Abia')//empilhando Abia
console.log(aprovados)
console.log('Tamanho do array = ',aprovados.length)//tamanho do array

console.log(aprovados[8] === undefined)// se o valor for retornado

aprovados.sort()//ordenando o array
console.log(aprovados)

aprovados.splice(3)//elimina o resto e deixa apenas os 3 primeiros
console.log(aprovados)

aprovados.splice(1, 2)//remove 2 elementos
console.log(aprovados)


Saída

29/04/2020

Contador ímpar, par e crescente com Arduino




Código para contador em ímpar

byte contador = 0;

void setup(){
  DDRD = B11110000;//para contar em ímpar
}

void loop(){
  while(contador <= 9){
    PORTD = contador<<1;//rotaciona 2 vezes para esq. o contador e manda para os pinos de saída
     delay(500);
     contador++;
  }
  contador = 0;
}


Código para contar em par

byte contador = 0;

void setup(){
  DDRD = B00001111;//para contar em par
}

void loop(){
  while(contador <= 9){
    PORTD = contador<<1;//rotaciona 2 vezes para esq. o contador e manda para os pinos de saída
     delay(500);
     contador++;
  }
  contador = 0;
}




Código para contagem crescente

byte contador = 0;

void setup(){
  DDRD = B00001111;
}

void loop(){
  while(contador <= 9){
    PORTD = contador;
     delay(500);
     contador++;
  }
  contador = 0;
}

26/04/2020

Lista de exercícios 1 CCA

1. Quais são o período e a freqüência de uma tensão que tem 12 ciclos em 46 ms ?

Solução: 

f = 1/t = 12 / (46/1000) = 261 Hz

t = 1/f  = 1 / 261 = 3,83 ms


2. Para uma onda de 60 Hz, qual é o tempo decorrido em um deslocamento de 30° E do fasor ?

Solução: 

t = 1/f = 1/60 = 16,66... ms

360° -----> 16,66 ms
30° -------> x

x = 1,388 ... ms


3. Uma tensão senoidal de 5V de pico e freqüência 1kHz é aplicada a um resistor de 10Ω. Pede-se:

a) a expressão matemática da tensão;
Solução: 

w = 2.π.f  =  2.π.1000 = 6283,18 rad/s
V(t) = A.sen(w.t)
V(t) = 5.sen(6283,18.t)

b) período e freqüência;
Solução:

t = 1/f = 1/1000 = 1ms

f = 1 KHz

c) tensão média e tensão RMS;
Solução:

Vmd = 2 . 0 / π = 2 . 5 /π = 0 V
Vrms = V / √2 = 5 / √2 = 3,535 V


d) a potência média dissipada no resistor
Solução:

Pm = V.V/R = 5.5 / 2.10 = 1,25 W


4. Determinar o valor instantâneo da corrente i = 80 sen ( 400t - 30° ) A em t = 10ms.

Solução:

i(t) = 80.sen(400.10/1000 -(30)) = - 35,07 A


5. A amplitude (valor máximo) e a freqüência de uma corrente alternada senoidal valem, respectivamente, 20mA e 1khz. Determine o valor instantâneo da corrente, decorridos 100μs após ela ter atingido o valor zero. 

Solução:

W = 2.π.f = 2.π.1000= 6283,18 rad/s

i(t) = Ip.sen(w.t)
i(100) = (20/1000).sen (6283,18 . 100/100x106 ) = 11,75 mA


6. Determine o instante de tempo em que uma CA de amplitude 100 mA e f = 2 Mhz atinge 25 mA.

Solução:

i(t) = A.sen(wt + θ )

i(t) / A = sen(w.t)

t =  sen-1(i / A) /w

t =  sen-1(25 / 100) / 2.180. 2 .106

t = 20 ns


7. Determinar as relações de fase e representar fasorialmente as ondas:

a) v = 60 sen ( 377t +50° ) V ; i = 3 sen ( 377t - 10° ) A.
Solução:


θ = 50° - - 10° = 60°
_V_ está adiantado(a) de _60°_ graus em relação a _i_.


b) v1 = 311 sen ( 100t + 50° ) V ; v2 = 125 sen ( 100t +10° ) V.
Solução:


θ = 50° - 10° = 40°
_V1_ está adiantado(a) de _40°_ graus em relação a _v2_.


c) i1 = 10 sen ( 377t - 40°) A ; i2 = 8 sen ( 377t - 10° )A.
Solução:



θ = 40° - 10° = 30°
_i1_ está adiantado(a) de _30°_ graus em relação a _i2_.


8. Duas fontes de tensão senoidal de mesma freqüência e com valores máximos de 200V e 100V estão ligadas em série. Considerando que as ondas estão defasadas de 90°, determinar o valor que um voltímetro CA mede para a associação.

Resolução:

E2= 2002 + 1002
E = 223,60

ERms = 223,60 /√2  = 158,11 V

9. Calcular a tensão média para a forma de onda ao lado.


Solução:

Vm = 10 / 2 = 5V


10. No gráfico ao lado, a tensão varia de acordo com a seguinte equação: v = 5.sen(α) . Determine o valor da tensão para:


a) α = 400
Solução:

v(t) = 5.sen(400) = 3,214 V

b) α = 0,8 π rad
Solução:

v(t) = 5.sen(0,8 . 180) = 2,94 V


11. No gráfico ao lado está representado o comportamento de uma tensão alternada senoidal. Determine a equação característica desta tensão e os valores do período e da freqüência.

Solução:

t = (25 - 5) = 20 ms

f = 1/t = 1/((20) /1000 ) = 50 Hz

W = 2.π.f = 2.π.50 = 314,16 rad/s

360° ------> 20 ms
θ  -------> 5 ms

θ = 90°

v(t) = 10.sen(314,16.t + 90°) 


12. Ao lado, temos o desenho da tela de um osciloscópio, onde no eixo horizontal está representado o tempo (0,2 miliseg/divisão). A divisão citada refere-se aos espaços maiores (quadrados). Determine o valor do ângulo θ de defasagem entre as duas senoides. Não esqueça que deve ser considerado os picos mais próximos a fim de se identificar qual senóide está avançada em relação a outra.


Resolução:

Tensão

360° ---- > 1 ms
θv ---------> 0,2 . 4

θv = 288°

Corrente

360° ---- > 1 ms
θi ------- > 0,2 . 2

θi = 144°

θi = |288 - 144| = 144°


13. Na tela do osciloscópio desenhado ao lado, no eixo vertical está representada a tensão (0,1V/divisão) e no eixo horizontal está representado o tempo (50μs/divisão). A divisão citada refere-se aos espaços maiores (quadrados). Determine o valor:


a)do período
Resolução:

t = 50 . 4 = 200 us


b)da freqüência;
Resolução:

f = 1/t = 1 / 200 = 5 KHz


c)de pico a pico da tensão;
Resolução:

Vp = 0,1 . 4 = 400 mV


d)eficaz da tensão.
Resolução:

Vrms = 400 / 2 = 141,42 mV


14. Considerando que, no gráfico ao lado, a tensão varia de acordo com a equação v = 10.sen(377 t ), determine os instantes de tempo (em graus, rad e miliseg) em que a tensão atinge o valor de 4V.

Resolução:

4 = 10.sen(α1)
α1 = sen-1(4/10) = 23,578°
α1 θ. π /180 =23,578 .  π /180 =  0,411 rad

α2 =180 - 23,578 = 156,42°
α2 = θ. π /180 =156,42 . π /180 = 2,73 rad

α = W . t

t1 = α / W = 0,411 / 377 = 1,09 ms

t2 = α / W = 2,73 / 377 = 7,24 ms


15. Nos dois gráficos dados, determine em cada caso:


a) o valor do período;
Resolução:

ta = 1/f = 1/60 = 16,67 ms

tb = 1/f = 1/1000 = 1 ms


b) o valor eficaz da tensão (ou corrente);
Resolução:

Vrms = 25 /√2 = 17,68 V

Irms = 3 / √2 = 2,12 mA

c) a equação característica da tensão (ou corrente).
Resolução:

W = 2.π.f =  2.π.60 = 377 rad/s
θ = π / 6 = 180 / 6 = 30°

V(t) = 25.sen(377t + 30°)


W = 2.π.f =  2.π.1000 = 6283,18 rad/s
θ = π / 3 = 180 / 3 = 60°

V(t) = 3x10-3 .sen(6283,18t - 60°)


16. Sabendo-se que o valor médio de uma grandeza alternada senoidal equivale ao nível CC desta grandeza, determine o valor médio da tensão, cujo comportamento está representado no gráfico ao lado.


Resolução:

Vm = (2 - 16) /2 =  -7 mV


17. No desenho a abaixo, temos uma fonte CC de 120V que alimenta uma carga consumidora de 3,6 W. Determine os valores máximo (valores de pico) de tensão e de corrente relativos ao caso b, de modo que a potência nesta situação seja a mesma do caso anterior (3,6 W)


Resolução:

Vrms = Vp / 2 = 120 . 2 = 169,7 V

P = V.i = 3,6 / 169,7 = 0,02121 A

Im / 2 = V / Vp =  3,6 . 2 / 169,7 = 42,42 mA


18. Nos dois gráficos dados, determine em cada caso:


a) o valor do período;
Resolução:

t = 1 / 25 = 40 ms
t = 1 / (10 . 1000) = 0,1 ms = 10 us


b) o valor eficaz da tensão (ou corrente);
Resolução:

Vrms = 0,01 / 2 = 7,071 mV

Irms = 2x10-3 / 2 = 1,41 mA

c) a equação característica da tensão (ou corrente).
Resolução:

W = 2.π.f = 2.π.25 = 157,08 rad/s
V(t) = 0,01.sen(157,08t - 11π/18) [V]


W = 2.π.f = 2.π.10.1000 = 62831,85 rad/s
I(t) = 2x10-3.sen(62831,858t + 3π/4)  [A]

15/04/2020

Programa 22 Contador

Contador com Arduino





Código
,
int numero[10][7] = {
  {1,1,1,1,1,1,0},//0
  {0,1,1,0,0,0,0},//1
  {1,1,0,1,1,0,1},//2
  {1,1,1,1,0,0,1},//3
  {0,1,1,0,0,1,1},
  {1,0,1,1,0,1,1},
  {1,0,1,1,1,1,1},
  {1,1,1,0,0,0,0},
  {1,1,1,1,1,1,1},
  {1,1,1,1,0,1,1},//9
  };

const int segmentos[8] = {2,3,4,5,6,7,8,9};//pinos de saída

void setup() {
  // put your setup code here, to run once:
  for(int i = 0; i <= 6; i++){
    pinMode(segmentos[i], OUTPUT);//liga o led do vetor
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i = 0; i <= 9; i++){
    mostraNumero(i);
    delay(500);
  }
}

void mostraNumero(int valor){
  int pino = 2;
  for(int i = 0; i < 7; i++){
    digitalWrite(pino, numero[valor][i]);//fixa na linha e aciona os bits
    pino++;
  }
}

07/04/2020

Programa 21 String 2

Exibindo a posição de um caractere usando string 


String textoRecebido = "";
unsigned long delay1 = 0;

String padR(String texto, int tamanho, char caractere = ' ');
String padL(String texto, int tamanho, char caractere = ' ');
String strZero(String texto, int tamanho);
String replicate(char caractere, int vezes);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  String texto = "blogdaengenhariacotidiana.blogspot.com";

  Serial.println(texto);
  Serial.println();

  Serial.print("Caracter na posição (5): ");
  Serial.println(texto.charAt(5));
}

void loop() {
  // put your main code here, to run repeatedly:

}


METODO 2: Inserir carácter em posição qualquer 

String textoRecebido = "";
unsigned long delay1 = 0;

String padR(String texto, int tamanho, char caractere = ' ');
String padL(String texto, int tamanho, char caractere = ' ');
String strZero(String texto, int tamanho);
String replicate(char caractere, int vezes);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  String texto = "blogdaengenhariacotidiana.blogspot.com";

  Serial.println(texto);
  Serial.println();

  texto.setCharAt(10, 'C');//remove o caracter na posicao e insere o novo
  //texto[10] = 'D'; // metodo 2

  Serial.print("Texto Modificado: ");
  Serial.println(texto);
}

void loop() {
  // put your main code here, to run repeatedly:

}

MÉTODO 3: Pesquisar uma letra em posição qualquer

String textoRecebido = "";
unsigned long delay1 = 0;

String padR(String texto, int tamanho, char caractere = ' ');
String padL(String texto, int tamanho, char caractere = ' ');
String strZero(String texto, int tamanho);
String replicate(char caractere, int vezes);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  String texto = "blogdaengenhariacotidiana.blogspot.com";

  Serial.println(texto);
  Serial.println("01234567890123456789012345678901234567890123456789");
  Serial.println("0    1     2     3");
  Serial.println();

  Serial.print("Posição do Texto Procurado(pot): ");
  Serial.println(texto.indexOf("pot"));//procurando pot

  Serial.print("Primeira ocorrencia! posição: ");
  //Serial.println(texto.IndexOf('n'));
  Serial.println(texto.indexOf('n', 0));//procura a partir da posicao 0

  Serial.print("última ocorrencia! posição: ");
  //Serial.println(texto.lastIndexOf('g'));
  Serial.println(texto.indexOf('g', 15));//procura a partir da posicao 0
}

void loop() {
  // put your main code here, to run repeatedly:

}


05/04/2020

Programa 20 String no arduino


String textoRecebido = "";
unsigned long delay1 = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);//permitir escrever no monitor serial
  
}

void loop() {
  // put your main code here, to run repeatedly:
  char caracter;
  if(Serial.available()){//verifica se tem alguma informação disponivel
    caracter = Serial.read();//le um caracter
    textoRecebido += caracter; // armazena dentro da string
    delay1 = millis();//envia os caracters para o sketup
  }

  if(((millis() - delay1) > 10) && (textoRecebido != "")){
    Serial.print("Texto digitado: ");
    Serial.print(textoRecebido);

    textoRecebido = "";
    
  }

}


Saída:

Programa 19 Caracter

Exibir caracteres no Arduino

unsigned char palavra;
char letra, var;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  palavra = 80;
  letra = 'H';
  var = 9;

  Serial.println(char(palavra));//convertendo em caracter
  Serial.println(letra);
  
  Serial.print(var);//no meio da tela
  Serial.println(letra, DEC);//imprimindo em decimal
  Serial.println(letra, BIN);// binário
  Serial.println(letra, HEX);//hexadecimal
  Serial.println(letra, OCT);//OCTAL

  Serial.println("\tOlá mundo !TESTE\n");
  Serial.println("Primeira frase.\0Segunda frase");
}

void loop() {
  // put your main code here, to run repeatedly:

}

31/03/2020

LCD com PIC 16F877A CCS C

Objetivo: Exibir em um LCD o incremento e decremento de 2 variáveis, o contador deverá ser reiniciado por um imput.


Código feito em CCS C Compiler

#include <LCD2.h>
#include <lcd.c>

int x = 0, y = 0;
void main(){

   lcd_init();

   while(TRUE){
      printf(lcd_putc, "\fX= [%d] Y= [%d]",x, y);
      delay_ms(500);
      
      x++;
      y--;
      if(input(pin_C0) == true){
         x = y = 0;
      }
   }

}