Pesquisar neste blog

16/03/2020

Display hexadecimal de 7 segmentos

Display hexadecimal de 7 segmentos usando microntrolador PIC 16F877A






















































Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b00111111);//0
      delay_ms(500);//espera 0.5 s
   
      output_b( 0b00000110);//1
      delay_ms(500);
   
      output_b(0b01011011);
      delay_ms(500);
   
      output_b(0b01001111);
      delay_ms(500);
   
      output_b(0b1100110);
      delay_ms(500);
   
      output_b(0b01101101);
      delay_ms(500);
   
      output_b(0b00000111);//6
      delay_ms(500);
   
      output_b(0b01111111);
      delay_ms(500);
   
      output_b(0b1100111);//9
      delay_ms(500);
   
      output_b(0b1110111);//A
      delay_ms(500);
   
      output_b(0b1111100);//B
      delay_ms(500);
   
      output_b(0b0111001);//c
      delay_ms(500);
   
      output_b(0b1011110);//D
      delay_ms(500);
   
      output_b(0b1111001);//E
      delay_ms(500);
   
      output_b(0b1110001);//f
      delay_ms(500);
   
   
   }
}
 

Palavras chave:

תצוגה הקסדצימאלית בת 7 קטעים באמצעות בקר מיקרו PIC16F877A
ຈໍສະແດງຜົນ hexadecimal 7 ສ່ວນໂດຍໃຊ້ PIC16F877A microcontroller
7-segmentni šestnajstiški prikaz z uporabo mikrokrmilnika PIC16F877A
Hiển thị thập lục phân 7 đoạn bằng vi điều khiển PIC16F877A
7-segment hexadecimal kuratidza uchishandisa PIC16F877A microcontroller
7-сегментний шестидесятковий дисплей за допомогою мікроконтролера PIC16F877A
PIC16F877A മൈക്രോകൺട്രോളർ ഉപയോഗിച്ച് 7-സെഗ്മെന്റ് ഹെക്സാഡെസിമൽ ഡിസ്പ്ലേ

15/03/2020

Botao com Led usando PIC 16F877A

Faça um programa que utilize 2 botoes, um botão terá a função de ligar um led. O outro botão, quando pressionado irá deligar o led.

















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
 
      if( input(pin_b0) == 1){//se precionado o botão1
         output_high(pin_b7);//liga o led
      }
   
      if( input(pin_b6) == 1){//se precionado o botao2
         output_low(pin_b7);//desliga o led2
      }
   }
}

13/03/2020

Contador crescente e decrescente usando PIC

Contador hexadecimal crescente e decrescente usando PIC 16F877A


















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20 MHz)

void main(){
   char value[] = {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111,
   0b11111111, 0b1100111, 0b1110111, 0b1111100, 0b0111001, 0b1011110, 0b1111001, 0b1110001};
 
   while(true){
      for(int i = 0; i <=15; i++){
         output_b(value[i]);
         delay_ms(500);
      }
     
      for(i = 16; i >=1; i--){
         output_b(value[i-1]);
         delay_ms(500);
      }
   }

Desafio 2

Ligar e desligar um led através de um push booton

















Código1 feito em CCS C Compiler

#include <16F877A.h>
#use delay(crystal = 20 MHz)

void main(){
   while(true){
      if(input(pin_b0) == 1){
         output_high(pin_b7);
      }
   
      if(input(pin_b0) == 0){
         output_low(pin_b7);
      }
   }
}
 
Código2 feito em CCS C Compiler

#include <16F877A.h>
#use delay(crystal = 20 MHz)

void main(){
   while(true){
      if(input(pin_b0) == 1){
         output_high(pin_b7);
       
      }else{// senao desliga o led
         output_low(pin_b7);
      }
   }
}

12/03/2020

Sequencia de leds1

Ligando uma sequencia de leds com apenas uma porta no PIC 16F877A


















Código1 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b11111111);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código2 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b11010101);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código3 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(153);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código4 feito em CCS C Compiler

















#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(255);//b7,b6,b5... b0 ligando todas as potas
      delay_ms(500);//desliga por 0,5 s
      output_b(10);//liga a porta rb3 e rb 1
      delay_ms(500);//espera 0,5s
      output_b(20);
      delay_ms(500);
      output_low(pin_b6);//desliga o pino b6
     
   }
}

11/03/2020

Semáforo usando PIC 16F877A


Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal=20MHz)

void main(){
   while(true){

      //output_high(pin_b2);//ligando o led verde

      output_high(pin_b0);//ligando o vermelho
      output_low(pin_b1);//desligando o amarelo
      output_low(pin_b2);//desligando o verde
      delay_ms(3000);//espera 3s
   
      output_low(pin_b0);
      output_high(pin_b2);
      delay_ms(2000);

      output_low(pin_b2);//desliga o led vermelho
      output_high(pin_b1);// e liga o led amarelo
      delay_ms(1500);//espera 1,5s
      output_low(pin_b1);// e espera o led amarelo

   }
}

