Pesquisar neste blog
26/03/2020
Contador com PIC e decodificador 4511 CCS C Compiler
Objetivo: Fazer um contador de 0 até 9 usando uma função e um decodificador 4511 com PIC
Código feito em CCS C Compiler
Método 1
#include <16F877A.h>
#use delay(crystal = 20MHz)
//Função para o contador
void Contador(){
int vetor[] = {0b0000, 0b0001, 0b0010, 0b0011, 0b0100, 0b0101, 0b0110, 0b0111, 0b1000, 0b1001};// Código de entrada em binário
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(500);
}
}
}
void main(){
Contador();//chamando a função
}
Método 2
#include <16F877A.h>
#use delay(crystal = 20MHz)
void Contador(){
int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//forma em decimal
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(500);
}
}
}
void main(){
Contador(); //chamando a função
}
24/03/2020
Algoritmo de todas as tabuada desejada em C
#include <stdio.h>
#include <stdlib.h>
int tabuada (int num){
printf("\nTabuada de %d\n",num);
for(int i = 0; i <= 10; i++){
printf("%d x %d = %d\n",num, i, (num * i));
}
return num;
}
int valor, cont = 0;
int main(){
printf("Digite o valor: ");
scanf("%d",&valor);
if(valor <= 0){
while(valor <= 0){
printf("Número inválido ! Digite um número maior que 0");
printf("\nDigite novamente: ");
scanf("%d",&valor);
}
}
while(cont != valor +1){
tabuada(cont);
cont++;
}
return 0;
}
#include <stdlib.h>
int tabuada (int num){
printf("\nTabuada de %d\n",num);
for(int i = 0; i <= 10; i++){
printf("%d x %d = %d\n",num, i, (num * i));
}
return num;
}
int valor, cont = 0;
int main(){
printf("Digite o valor: ");
scanf("%d",&valor);
if(valor <= 0){
while(valor <= 0){
printf("Número inválido ! Digite um número maior que 0");
printf("\nDigite novamente: ");
scanf("%d",&valor);
}
}
while(cont != valor +1){
tabuada(cont);
cont++;
}
return 0;
}
Saída gerada |
20/03/2020
Prova LP 2 - 2019/2
Prova aplicada em 24/10/2019
1) Dado uma hierarquia de classes mapeadas em uma modelagem de um software, com vistas ao reuso de código, o que deve ser levado em consideração para a decisão do uso de herança de implementação (extends) ou de agregação/composição para promover o reuso ? ( 0,5 )
RESP:
Deve ser levado em consideração o uso em tempo de compilação e o uso em tempo de execução.
Para o uso em tempo de compilação a herança (extends) resolve o problema, para a agregação/composição que é herança de tipo ou uso em tempo de execução resolve o problema.
2) Tipos genéricos podem ser definidos por meio de classes abstratas ou interfaces. Estabeleça as diferenças entre o uso de classes abstratas ou interfaces na implementação de tipos genéricos ? ( 1,0 )
RESP:
Classes abstratas:
+ As classes abstratas força a hierarquia para as subclasses.
+ Seu contrato faz com que as subclasses contemplem as mesmas hierarquias e/ou padrões.
- Classes abstratas não podem ser instanciadas
- Deve conter pelo menos um método abstrato
- Classes abstratas serve apenas para ser herdado
Interface
+ Uma classe pode implementar diversas interfaces
+ Interface não possui implementação, apenas assinatura
- Interface não pode ser instanciada e nem como criar um construtor
3) Como é possível um tipo ser implementado por mais de uma classe ? ( 1,0 )
RESP:
É possível através de interfaces, se uma classe A é do tipo I1, se a classe B é do tipo I2 e se a classe A fazer uma herança (extends) de classe B, logo; podemos dizer que a classe A é do tipo I1 e do tipo I2.
4) Por que é conveniente que um cliente de um objeto não conheça a(s) classe(s) que pode(m) produzir os objetos para ele ? Como isso é possível ? ( 0,7 )
RESP:
Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe, ou que essa classe se transforme em uma herança.
- É possível através de interfaces que esconde os métodos da classe.
5) Qual a finalidade da API JDBC do java ? ( 0,7 )
RESP:
Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe ou que essa classe se transforme em uma herança
- É possível através de interfaces que esconde os métodos da classe
6) Como é possível uma aplicação Java acessar mais de um tipo de SGDB de forma flexível (com pouca alteração) por meio da API JDBC ? ( 1,0 )
RESP:
É possível usando um driver JDBC para se comunicar diretamente com uma fonte de dados específica, caso não tenha um driver JDBC é necessário que tenha pelo menos um driver ODBC.
7) Existem quatro tipo de driver JDBC, qual é o mais recomendado ? Porque ? ( 1,0 )
RESP:
Pure Java, tipo 4
- Porque os drivers se comunicam diretamente com o Banco de Dados usando soquetes de rede
- Porque não requer código adicional do Java
8 - Considere o trecho de código a seguir e responda as questões ? ( 0,7 )
package apps;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conexao1{
public static void main(String args[]){
Connection conexao;
String url = "jdbc:postgresql://localhost:5432/produto";
String usr = "postgresql";
String pass = "postgresql";
try{
Class.forName("org.postgresql.Driver");
conexao = DriverManager.getConnection(url, usr, pass);
System.out.println("Conexão estabelecida");
conexao.close();
System.out.println("Conexão encerrada");
}catch (ClassNotFoundException cnf){
System.out.println("Classe do driver não encontrado - "+cnf.getMessage());
}catch (SQLException sqle){
System.out.println("Conexao não estabelecida - "+sqle.getMessage());
}
}
}
a) Descreva quais são as informações presentes na URL de conexão JDBC ?
RESP:
b) Qual o papel da classe DriverManager ?
RESP:
Realizar a conexão com o banco de dados da fonte específica PostgreSQL usando a URL, USR(usuário) e o pass(senha)
c) Qual a finalidade da Interface / objeto Connection na manipulação de banco de dados por meio da JDBC ?
RESP:
Ser como uma forma de ponte para estabelecer a conexão com o Banco de Dados.
d) O que é realizado no trecho de código, caso ão ocorra exceções ?
RESP:
É feita uma conexão de curto tempo com a fonte específica PostgreSQL e em seguida é finalizado a conexão
9) Considere os trechos de código a seguir e responda as questões. ( 1,0 )
Código 01
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String nome = "Refrigerantes";
float promocao = 0;
float margem = 50;
try{
comando = conexao.preparedStatement("INSERT INTO GRUPOPRODUTO (NOME, PROMOCAO, MARGEMLUCRO) VALUES (?, ?, ?)");
comando.setString(1, nome);
comando.setFloat(2, promocao);
comando.setFloat(3, margem);
comando.executeUpdate();
System.out.println("Inclusão realizada com sucesso");
}catch (SQLException ex){
System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
Código 02
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String sql = "Refrigerantes";
String nome = "Bebidas destiladas";
float promocao = 10;
float margem = 50;
sql += "('"+ nome +"', "+promocao+", "+margem+")";
try{
comando = conexao.reateStatment();
comando.executeUpdate(sql);
System.out.println("Inclusão realizada com sucesso");
}catch (SQLException ex){
System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
a) Existe diferença funcional entre os dois trechos de código ? Justifique.
RESP:
Não existe diferença funcionais entre o código 1 e o código 2, porém o código 1 é mais recomendado.
b) Existe diferença de implementação entre os trechos de código ? Justifique.
RESP:
Existe diferença de implementação entre os 2 códigos, o código 01 utiliza o PreparedStatmente para realizar a inserção, já o código 02 utiliza uma String SQL que é menos recomentada.
10) Analise o trecho de código a seguir e responda as questões. Considere que a FábricaConexao é uma classe utilitária que devolve um objeto Connection instanciado. (0,8 )
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
try{
comando = conexao.preparedStatement("SELECT *FROM grupoproduto ORDER BY nome");
ResultSet resultado = comando.executeQuery();
while (resultado.next()){
System.out.println("Codigo: "+resultado.getInt("codigo"));
System.out.println("Nome: "+resultado.getString("nome"));
System.out.println("% Promocao: "+resultado.getFloat("promocao"));
System.out.println("% Margem lucro: "+resultado.getFloat("margemlucro"));
System.out.println("---------------------------------------------------");
}
resultado.close();
}catch (SQLException ex){
System.out.println("Erro ao recuperar os grupos de produtos"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
a) O que o código realiza (linhas gerais) ?
RESP:
- Realiza a conexão com o banco de dados
- Faz uma seleção de tudo do grupoproduto ordenado em forma crescente por nome
- É processado e executado o resultado
- Enquanto haver dados em ResultSet
- Exibe o código
- Exibe o nome
- Exibe a promoção
- Exibe a margem de lucro
- É finalizada e fechada o resultado
- Caso ocorra erro de comando, irá exibir ERRO e os dados do grupo
- Finalizar a conexão com o Banco de Dados
- Caso ocorra um erro de conexão com Banco de Dados, irá exibir a mensagem de erro SQL
b) O que é o objeto ResultSet ? Qual a sua finalidade ?
RESP:
Coletar informação de linhas de comandos SQL e processa -lá.
- Sua finalidade é ser como um objeto de referência para realizar os comandos SQL
19/03/2020
Tela LCD + teclado com PIC 16F877A
Código feito em CCS C Compiler
#include <LCD + teclado.h>
#include <KBD.C>//driver do teclado
#define LCD_DATA_PORT getenv("SFR:PORTB")//porta padrão
#include <lcd.c>
char c;
void main(){
kbd_init();
lcd_init();
printf(lcd_putc,"\fDigite: ");
delay_ms(50);
while(TRUE){
c = kbd_getc();//retorna qual tecla foi precionada
delay_ms(2);//dando uma pausa de 2 ms para processar informação
if(c != 0){// se a tecla foi precionada
printf(lcd_putc,"%c",c);//imprindo a tecla digitada
delay_ms(300);
}
}
}
Clique aqui para fazer o download dos arquivos
Variável em CCS C Compiler
Código feito em CCS C Compiler
#include <main.h>
#use delay(clock = 20MHz)
int x;
void main(){
while(true){
output_high(PIN_B2);
delay_ms(1000);
output_low(PIN_B2);
delay_ms(1000);
x++;//cada piscada soma +1
if(x == 5){
output_high(pin_b7);
}
}
}
18/03/2020
LCD com PIC 16F877A
17/03/2020
Desafio 5 LCD
Desafio: Escrever caractere manualmente de acordo com a tabela ASCII
Exemplo: Escrever FBD
Passo 1:
0000 1111 => Visor ligado (ligar o visor e ficar piscando)
Passo 2:
Habilita e desabilita o enable E
Passo 3:
0011 1000 => 2 Linhas do LCD (define 2 linhas )
Passo 4:
LCD manual |
Controle em inglês |
Controle em português |
Tabela ASCII |
Exemplo: Escrever FBD
Passo 1:
0000 1111 => Visor ligado (ligar o visor e ficar piscando)
Passo 2:
Habilita e desabilita o enable E
Passo 3:
0011 1000 => 2 Linhas do LCD (define 2 linhas )
Passo 4:
Habilita e desabilita o enable E
Passo 5:
F = 0100 0110
Passo 6:
Habilita RS
Passo 7:
Habilita e desabilita o Enable
Passo 8:
B = 0100 0010
Passo 9:
Habilita RS
Passo 10:
Habilita e desabilita o Enable
Passo 11:
D = 0100 0110
Passo 12:
Habilita RS
Passo 13:
Habilita e desabilita o Enable
Palavras chave:
כתוב תו ידני לפי טבלת ASCII
Tulis karakter kanthi manual miturut tabel ASCII
Persona scribam tincidunt ASCII ad mensam
Psát znak ručně podle tabulky ASCII
Skriv tegn manuelt i henhold til ASCII-tabellen
根據ASCII表手動寫入字符
Kọ kikọ silẹ pẹlu ọwọ ni ibamu si tabili ASCII
Skriv tecken manuellt enligt ASCII-tabellen
Γράψτε τον χαρακτήρα χειροκίνητα σύμφωνα με τον πίνακα ASCII
अक्षर ASCII तालिका अनुसार म्यानुअली लेख्नुहोस्
Skriuw karakter manuell neffens de ASCII-tabel
Isulat sa sulud ang karakter nga sumala sa lamesa sa ASCII
Passo 5:
F = 0100 0110
Passo 6:
Habilita RS
Passo 7:
Habilita e desabilita o Enable
Passo 8:
B = 0100 0010
Passo 9:
Habilita RS
Passo 10:
Habilita e desabilita o Enable
Passo 11:
D = 0100 0110
Passo 12:
Habilita RS
Passo 13:
Habilita e desabilita o Enable
Palavras chave:
כתוב תו ידני לפי טבלת ASCII
Tulis karakter kanthi manual miturut tabel ASCII
Persona scribam tincidunt ASCII ad mensam
Psát znak ručně podle tabulky ASCII
Skriv tegn manuelt i henhold til ASCII-tabellen
根據ASCII表手動寫入字符
Kọ kikọ silẹ pẹlu ọwọ ni ibamu si tabili ASCII
Skriv tecken manuellt enligt ASCII-tabellen
Γράψτε τον χαρακτήρα χειροκίνητα σύμφωνα με τον πίνακα ASCII
अक्षर ASCII तालिका अनुसार म्यानुअली लेख्नुहोस्
Skriuw karakter manuell neffens de ASCII-tabel
Isulat sa sulud ang karakter nga sumala sa lamesa sa ASCII
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-സെഗ്മെന്റ് ഹെക്സാഡെസിമൽ ഡിസ്പ്ലേ
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
}
}
}
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);
}
}
}
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);
}
}
}
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
}
}
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
}
}
}
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
}
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);
}
}
}
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
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);
}
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
#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/
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();
}
}
#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);
}
#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
#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 дисплей
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();
}
#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() {
}
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() {
}
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 |
Assinar:
Postagens (Atom)