analogWrite(pinoSaida, valorSaida);//escreve na saida
imprimeSerial();
imprimeLcd();
acionaMotor();
delay(2);// aguarda 2 ms
}
void imprimeSerial() {
Serial.print("sensor = "); // imprime a palavra sensor
Serial.print(valorSensor);// imprime o valor da entrada
Serial.print("\t motor = ");// tabula e imprime a palavra saida
Serial.println(valorSaida);// imprime em nova linha o valor saida
}
void imprimeLcd() {
lcd.setCursor(0, 0);
lcd.print("sensor = "); // imprime a palavra sensor
lcd.print(valorSensor);// imprime o valor da entrada
lcd.setCursor(0, 1);
lcd.print("motor = ");// imprime a palavra saida
lcd.print(valorSaida);// imprime em nova linha o valor saida
delay (10);
}
void acionaMotor() {
analogWrite(pinoMotor, valorSaida);//escreve na saida
}
// Fim do código
Voltímetro 0 a 5V
// Início do Código Voltímetro 5V:
/* Título: Voltímetro 0 a 5V Nome: Empresa: Data: Versão: 0.1.0 Descrição: Programa para efetuar medidas de 0 a 5V Entradas Analógicas, Saida serial Este circuito utiliza a entrada analógica, para construir um voltímetro digital de 0 a 5V. O circuito: - Potenciômetro ligado ao pino analógico A0. O centro do potenciômetro vai ao pino.. Os demais lados em +5V e GND criado em 11/03/2019 modificado em 12/03/2019 por Luis Referâncias em: http://www.arduino.cc/en/Tutorial/AnalogInOutSerial Fim do Cabeçalho*/ #include <Arduino.h> // Biblioteca opcional // Definição dos pinos #define entradaVoltimetro A0 // Rótulo para o pino A0 // declaração de varáiveis e funções void medirEntrada (); void imprimirSerial(); int valorSensor = 0; float media = 0; float acumul = 0; // função de configuraçao void setup() { Serial.begin(9600);// inicializa serial em 9600 bps } void loop() { medirEntrada();// chama rotina para medir imprimirSerial(); // chama rotina de impressão delay(100); } // Rotina para medir 100 vezes o valor de entrada void medirEntrada () { // Efetua 100 vezes a medida, calcula a média e converte o fundo de escala for (int x = 1; x < 100; x++) { valorSensor = analogRead(entradaVoltimetro);// lê porta analógica acumul = acumul + valorSensor; // soma o valor acumulado } acumul = acumul / 100; // calcula a média media = acumul * 5 / 1023; // Converte para o fundo de escala 5V } // Rotina para impressão serial void imprimirSerial() { Serial.print("sensor = "); Serial.print(valorSensor); Serial.print("\t tensão= "); Serial.println(media, 1); }
// Fim do código
Medidor e Controlador de temperatura com LM 35
// Início do Código /* Título: Medidor e Controlador de Temperatura com LM 35 Nome:Professor Aransegui Empresa:Escola Técnica Parobé Data:12/03/2019, release 27/03/2019 Versão: 0.0.0 Descrição: Medidor de 0 a 150 graus Celsius com alarme Entradas Analógicas, Saida serial Este circuito utiliza a entrada analógica, para construir um termômetro digital de 0 a 150. O circuito: - Sensor LM 35 Pino 2 ligado a porta analógica A0 Pino 1 +5V Pino 3 em GND criado em 11/03/2019 modificado em 12/03/2019 por Luis Referâncias em: http://www.arduino.cc/en/Tutorial/AnalogInOutSerial Fim do Cabeçalho*/ #include <Arduino.h> // Biblioteca opcional // Definição dos pinos #define entradaLm35 A0 // Rótulo para o pino A0 #define ledPino 13 // declaração de varáiveis e estruturas que serão utilizadas void medirEntrada (); void imprimirSerial(); void alarmeTemperatura (); int valorSensor = 0; float media = 0; float acumul = 0; float fundoEscala = 150; // função de configuraçao void setup() { Serial.begin(9600);// inicializa serial em 9600 bps pinMode(ledPino, OUTPUT); } void loop() { medirEntrada();// chama rotina para medir imprimirSerial(); // chama rotina de impressão delay(100); } // Rotina para medir 100 vezes o valor de entrada e calcular a édia void medirEntrada () { // Efetua 100 vezes a medida, calcula a média e converte o fundo de escala for (int x = 1; x < 100; x++) { valorSensor = analogRead(entradaLm35);// lê porta analógica acumul = acumul + valorSensor; // soma o valor acumulado } acumul = acumul / 100; // calcula a média media = acumul * fundoEscala / 1023; // Converte para o fundo de escala para 150 if (media >= 100) { alarmeTemperatura (); // chama a função } } // Rotina de Alarme void alarmeTemperatura () { // Início de um loop infinito while (true) { digitalWrite(ledPino, HIGH); delay(500); digitalWrite(ledPino, LOW); delay(500); Serial.println("Superaquecimento, corrija e Pressione Reset para Reiniciar "); delay(10); } } // Rotina para impressão serial void imprimirSerial() { Serial.print("sensor = "); Serial.print(valorSensor); Serial.print("\t temperatura= "); Serial.println(media, 1); } // Fim do Código
// Como parar um código // Daremos um nome ao pino que ficara o LED: #define ledPino 13 #define botaoPino 2 void interrupcao(){ digitalWrite(ledPino, HIGH); // Liga o LED (HIGH = nível lógico alto) delay(5000); } // Esta função "setup" roda uma vez quando a placa e ligada ou resetada void setup() { pinMode(ledPino, OUTPUT); // Configura o pino do led (digital) como saída attachInterrupt(botaoPino,interrupcao,RISING); //Configurando a interrupção } // Função que se repete infinitamente quando a placa é ligada void loop() { digitalWrite(ledPino, HIGH); // Liga o LED (HIGH = nível lógico alto) delay(1000); // Espera um segundo digitalWrite(ledPino, LOW);// Desliga o LED (LOW = nível lógico baixo) delay(1000); // Espera um segundo }
Comunicação entre duas portas
// Início do código /* Recebe as duas portas seriais de software, envia para a porta serial do hardware. Para escutar em uma porta de software, você chama port.listen (). Ao usar duas portas seriais de software, você precisa alternar portas por listen () em cada um de cada vez. Escolha um tempo lógico para alternar portas, como o fim de uma transmissão esperada, ou quando o buffer está vazio. Este exemplo muda as portas quando não há nada mais para ler de uma porta O circuito: Dois dispositivos que se comunicam serialmente são necessários. TX do primeiro dispositivo serial conectado ao pino digital 10 (RX), RX ao pino 11 (TX) TX de segundo dispositivo serial conectado ao pino digital 8 (RX), RX ao pino 9 (TX) Nota: Nem todos os pinos no Mega e Mega 2560 suportam interrupções de mudança, então somente o seguinte pode ser usado para RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 Nem todos os pinos no suporte Leonardo mudam de interrupção, então somente o seguinte pode ser usado para RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). criado em 18 de abril de 2011 modificado 19 março 2016 de Tom Igoe baseado no TwoPortRXExample de Mikal Hart Este código de exemplo está no domínio público. */ #include <SoftwareSerial.h> // software serial #1: RX = digital pino 10, TX = digital pino 11 SoftwareSerial portaUm(10, 11); // software serial #2: RX = digital pino 8, TX = digital pino 9 // no Mega, use outros pinos, já que 8 e 9 não funcionam no Mega SoftwareSerial portaDois(8, 9); void setup() { // Abra as comunicações seriais e aguarde a abertura da porta: Serial.begin(9600); while (!Serial) { // aguarde a porta serial se conectar. Necessário apenas para porta USB nativa } // Inicializa as duas portas portaDois.begin(9600); portaUm.begin(9600); } // Inicie cada porta serial do software void loop() { // Por padrão, a última porta inicializada está escutando. // quando você quiser ouvir em uma porta, selecione-a explicitamente: portaUm.listen(); Serial.println("Dados da porta Um:"); // enquanto houver dados chegando, leia // e envie para a porta serial do hardware: while (portaUm.available() > 0) { char entradaByte = portaUm.read(); Serial.write(entradaByte); delay(100); } // linha em branco para separar os dados das duas portas: Serial.println(); // Agora escute na segunda porta portaDois.listen(); // enquanto houver dados chegando, leia // e envie para a porta serial do hardware: Serial.println("Dados da porta dois:"); while (portaDois.available() > 0) { char entradaByte = portaDois.read(); Serial.write(entradaByte); delay(100); } // linha em branco para separar os dados das duas portas: Serial.println(); }
// Final do código
Estrutura para Teclado Utilizando apenas uma porta analógica
// Início do Código /* Modelo de Prescaller Luis Antonio Aransegui 13/04/2019 Versão:0.0.0 Este exemplo é baseado no código: http://www.arduino.cc/en/Tutorial/AnalogInOutSerial */ // Definição dos pinos #define analogInPin A0 // Pino da entrada analógica // Declaração de ISRs(opcional) void imprimeMensagem(); void teclaZero();// função 0 void teclaUm();// função 1 void teclaDois();// função 2 void teclaTres();// função 3 void teclaQuatro();// função 4 // Declaração de variáveis int sensorValue = 0; // valor inicial do sensor // Configuração void setup() { // inicialização da porta serial Serial.begin(9600); } void loop() { // leitura do sensor sensorValue = analogRead(analogInPin); delay(100); // Testes da porta analógica //Próximo a 5V if (sensorValue >= 1020) { imprimeMensagem (); delay(100); } // Tecla 0, formada por Divisor de Tensão 10K e 22K if (sensorValue <= 710 && sensorValue >= 700) { teclaZero(); delay(100); } // Tecla 1, formada por Divisor de Tensão 10K e 18K if (sensorValue <= 660 && sensorValue >= 650) { teclaUm(); delay(100); } // Tecla 0, formada por Divisor de Tensão 10K e 15K if (sensorValue <= 620 && sensorValue >= 610) { teclaDois(); delay(100); } // Tecla 0, formada por Divisor de Tensão 10K e 12K if (sensorValue <= 560 && sensorValue >= 550) { teclaTres(); delay(100); } // Tecla 4, formada por Divisor de Tensão 10K e 10K if (sensorValue <= 520 && sensorValue >= 510) { teclaQuatro(); delay(100); } } // Estruturas de controle void teclaZero() { // aqui vai o código numero zero Serial.print("Tecla 0= "); Serial.println(sensorValue); } void teclaUm() { // aqui vai o codigo 1 Serial.print("Tecla 1 = "); Serial.println(sensorValue); } void teclaDois() { // aqui vai o código do 2 Serial.print("Tecla 2 = "); Serial.println(sensorValue); } void teclaTres() { // aqui vai o código do 3 Serial.print("Tecla 3 = "); Serial.println(sensorValue); } void teclaQuatro() { // aqui vai o código do 4 Serial.print("Tecla 4 = "); Serial.println(sensorValue); } void imprimeMensagem() { // |Aqui vai o código desejado Serial.println("Pressione uma Tecla"); delay(100); } // Final do Código
// Código Exemplo, Conclual //Código em Boas Práticas par interpretação de sensores de saídas analógicas /* Parte 1 - Cabeçalho Título: Controle de Sensores Nome: Luis Antonio Aransegui Empresa: Escola Técnica Parobé Data: 12/03/2019 Midificado em 20/08/2019 Versão: 0.1.0 Descrição: Entradas Analógicas, Saída Analógica, Saida serial Este circuito lê a entrada analógica, mapeia e joga o resultado para a saída analógica. Também imprime na saída serial. O circuito: Potenciômetro ligado ao pino analógico A0. O centro do potenciômetro vai ao pino.. Os demais lados em +5V e GND Led conectado no pino 9 ao terra criado em 11/03/2019 modificado em 12/03/2019 por Luis Referências em: http://www.arduino.cc/en/Tutorial/AnalogInOutSerial Fim do Cabeçalho */ // Parte 2 - Inclusão de bibliotecas #include <Arduino.h> // Biblioteca padrão // Parte 3 - Planejamento - Definição dos pinos #define sensorPino A0 // define rótulo ao pino #define pinoSaida 13 //define ao rótulo ao pino 13 // Parte 4 Definição de variáveis int valorSensor = 0; // valor inicial do sensor int valorSaida = 0; // valor inicial da saída // Parte 5 faz o setup do hardware void setup() { Serial.begin(9600);// inicializa a porta serial- reservar pinos 0 e 1 } // Parte 6 - função principal- corpo do programa void loop() { leituraSensor(); acionaMotor(); // imprime no monitor serial imprimeSerial(); imprimeLcd(); delay(100);// aguarda 2 ms } void imprimeSerial() { Serial.print("sensor = "); // imprime a palavra sensor Serial.print(valorSensor);// imprime o valor da entrada Serial.print("\t saida = ");// tabula /t e imprime a palavra saida Serial.println(valorSaida);// imprime em nova linha o valor saida } void leituraSensor() { valorSensor = analogRead(sensorPino);// lê entrada A0) de 0 a 1023 valorSaida = map(valorSensor, 0, 1023, 0, 255);// converte entrada para saída - resolução } // Rotina para Acionar motor void acionaMotor() { analogWrite(pinoSaida, valorSaida); //escreve na saida } // Imprime na Serial void imprimeLcd() { // aqui vai o codigo }
Schimitt Trigger
O comparador é uma das peças mais importantes para os sistemas
digitais. Ele tem a função de decidir se a entrada está em nível alto ou
baixo, independente do sinal de entrada ser digital ou analógico. Neste post veremos como comparadores Schmitt-trigger (comparadores
com histerese) fazem uso de realimentação positiva para evitar ruídos de
transição de estado.
Comparador Schmitt-trigger inversor e não-inversorEntretanto muitas vezes a sua montagem necessita de um
hardware maior e quando tarbalhamos com microcontroladores podemos
utilizar o próprio chip e mascarar este hardware através do software. O
código abaixo implementa um schimit trigger por software na palataforma
Arduino.
/***************Título: Schimit Trigger or Software*************** Empresa: Escola Técnica Parobé Autor: Professor Luis Aransegui Versão: 0.0.0 Data: 03/04/2020 Modificado: 03/04/2020 Referências: www.arduino.cc */ // Rotulando os pinos #define pinoEntrada 4 #define pinoSaida 5 // Definindo os pinos void setup() { pinMode(pinoEntrada, INPUT_PULLUP); pinMode(pinoSaida, OUTPUT); } // Rotina de teste void loop() { schimitTrigger (); } // Rotina do comparador schimit void schimitTrigger () { boolean valorEntrada = digitalRead(pinoEntrada); digitalWrite(pinoSaida, valorEntrada); } Implemente
isto no seu código e evitaràs ruídos de teclas ou na entrada de um
encoder por exemplo, aonde o pino 4 será a entrada do sensor e o pino 5 a
saída para o pino desejado, por exemplo pino 2 ou 3 do Uno para gerar
uma interrupção. Exemplo de Código com Interrrupção: /***************Título: Schimit Trigger por Software*************** Empresa: Escola Técnica Parobé Autor: Professor Luis Aransegui Versão: 1.1.0 Data: 03/04/2020 Modificado: 03/04/2020 Referências: www.arduino.cc Este código paralisa o programa quando o botão de pânico(interrupção for apertado
Neste exemplo o pino 5 deverá estar conectado ao pino 2 da int Lembre que boas práticas são importantes e as demais funções do código devem estar em estruturas separadas */ #define pinoInt 2 #define pinoEntrada 4 #define pinoSaida 5 #define pinoLed 13 void setup() { pinMode(pinoEntrada, INPUT_PULLUP); pinMode(pinoSaida, OUTPUT); pinMode(pinoLed, OUTPUT); pinMode(pinoInt, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(pinoInt),paraTudo, CHANGE); } void loop() { schimitTrigger (); maquinaFuncionando(); } void schimitTrigger () { boolean valorEntrada = digitalRead(pinoEntrada); digitalWrite(pinoSaida, valorEntrada); } // Função da Interrupçao Gerando Alarme void paraTudo(){
while(true){ digitalWrite(pinoLed,HIGH); delay(500); digitalWrite(pinoLed,LOW); delay(500); } } // Equipamento Funcionando void maquinaFuncionando() {
//aqui vai a estrutura de funcionamento até a parada } Teste e Acerte
Precisamos de espaço. Em tempos de home office, cada centímetro vale ouro. Na hora de jogar, então, o espaço se torna ainda mais fundamental. Por isso, foi com muita expectativa que testamos o recém-lançado teclado mecânico Logitech K835 TKL. teste de teclas
com a popularidade vêm os desafios, incluindo ataques cibernéticos como o Trava Zap. Este artigo busca explicar o que é o Trava Zap, os problemas que ele causa e como os usuários podem se proteger contra essa ameaça Trava Zap
0tucesXcrocdo Julie Ritter Crack
ResponderExcluirringhandsoma
Precisamos de espaço. Em tempos de home office, cada centímetro vale ouro. Na hora de jogar, então, o espaço se torna ainda mais fundamental. Por isso, foi com muita expectativa que testamos o recém-lançado teclado mecânico Logitech K835 TKL.
ResponderExcluirteste de teclas
com a popularidade vêm os desafios, incluindo ataques cibernéticos como o Trava Zap. Este artigo busca explicar o que é o Trava Zap, os problemas que ele causa e como os usuários podem se proteger contra essa ameaça
ResponderExcluirTrava Zap