26/02/2020

Push boton com PIC 16F877A

Objetivo: Inverter o estado do Led a cada vez que for pressionado

















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal=20MHz)

void main(){
 
   while(true){
      if(input(pin_b0) == 1){
         output_toggle(pin_b1);//troca o estado do led
         delay_ms(500);// e espera 0,5s
      }
   }

}

Pisca Leds 4 com PIC 16F877A


















Código feito em CCS C Compiler:

#include <16f877a.h>
#use delay(crystal=20MHz)

void main(){
   char value[]={0b00000001, 0b00000011, 0b00000110, 0b00001100, 0b00011000, 0b00010000};
 
   while(true){
   
      for(int i=0; i<= 5; i++){
         output_b(value[i]);
         delay_ms(500);
      }
   
      for(i=6; i>= 1; i--){
         output_b(value[i-1]);
         delay_ms(500);
      }
   
   }
}

25/02/2020

Display 7 segmentos usando PIC 16F877A (3)




Código feito em mikro PRO for

void main() {
     trisb = 0; //definindo todos os pinos como porta de saída
     portb = 0; //desligando todos os pinos
   
     while(1){  //tudo que estiver aqui dentro irá repetir infinitamente
          portb = 0b00111111;//forma binária, 'imprimndo o [0]'
          delay_ms(500);

          portb = 0b00000110;//'imprimndo o [1]'
          delay_ms(500);

          portb = 91; //forma decimal, 'imprimindo o [2]'
          delay_ms(500);

          portb = 79;  // [3]
          delay_ms(500);//0,5s de espera

          portb = 0x66; //forma hexadecimal [4]
          delay_ms(500);

          portb = 0x6D; //forma hexadecimal  [5]
          delay_ms(500);

          portb = 0x7D; // [6]
          delay_ms(500);

          portb = 0x7;// forma hexadecimal  [7]
          delay_ms(500);

          portb = 0b01111111;//[8]
          delay_ms(500);

          portb = 0b01100111; //[9]
          delay_ms(500);
     }
}

24/02/2020

Display 7 segmentos com PIC 16F877A (2)

Laço de repetição no display de 7 segmentos usando goto














Código feito em mikro PRO for

void main() {

      trisb = 0;//definindo todos os pinos como saída
      portb = 0; //desligando

      inicio:
      portb = 0b00111111;//forma binária, 'imprimndo o [0]'
      delay_ms(500);

      portb = 0b00000110;//'imprimndo o [1]'
      delay_ms(500);

      portb = 91; //forma decimal, 'imprimindo o [2]'
      delay_ms(500);

      portb = 79;  // [3]
      delay_ms(500);//0,5s de espera

      portb = 0x66; //forma hexadecimal [4]
      delay_ms(500);

      portb = 0x6D; //forma hexadecimal  [5]
      delay_ms(500);

      portb = 0x7D; // [6]
      delay_ms(500);

      portb = 0x7;// forma hexadecimal  [7]
      delay_ms(500);

      portb = 0b01111111;//[8]
      delay_ms(500);

      portb = 0b01100111; //[9]
      delay_ms(500);
      goto inicio;  //retorna para para o inicio
}

Desafio 1

Fazer o Led piscar conforme o gráfico












Resolução:

Código feito em CCS C Compiler

#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=20000000)

void main(){

   while(TRUE){
      output_low(PIN_B2);
   
      for(int i = 0; i< 50; i++){
         for(int j = 0; j < 100; j++){
            output_high(PIN_B2);
            delay_us(i*(1000/50));
            output_low(PIN_B2);
            delay_us(1000-(1*(1000/50)));
         }
      }
   }

}


18/02/2020

Pisca Leds 3 com PIC 16F877A

Objetivo: Piscar leds consequentemente usando for

















Código feito em CCS C Compiler

#include <16F877a.h>
#use delay(crystal=20MHz)

void main(){
   char pins[] = {PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4};
 
   while(TRUE){
      for(int i=0; i<=4; i++){
         output_high(pins[i]);
         delay_ms(250);
         output_low(250);
         delay_ms(250);
      }
   
      for(i=5; i>=1; i--){
         output_high(pins[i-1]);
         delay_ms(250);
         output_low(pins[i-1]);
         delay_ms(250);
      }
   }
}

Display 7 segmentos usando PIC 16F877A (1)




















Código feito em mikro PRO for

void main() {
      trisb = 0;//definindo todos os pinos como saída
      portb = 0; //desligando
   
      portb = 0b00111111;//forma binária, 'imprimndo o [0]'
      delay_ms(500);
   
      portb = 0b00000110;//'imprimndo o [1]'
      delay_ms(500);
   
      portb = 91; //forma decimal, 'imprimindo o [2]'
      delay_ms(500);
   
      portb = 79;  // [3]
      delay_ms(500);//0,5s de espera
   
      portb = 0x66; //forma hexadecimal [4]
      delay_ms(500);
   
      portb = 0x6D; //forma hexadecimal  [5]
      delay_ms(500);
   
      portb = 0x7D; // [6]
      delay_ms(500);
   
      portb = 0x7;// forma hexadecimal  [7]
      delay_ms(500);
   
      portb = 0b01111111;//[8]
      delay_ms(500);
   
      portb = 0b01100111; //[9]
      delay_ms(500);
}

PiscaLed 2 com PIC 16F877A

Objetivo: Ligar e desligar vários leds consequentemente

Simulador usando Proteus 8.8


















Código feito no software mikroC Pro for, versão 7.2

void main() {
    trisb = 0;

    /*portb.rb0 = 1;
    portb.rb1 = 1;
    portb.rb2 = 1;
    portb.rb3 = 1;
    portb.rb4 = 1;
    portb.rb5 = 1;
    portb.rb6 = 1;
    portb.rb7 = 1;*/
 
    //método2 para ligar todos leds
    //portb = 0b11111111;//substitui o método acima, economizando linhas
 
    //método3  para ligar todos leds
    portb = 255;//forma em decimal
    //portb = 231;  //fazendo teste com com a porta 231
    delay_ms(500);//desligando os leds começando por rb7
 
    portb.RB7 = 0;
    delay_ms(500);
 
    portb.RB6 = 0;
    delay_ms(500);
 
    portb.rb5 = 0;
    delay_ms(500);//espera 0,5s
 
    portb.rb4 = 0;
    delay_ms(500);
 
    portb.RB3 = 0;
    delay_ms(500);
 
    portb.RB2 = 0;
    delay_ms(500);
 
    portb.rb1 = 0;
    delay_ms(500);
 
    portb.rb0 = 0;
    delay_ms(500);
}

17/02/2020

Pisca Led1 com PIC 16F877A

Software Proteus 8.8
























Código feito em CCS C Compiler

#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=20000000)

void main(){

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
   while(true){
      output_high(PIN_B2);
      delay_ms(1000);
      output_low(PIN_B2);
      delay_ms(1000);
   }

}

30/01/2020

Programa 18

Número aleatório no Arduíno com display 7 segmentos

Emulador feito no tinkercad.com















#define pinA 10
#define pinB 9
#define pinC 6
#define pinD 7
#define pinE 8
#define pinF 11
#define pinG 12
#define pinPD 5
#define pinBotao 2

int numero = 10;
boolean botaoAtu = false;
boolean botaoAnt = false;

void setup() {
  // put your setup code here, to run once:
  pinMode(pinBotao, INPUT);

  pinMode(pinA, OUTPUT);
  pinMode(pinB, OUTPUT);
  pinMode(pinC, OUTPUT);
  pinMode(pinD, OUTPUT);
  pinMode(pinE, OUTPUT);
  pinMode(pinF, OUTPUT);
  pinMode(pinG, OUTPUT);
  pinMode(pinPD, OUTPUT);

  randomSeed( analogRead(A0) );
}

void loop() {
  // put your main code here, to run repeatedly:
  botaoAtu = digitalRead(pinBotao);

  if (botaoAtu && !botaoAnt) {
     numero = random(10);
  }
  botaoAnt = botaoAtu;

  switch (numero) {
      case 0:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, HIGH);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, LOW);
        digitalWrite(pinPD, LOW);
        break;

      case 1:
        digitalWrite(pinA, LOW);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, LOW);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, LOW);
        digitalWrite(pinG, LOW);
        digitalWrite(pinPD, LOW);
        break;

      case 2:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, LOW);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, HIGH);
        digitalWrite(pinF, LOW);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 3:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, LOW);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 4:
        digitalWrite(pinA, LOW);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, LOW);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 5:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, LOW);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 6:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, LOW);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, HIGH);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 7:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, LOW);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, LOW);
        digitalWrite(pinG, LOW);
        digitalWrite(pinPD, LOW);
        break;

      case 8:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, HIGH);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      case 9:
        digitalWrite(pinA, HIGH);
        digitalWrite(pinB, HIGH);
        digitalWrite(pinC, HIGH);
        digitalWrite(pinD, HIGH);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, HIGH);
        digitalWrite(pinG, HIGH);
        digitalWrite(pinPD, LOW);
        break;

      default:
        digitalWrite(pinA, LOW);
        digitalWrite(pinB, LOW);
        digitalWrite(pinC, LOW);
        digitalWrite(pinD, LOW);
        digitalWrite(pinE, LOW);
        digitalWrite(pinF, LOW);
        digitalWrite(pinG, LOW);
        digitalWrite(pinPD, HIGH);
        break;
 
  }

  delay(10);
}

Créditos para:  https://cursodearduino.net/

22/01/2020

Programa 17

Função com Arduíno

#define pinLedVm 2
#define pinLedVd 3
#define pinBotao 4

boolean pisca = false;

boolean leBotao(int porta);
void piscaLED(int porta, int tempo);

void setup() {
  pinMode(pinLedVd, OUTPUT);
  pinMode(pinLedVm, OUTPUT);
  pinMode(pinBotao, INPUT_PULLUP);
}

void loop() {

  if (leBotao(pinBotao)) {
     pisca = !pisca;
  }
 

  if (pisca) {
     piscaLED(pinLedVm, 200);
     piscaLED(pinLedVd, 500);
  }
}


boolean leBotao(int porta) {
  static boolean estadoAnterior[14] = {true,true,true,true,true,true,true,true,true,true,true,true,true,true};
   
  boolean estadoBotao = digitalRead(porta);
  boolean ligado = false;
  if (!estadoBotao && estadoAnterior[porta]) {
     ligado = true;
  }
  estadoAnterior[porta] = estadoBotao;

  return ligado;
}


void piscaLED(int porta, int tempo) {
  static unsigned long delay1[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};

  if ((millis() - delay1[porta]) < tempo) {
     digitalWrite(porta, HIGH);
  } else {
     digitalWrite(porta, LOW);
  }

  if ((millis() - delay1[porta]) >= (tempo * 2) ) {
     delay1[porta] = millis();
  }
}

14/01/2020

Programa 16

Delay e millis no Arduíno



#define pinLedVd 10
#define pinLedVm 8
#define pinBotao 2

boolean estadoBotao = true;
boolean estAntBotao = true;
boolean estadoPisca = false;

unsigned long delay1 = 0;

void setup() {
  pinMode(pinLedVd, OUTPUT);
  pinMode(pinLedVm, OUTPUT);
  pinMode(pinBotao, INPUT_PULLUP);

  digitalWrite( pinLedVd, HIGH);
}

void loop() {

  estadoBotao = digitalRead(pinBotao);
  if (!estadoBotao && estAntBotao) {
     estadoPisca = !estadoPisca;
  }
  estAntBotao = estadoBotao;

  if (estadoPisca) {

    if ((millis() - delay1) >= 500) {
       digitalWrite( pinLedVm, HIGH);
    }

    if ((millis() - delay1) < 500) {
       digitalWrite( pinLedVm, LOW);
    }
   
    if ((millis() - delay1) >= 1000) {
      delay1 = millis();
    }
  } else {
    digitalWrite( pinLedVm, LOW);
  }

  delay(10);
}

Programa 15 -

Impressão e contador no Arduíno usando display LCD

Simulação feita no Tinkercad





















#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
     // set up the LCD's number of columns and rows:
     lcd.begin(16, 2);
     // Print a message to the LCD.
     lcd.print("DEUS E MAIOR ");
}

void loop() {
     // set the cursor to column 0, line 1
     // (note: line 1 is the second row, since counting begins with 0):
     lcd.setCursor(0, 1);
     // print the number of seconds since reset:
     lcd.print(millis() / 500);
}


Palavras chave:

Printing and counter in Arduino using LCD display
Impresión y contador en Arduino usando pantalla LCD
Priontáil agus cuntar in Arduino ag baint úsáide as taispeáint LCD
Druk en toonbank in Arduino met LCD-skerm
Drukowanie i liczenie w Arduino za pomocą wyświetlacza LCD
Друк та лічильник в Ардуїно за допомогою РК-дисплея
Skriva ut och räknar i Arduino med LCD-skärm
הדפסה ודלפק בארדואינו באמצעות צג LCD
Nyithak lan kontra ing Arduino nggunakake tampilan LCD
Ispis i šalter u Arduinu pomoću LCD zaslona
Печат и брояч в Arduino с помощта на LCD дисплей

13/01/2020

Programa 14 - Letras na tabela ASC

Imprimir caracteres usando while














#define pinBotao 2

void setup() {
  pinMode(pinBotao, INPUT_PULLUP);//PULLUP = evita a nececidade de 1 resistor
  Serial.begin(9600);//comunicação serial
}

void loop() {
  int n3 = 0;

  //laço de números

  for(int n1 = 0; n1 < 50; n1++){
   Serial.print(char((n1 % 10)+48));
   if(digitalRead(pinBotao) == LOW){//se a leitura for igual a desligado
    delay(400);
    break;
   }
   delay(50);
  }
  Serial.println();//pula uma linha

  //LAÇO DAS LETRAS MAIÚSCULAS
  letrasMaiusculas://endereço
  int n2 = 0;
 
  while (n2 < 50){
    //25 letras maíusculas na tabela ASC
    Serial.print(char((n2 % 25)+ 65));
    n2++;
    if(digitalRead(pinBotao) == LOW){
      delay(400);
      continue;//vai enviar para o while novamente
    }
    delay(50);
  }
  Serial.println();

  //laço das letras minúsculas
  do{
    n3 = random(25);//sorteando numero
    Serial.print(char(n3 + 97));//letra de a - z
    if(digitalRead(pinBotao) == LOW){
      delay(400);
      Serial.println();
      n2 = 0;
      goto letrasMaiusculas;//mudar para um endereço especificado
    }
    delay(50);
  }while (n3 != 16);//enquanto não for a letra q minúscula na tabela ASC

  Serial.println();
}

Saída gerada

12/01/2020

Programa 13 - Binario, hexadecimal e octal

Binario, hexadecimal e octal no Arduino

int valor1, valor2, valor3, valor4;

void setup() {
  valor1 = 25;
  valor2 = 13;

  Serial.begin(9600);

  Serial.print("Valor1: = ");
  Serial.print(valor1);

  Serial.print("\nValor2: = ");
  Serial.print(valor2);

  Serial.print("\n\nValor1 em binário = ");//exibe na tela
  Serial.print(valor1, BIN);// imprime o valor1 em binário

  Serial.print("\nValor2 em decimal: = ");
  Serial.print(valor2, DEC);

  Serial.print("\nValor1 em hexadecimal = ");
  Serial.print(valor1, HEX);

  Serial.print("\nValor2 em octal = ");
  Serial.print(valor2, OCT);
}

void loop() {

}

Saída gerada
















10/01/2020

Programa 12 - Soma e subtração no Arduino

Soma e subtração no Arduino

int valor1, valor2;
float soma, sub, divi, mult, resto, resFinal;

void setup() {
  valor1 = 25;
  valor2 = 13;

  soma = valor1 + valor2;
  sub = valor1 - valor2;
  divi = valor1 / valor2;
  mult = valor1 * valor2;
  resto = int (valor1) % int(valor2); // convertendo para inteiro

  resFinal = (soma * sub - divi + mult )/resto;

  Serial.begin(9600);
  Serial.print("Valor1: = ");//exibe na tela
  Serial.print(valor1);// imprime o valor1

  Serial.print("\nValor2: = ");
  Serial.print(valor2);

  Serial.print("\n\nSoma: = ");
  Serial.print(soma);

  Serial.print("\nSubtração: = ");
  Serial.print(sub);

  Serial.print("\nDivisaoão: = ");
  Serial.print(divi);

  Serial.print("\nMultiplicação: = ");
  Serial.print(mult);

  Serial.print("\nResto: = ");
  Serial.print(resto);

  Serial.print("\nResultado final: = ");
  Serial.print(resFinal);
}

void loop() {

}

Saída gerada


















09/01/2020

Programa 11

Contador usando Arduíno 
























//Portas analógicas
int pinos[9] = {12,11,10,9,8,7,6,5,4};
//int pinLed;

float minimo = 65;
float maximo = 1020;
float valorLDR;//guardar o valor nessa variavel
float luminosidade;

void setup() {
  // iniciando o pinLed
  for(int pinLed = 0; pinLed <= 8; pinLed++){
    pinMode(pinos[pinLed], OUTPUT);//portas digitais de saidas que irao ligar e desligar
  }

  pinMode(A0, INPUT);//porta analogica
}

void loop() {
  //
  valorLDR = analogRead(A0);//ler e guardar o valor nessa variavel
  luminosidade = ((valorLDR - minimo)/(maximo - minimo)) * 10;
  luminosidade = (luminosidade - 10) * -1 ;

  //acender a luminosidade de acordo com a faixa
  for(int pinLed = 0; pinLed <= 8; pinLed++){
    if(pinLed < luminosidade){
      digitalWrite(pinos[pinLed], HIGH);//ligar o led
    }else {
      digitalWrite(pinos[pinLed], LOW);//deligar o led
    }
  }
}

Programa 10

Usando Array no Arduíno com sensor de luz






















//Portas analógicas
int pinos[9] = {12,11,10,9,8,7,6,5,4};
//int pinLed;

float minimo = 65;
float maximo = 1020;
float valorLDR;//guardar o valor nessa variavel
float luminosidade;

void setup() {
  // iniciando o pinLed
  for(int pinLed = 0; pinLed <= 8; pinLed++){
    pinMode(pinos[pinLed], OUTPUT);//portas digitais de saidas que irao ligar e desligar
  }

  pinMode(A0, INPUT);//porta analogica
}

void loop() {
  //
  valorLDR = analogRead(A0);//ler e guardar o valor nessa variavel
  luminosidade = ((valorLDR - minimo)/(maximo - minimo)) * 10;
  luminosidade = (luminosidade - 10) * -1 ;

  //acender a luminosidade de acordo com a faixa
  for(int pinLed = 0; pinLed <= 8; pinLed++){
    if(pinLed < luminosidade){
      digitalWrite(pinos[pinLed], HIGH);//ligar o led
    }else {
      digitalWrite(pinos[pinLed], LOW);//deligar o led
    }
  }
}

Programa 9

Ligar leds no Arduíno usando Array





















int pinLed[9] = {12,11,10,9,8,7,6,5,4};
int numeroLed;
char digitado;

void setup() {
  int x;

  for(int x = 0; x <= 0; x++){
    pinMode(pinLed[x], OUTPUT);
  }

  Serial.begin(9600);
}

void loop() {
  digitado = ' ';
  numeroLed = 0;
 
  while (digitado != 'P'){//enquanto for menor que 8 acrescenta 1
    digitalWrite(pinLed[numeroLed], LOW);//apagou
   
    numeroLed += 1;
    if(numeroLed > 8){//se for maior
      numeroLed = 0;//reseta
    }
    digitalWrite(pinLed[numeroLed], HIGH);

  //verificar se tem alguma informação na porta serial
  if(Serial.available()){//se existir alguma informação na porta serial, se foi enviado informação para o arduino
    digitado = Serial.read();//lendo informação
    }

    delay(50);
  }

  delay(5000);
 
}



08/01/2020

Programa 8

Ascender leds com Arduino usando Array


























int pinLed[9] = {12,11,10,9,8,7,6,5,4};
int numeroLed;

void setup() {
  int x;

  for(int x = 0; x <= 0; x++){
    pinMode(pinLed[x], OUTPUT);
  }

}

void loop() {
  numeroLed = 0;

  while (numeroLed <= 8){
    digitalWrite(pinLed[numeroLed], HIGH);
    delay(50);

    numeroLed += 1;
  }

  numeroLed = 8;
  while(numeroLed >= 0){
    digitalWrite(pinLed[numeroLed], LOW);
    delay(500);

    numeroLed -= 1;
  }
}

Créditos para https://cursodearduino.net/

07/01/2020

Programa 7

Soma no Arduíno

int x, y, z, soma;

void setup() {
  // put your setup code here, to run once:
  //arduino começa a se comunicar com o computador
  Serial.begin(9600);//9600 velocidade

  x = 10;
  y = 20;
  z = 50;
  soma = x + y + z;
  Serial.print("Valor de x = ");
  Serial.print(x);

  Serial.print("\nValor de y = ");
  Serial.print(y);

  Serial.print("\nValor de z = ");
  Serial.print(z);

  Serial.print("\nSoma = ");
  Serial.print(soma);
}

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

}

Créditos para https://cursodearduino.net/

Programa 6

Acender sequencial de Leds em Arduino


























int pinLed[9] = {12,11,10,9,8,7,6,5,4};//portas
int numeroLed;

void setup() {
  int i;
  //repetir 0 vezes
  for(i =0; i <= 8; i++){
    pinMode(pinLed[i], OUTPUT);//repete várias vezes
  }
}

void loop() {
  //ligar os leds ascendente
  for(numeroLed = 0; numeroLed <=8; numeroLed++){
    digitalWrite(pinLed[numeroLed], HIGH);
    delay(200);
  }

  //desliga decrescente
  for(numeroLed = 8; numeroLed>= 0; numeroLed--){
    digitalWrite(pinLed[numeroLed], LOW);//desliga
    delay(800);
  }

}

Créditos para https://cursodearduino.net/

Programa 5

Acender Led no Arduino com botão de pressão

















int pinVermelho = 10;
int pinAmarelo = 9;
int pinVerde = 8;
int pinBotao = 7;
int pinPedestreVermelho = 3;
int pinPedestreVerde = 2;

int faseSemaforo;

int estadoBotao;
int estadoAnteriorBotao;

int tempoPisca;
int estadoPisca;

void setup() {
  // put your setup code here, to run once:

  pinMode(pinVerde, OUTPUT);
  pinMode(pinAmarelo, OUTPUT);
  pinMode(pinVermelho, OUTPUT);
  pinMode(pinBotao, INPUT);
  pinMode(pinPedestreVerde, OUTPUT);
  pinMode(pinPedestreVermelho, OUTPUT);

  faseSemaforo = 1;

  estadoAnteriorBotao = digitalRead(pinBotao);

  tempoPisca = 0;
  estadoPisca = HIGH;
}

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

  estadoBotao = digitalRead(pinBotao);

  if ((estadoBotao == LOW) && (estadoAnteriorBotao == HIGH)) {
   
     if (faseSemaforo < 4) {
       faseSemaforo = faseSemaforo + 1;
     } else {
       faseSemaforo = 1;
     }
  }

  estadoAnteriorBotao = estadoBotao;

  if (faseSemaforo == 1) {    //SEMAFORO ABERTO (VERDE)
     digitalWrite(pinVerde, HIGH);
     digitalWrite(pinAmarelo, LOW);
     digitalWrite(pinVermelho, LOW);

     digitalWrite(pinPedestreVerde, LOW);
     digitalWrite(pinPedestreVermelho, HIGH);   
  }

  if (faseSemaforo == 2) {   //SEMAFORO AMARELO
     digitalWrite(pinVerde, LOW);
     digitalWrite(pinAmarelo, HIGH);
     digitalWrite(pinVermelho, LOW);

     digitalWrite(pinPedestreVerde, LOW);
     digitalWrite(pinPedestreVermelho, HIGH);     
  }

  if (faseSemaforo == 3) {   //SEMAFORO FECHADO (VERMELHO)
     digitalWrite(pinVerde, LOW);
     digitalWrite(pinAmarelo, LOW);
     digitalWrite(pinVermelho, HIGH);
   
     digitalWrite(pinPedestreVerde, HIGH);
     digitalWrite(pinPedestreVermelho, LOW);     
  }

  if (faseSemaforo == 4) {   //SEMAFORO PEDESTRE PISCANDO
     digitalWrite(pinVerde, LOW);
     digitalWrite(pinAmarelo, LOW);
     digitalWrite(pinVermelho, HIGH);

     tempoPisca = tempoPisca + 1;
     if (tempoPisca == 400) {
        estadoPisca = !estadoPisca;
        tempoPisca = 0;
     }
   
     digitalWrite(pinPedestreVerde, LOW);
     digitalWrite(pinPedestreVermelho, estadoPisca);     
   
  }

  delay(100);
}

Créditos para https://cursodearduino.net/

Programa 4

Ascender Led no Arduino com botão de pressão

void setup() {

  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(7, INPUT);

}

void loop() {

  int estadoBotao;
  estadoBotao = digitalRead(7);//ao apertar o botão irá controlar os estados do led

  digitalWrite(10, estadoBotao);
  digitalWrite(9, estadoBotao);
}

Créditos para https://cursodearduino.net/

Programa 3

Acender Led em Arduino com intervalo de tempo

void setup() {

  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);

}

void loop() {

  int intervaloPisca;
  intervaloPisca = 700;

  digitalWrite(10, HIGH);
  digitalWrite(9, LOW);
  delay(intervaloPisca);//500 milesegundos

  digitalWrite(10, LOW);
  digitalWrite(9, HIGH);
  delay(intervaloPisca);
}

Créditos para https://cursodearduino.net/

Programa 2

Acender Led com intervalo de tempo em Arduino

void setup() {
  // put your setup code here, to run once:
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  int intervaloPisca;
  intervaloPisca = 700;

  digitalWrite(10, HIGH);
  digitalWrite(9, LOW);
  delay(intervaloPisca);//500 milesegundos

  digitalWrite(10, LOW);
  digitalWrite(9, HIGH);
  delay(intervaloPisca);
}

Créditos para https://cursodearduino.net/

02/01/2020

Programa 1 - Ligar led

Acender Led no arduino

void setup() {
  // put your setup code here, to run once:
  pinMode(10, OUTPUT);//ligar
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(10, HIGH);//liga
  delay(1000);//a cada 1 seg
  digitalWrite(10, LOW);//desliga
  delay(1000);
}

Créditos para  https://cursodearduino.net/ 

22/12/2019

SAP_Ev2

Simulação do modelo de um SAP1 no Logisim
Autor: Professor Giuliano - Microprocessadores - IFMT - Engenharia da Computação 2019/2
SAP1















Clique aqui para fazer o download do arquivo feito no Logisim versão 2.7

20/12/2019

HashSet em java

package conceito;
import java.util.HashSet;
import java.util.Set;

public class Main1 {

    public static void main(String[] args) {
        // TODO code application logic here
        Set<String> lista = new HashSet<String>();
        lista.add("a");
        lista.add("a");//só vai adicionar elementos não repetidos
        lista.add("b");
        lista.add("c");
        lista.add("d");
        lista.add("d");só vai adicionar elementos não repetidos
       
        for(String s : lista){
            System.out.println(lista);
        }
    }
   
}
Saída gerada

















CPU Simples no Logisim




























Clique aqui para fazer o download do arquivo feito no Logisim versão 2.7

13/12/2019

PostegreSQL / PGAdmin no Java

O objetivo desta atividade é a modelagem do banco de dados e o desenvolvimento de um sistema para controle e gerenciamento de torneios de tênis de mesa. Um torneio dever ter um nome, uma data de início/fim e o endereço onde será realizado, além de dados de contato do administrador do torneio (e-mail e telefone). Um torneio é composto por diversos Eventos, que por sua vez podem filtrar os participantes com base em diversos critérios:


  • a. individual ou duplas; 
  • b. sexo: masculino, feminino ou sem restrição de sexo; 
  • c. por idade: Rating (baseado na data de nascimento do jogador) define um intervalo de idade permitido neste evento; 


  • d. pelo nível de jogo: Ranking (pontuação acumulada do jogador que define a qualidade do seu jogo) onde será definido um intervalo pelo qual o participante poderá disputar. Esses critérios podem ser cumulativos ou não, ou seja, pode haver eventos individuais com restrição de ranking mas sem restrição de sexo e rating, da mesma forma que pode ter evento de duplas com restrição de sexo e rating mas sem restrição de ranking. No Evento deve ser possível ainda definir o modelo de disputa que poderá variar entre: disputa em grupos GR, eliminação simples ES ou uma combinação entre grupos e eliminação simples. Deve ser permitida a definição do tamanho dos grupos e a formatação das chaves de eliminação quando, houverem não houverem quantidade suficiente de participantes para a formatação dos grupos de forma homogênea (grupos de 3, 4 ou 5 jogadores) ou para a definição das chaves de mata mata (ES) quando a quantidade de jogadores não for múltiplo de 2. Deve ainda ser permitido ao sistema realizar a impressão dos grupos e chaves de eliminação simples em formato impresso e digital. Por fim deve ser possível fazer o controle financeiro das inscrições dos jogadores nos Eventos dos Torneios. As informações acima descritas servem apenas para dar um norte inicial aos trabalhos, segue abaixo mais links de informações para melhor entendimento do objeto a ser analisado, que pode se deve ser ampliado, conforme maior maturidade no ambiente de negócio do cliente.

















Resolução:

































Informações da caixa de diálogo








Informações incluídas







































Simulando jogo






































Dados incluídos no Banco de Dados







































Clique aqui para fazer o download do arquivo feito em Java e no PostegreSQL

Pilha em Java (Balanceamento)


/*ESCREVA UM PROGRAMA PARA VERIFICAR SE UMA EXPRESSAO MATEMATICA
TEM OS PARENTESES AGRUPADOS DE FORMA CORRETA ISTO É
1 - SE O NUMERO DE PARENTESES A ESQUERDA E A DIREITA SAO IGUAIS E
2 - SE TODO PARENTESE ABERTO É SEGUIDO POSTERIORMENTE POR UM FECHAMENTO
DE PARENTESE

 */
package hierarquiaMatematica;

import java.util.Stack;
/** EX: 06
 * A + B [D + C)
 * @author HENRIQUE
 */
public class ExpressaoMat {
   
    final static String ABRE = "([{";
    final static String FECHA = ")]}";
   
    public static boolean verificaSimbolos(String expressao){
        boolean balanceado = true;
        Stack<Character> pilha = new Stack<Character>();

        int index = 0;
        char simbolo, topo;
       
        while(index < expressao.length()){
            simbolo = expressao.charAt(index);
           
            if(ABRE.indexOf(simbolo)> -1){
                pilha.push(simbolo);
            }else if(FECHA.indexOf(simbolo)> -1){
                if(pilha.isEmpty()){
                    return false;
                }else{
                    topo = pilha.pop();
                    if(ABRE.indexOf(topo) != FECHA.indexOf(simbolo)){
                        return false;
                    }
                }
            }index++;
        }
        return true;
    }
   
    public static void main(String[] args) {
       
        imprimeResultado("A + B");
        imprimeResultado("A + B + (C - D)");
        imprimeResultado("{[()]{[](){()}");
        imprimeResultado("{[(]}[]()[()}");//desbalanceado
        imprimeResultado("A + B + C - D");//OK
    }
    public static void imprimeResultado(String expressao){
        System.out.println(expressao+" está balanceado ? "+verificaSimbolos(expressao));
    }
}


12/12/2019

Analisador léxico e sintático em java

Clique aqui para fazer o download do arquivo feito em Java
Autor: Mateus Marques - IFMT - Engenharia da Computação - 2018/2


Clique aqui para fazer o download do arquivo feito em Java
Autor: Luis Alexandre - IFMT - Engenharia da Computação - 2018/2


Clique aqui para fazer o download do arquivo feito em Java
Autor: Tales - IFMT - Engenharia da Computação - 2019/2


Clique aqui para fazer o download do arquivo feito em Pyton
Autor: Adriano - IFMT - Engenharia da Computação - 2019/2

Clique aqui para fazer o download do arquivo feito em Pyton
Autor: Lucas - IFMT - Engenharia da Computação - 2019/2