sexta-feira, 6 de dezembro de 2019
terça-feira, 26 de novembro de 2019
sexta-feira, 22 de novembro de 2019
quinta-feira, 21 de novembro de 2019
quarta-feira, 20 de novembro de 2019
terça-feira, 22 de outubro de 2019
terça-feira, 15 de outubro de 2019
sábado, 13 de julho de 2019
segunda-feira, 8 de julho de 2019
quinta-feira, 23 de maio de 2019
Modulos para Arduino
RFID
Sensor Presença PIR
OLED
Acelerômetro
Ultra Som
Comunicação Wireless - NRF24L01
Módulo Relé
Bluetooth H06
Ethernet Shield
RTC DS1307 e DS3231
Sensor Unidade e Temperatura DHT11
Sensores para Módulo 3
Sensor Presença PIR
OLED
Acelerômetro
Ultra Som
Comunicação Wireless - NRF24L01
Módulo Relé
Bluetooth H06
Ethernet Shield
RTC DS1307 e DS3231
Sensor Unidade e Temperatura DHT11
Sensores para Módulo 3
terça-feira, 9 de abril de 2019
Semaforo com Interrupção e LCD
/*
Semaforo cruzamento 2 vias
sm1
VM1 pino 3
AM1 pino 2
VD1 pino 1
sm2
VM2 pino 6
AM2 pino 5
VD2 pino 4
Vermelho VM tempo 11s
Amarelo AM tempo 1s
Verde VD tempo 10s
Modificado em 16 out 2016
by Luiz O.Pilger Antonio
Modificado em 09/04/2019
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
byte VMP = 10;
byte VDP = 9;
byte VM2 = 8;
byte AM2 = 7;
byte VD2 = 6;
byte VM1 = 5;
byte AM1 = 4;
byte VD1 = 3;
const byte interruptPin = 2;
volatile byte state = LOW;
// A função de configuração é executada uma vez quando você pressiona reset ou liga a placa
void setup() {
lcd.begin (16, 2);
// inicializa os pinos digital VM, AM e VD como saída
pinMode(VM1, OUTPUT);
pinMode(AM1, OUTPUT);
pinMode(VD1, OUTPUT);
pinMode(VM2, OUTPUT);
pinMode(AM2, OUTPUT);
pinMode(VD2, OUTPUT);
pinMode(VMP, OUTPUT);
pinMode(VDP, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
//attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
//attachInterrupt(digitalPinToInterrupt(interruptPin), blink, RISING);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING); //Configurando a interrupção);
}
// A função de loop é repetidamente de forma infinita
void loop() {
// =========================================
// etapa 1 - 1=verde 2=vermelho
lcd.setCursor(0, 1);
lcd.print("1-VD 2-VM P-VM");
//sm 1
digitalWrite(VM1, LOW); // Desiga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, HIGH); // Liga o Verde 1
//sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
//
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
// tempo
delay(5000); // tempo de 10s
// =========================================
// etapa 2 - 1=amarelo 2=vermelho
lcd.setCursor(0, 1);
lcd.print("1-AM 2-VM P-VM");
// sm 1
digitalWrite(VM1, LOW); // Desiga o Vermelho 1
digitalWrite(AM1, HIGH); // Liga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
// tempo
delay(1000); // tempo de 1s
// =========================================
// etapa 3 - 1=vermelho 2=verde
lcd.setCursor(0, 1);
lcd.print("1-VM 2-VD P-VM");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm2
digitalWrite(VM2, LOW); // Desiga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, HIGH); // Liga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
delay(5000); // tempo de 10s
// =========================================
// etapa 4 - 1=vermelho 2=amarelo
lcd.setCursor(0, 1);
lcd.print("1-VM 2-AM P-VM");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm2
digitalWrite(VM2, LOW); // Desiga o Vermelho 2
digitalWrite(AM2, HIGH); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Liga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
delay(1000); // tempo de 1s
if (state == HIGH) {
lcd.setCursor(0, 0);
lcd.print("Pedestre Passe");
lcd.setCursor(0, 1);
lcd.print("1-VM 2-VM P-VD");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
digitalWrite(VMP, LOW); // Liga o Vermelho P
digitalWrite(VDP, HIGH); // Desiga o Verde P
delay(5000);
lcd.setCursor(0, 0);
lcd.print("Pedeste aguarde");
state = LOW;
}
}
void blink() {
state = HIGH;
}
Semaforo cruzamento 2 vias
sm1
VM1 pino 3
AM1 pino 2
VD1 pino 1
sm2
VM2 pino 6
AM2 pino 5
VD2 pino 4
Vermelho VM tempo 11s
Amarelo AM tempo 1s
Verde VD tempo 10s
Modificado em 16 out 2016
by Luiz O.Pilger Antonio
Modificado em 09/04/2019
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
byte VMP = 10;
byte VDP = 9;
byte VM2 = 8;
byte AM2 = 7;
byte VD2 = 6;
byte VM1 = 5;
byte AM1 = 4;
byte VD1 = 3;
const byte interruptPin = 2;
volatile byte state = LOW;
// A função de configuração é executada uma vez quando você pressiona reset ou liga a placa
void setup() {
lcd.begin (16, 2);
// inicializa os pinos digital VM, AM e VD como saída
pinMode(VM1, OUTPUT);
pinMode(AM1, OUTPUT);
pinMode(VD1, OUTPUT);
pinMode(VM2, OUTPUT);
pinMode(AM2, OUTPUT);
pinMode(VD2, OUTPUT);
pinMode(VMP, OUTPUT);
pinMode(VDP, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
//attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
//attachInterrupt(digitalPinToInterrupt(interruptPin), blink, RISING);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING); //Configurando a interrupção);
}
// A função de loop é repetidamente de forma infinita
void loop() {
// =========================================
// etapa 1 - 1=verde 2=vermelho
lcd.setCursor(0, 1);
lcd.print("1-VD 2-VM P-VM");
//sm 1
digitalWrite(VM1, LOW); // Desiga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, HIGH); // Liga o Verde 1
//sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
//
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
// tempo
delay(5000); // tempo de 10s
// =========================================
// etapa 2 - 1=amarelo 2=vermelho
lcd.setCursor(0, 1);
lcd.print("1-AM 2-VM P-VM");
// sm 1
digitalWrite(VM1, LOW); // Desiga o Vermelho 1
digitalWrite(AM1, HIGH); // Liga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
// tempo
delay(1000); // tempo de 1s
// =========================================
// etapa 3 - 1=vermelho 2=verde
lcd.setCursor(0, 1);
lcd.print("1-VM 2-VD P-VM");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm2
digitalWrite(VM2, LOW); // Desiga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, HIGH); // Liga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
delay(5000); // tempo de 10s
// =========================================
// etapa 4 - 1=vermelho 2=amarelo
lcd.setCursor(0, 1);
lcd.print("1-VM 2-AM P-VM");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm2
digitalWrite(VM2, LOW); // Desiga o Vermelho 2
digitalWrite(AM2, HIGH); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Liga o Verde 2
digitalWrite(VMP, HIGH); // Liga o Vermelho P
digitalWrite(VDP, LOW); // Desiga o Verde P
delay(1000); // tempo de 1s
if (state == HIGH) {
lcd.setCursor(0, 0);
lcd.print("Pedestre Passe");
lcd.setCursor(0, 1);
lcd.print("1-VM 2-VM P-VD");
//sm 1
digitalWrite(VM1, HIGH); // Liga o Vermelho 1
digitalWrite(AM1, LOW); // Desiga o Amarelo 1
digitalWrite(VD1, LOW); // Desiga o Verde 1
// sm 2
digitalWrite(VM2, HIGH); // Liga o Vermelho 2
digitalWrite(AM2, LOW); // Desiga o Amarelo 2
digitalWrite(VD2, LOW); // Desiga o Verde 2
digitalWrite(VMP, LOW); // Liga o Vermelho P
digitalWrite(VDP, HIGH); // Desiga o Verde P
delay(5000);
lcd.setCursor(0, 0);
lcd.print("Pedeste aguarde");
state = LOW;
}
}
void blink() {
state = HIGH;
}
quinta-feira, 4 de abril de 2019
Código Referncia para Interrupção do Arduino
//***************** Interrupções Aula 1 *********************************
/* Instituição: Escola Técnica Parobé
Autor: Professor Luis Antonio e Aransegui **Atenção: Programas sem boas práticas não serão aceitos***
Data 04/04/2019
Versão 0.1.1*/
//Parametrização e Otimização do Projeto
#define ledPin 13 // Define rótulo ledPin ao pino 13
#define interruptPin 2 // Define Rótulo interruptPin ao pino 2
// No Arduino UNO, somente os pinos 1 e 2 são recomendados
// Declaração de Funções(Planejar antes do Início)
void panico();// Declara o método,função ou subrotina para acionar o Led
//Declaração de Variáveis
volatile byte state = LOW; // Determina nível baixo para a variável state em memória temporá
// Configuração do do Projeto
void setup() {
pinMode(ledPin, OUTPUT);// define pino como saída
pinMode(interruptPin, INPUT_PULLUP);// Configura a interrupção para
attachInterrupt(digitalPinToInterrupt(interruptPin), panico, CHANGE);// Ativa a INT0 com os parâmetros (pino, função,novo estado)
}
// Acionamento do Led
void acionaLed() {
digitalWrite(ledPin, state);// Ativa o pino 13 em HIGH
}
//Funções em Loop,Obs.: Aqui devem ser colocadas as funções ou subrotinas que farão parte do programa
void loop() {
digitalWrite(ledPin,state);
//panico();// roda o método para acionar led
}
// Método chamado pela interrupção no pino 2
void panico() {
state = !state;// inverte o estado de state no pino 2
}
/* Instituição: Escola Técnica Parobé
Autor: Professor Luis Antonio e Aransegui **Atenção: Programas sem boas práticas não serão aceitos***
Data 04/04/2019
Versão 0.1.1*/
//Parametrização e Otimização do Projeto
#define ledPin 13 // Define rótulo ledPin ao pino 13
#define interruptPin 2 // Define Rótulo interruptPin ao pino 2
// No Arduino UNO, somente os pinos 1 e 2 são recomendados
// Declaração de Funções(Planejar antes do Início)
void panico();// Declara o método,função ou subrotina para acionar o Led
//Declaração de Variáveis
volatile byte state = LOW; // Determina nível baixo para a variável state em memória temporá
// Configuração do do Projeto
void setup() {
pinMode(ledPin, OUTPUT);// define pino como saída
pinMode(interruptPin, INPUT_PULLUP);// Configura a interrupção para
attachInterrupt(digitalPinToInterrupt(interruptPin), panico, CHANGE);// Ativa a INT0 com os parâmetros (pino, função,novo estado)
}
// Acionamento do Led
void acionaLed() {
digitalWrite(ledPin, state);// Ativa o pino 13 em HIGH
}
//Funções em Loop,Obs.: Aqui devem ser colocadas as funções ou subrotinas que farão parte do programa
void loop() {
digitalWrite(ledPin,state);
//panico();// roda o método para acionar led
}
// Método chamado pela interrupção no pino 2
void panico() {
state = !state;// inverte o estado de state no pino 2
}
segunda-feira, 25 de março de 2019
Sensores Motor DC com LCD
/*
Título: Controle de Sensores
Nome: Professor
Empresa: Escola Técnica Parobé
Data: 12/03/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 saida analógica com
objetivo de controlar a rotação de um motor CC.
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
Motor CC , baixo consumo
Incluir biblioteca I2C
criado em 11/03/2019
modificado em 22/03/2019
Referências em: Antonio
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
Fim do Cabeçalho*/
// Parte 2 - Inclusáo de bibliotecas
#include <Arduino.h> // Biblioteca padrão
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Parte 3 - Planejamento - Definição dos pinos e funções
#define sensorPino A0 // define rótulo ao pino
#define pinoSaida 13 //define ao rótulo ao pino 13
//const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Parte 4 Definição de Estruturas e Variáveis
void imprimeSerial (); // declara uma estrutura de impressão
void imprimeLcd();
int valorSensor = 0; // valor inicial do sensor
int valorSaida = 0; // valor inicial da saída
// Parte 5faz o setup do hardware
void setup(){
Serial.begin(9600);// inicializa a porta serial- reservar pinos 0 e 1
lcd.begin(16,2);
}
// Parte 6 - função principal- corpo do programa
void loop() {
valorSensor = analogRead(sensorPino);// lê entrada A) de o a 1023
valorSaida = map(valorSensor, 0, 1023, 0, 255);// converte entrada para saída - resolução
analogWrite(pinoSaida, valorSaida);//escreve na saída
imprimeSerial();
imprimeLcd();
}
// Rotina de impressão no monitor serial
void imprimeSerial () {
Serial.print("sensor = "); // imprime a palavra sensor
Serial.print(valorSensor);// imprime o valor da entrada
Serial.print("\t motor = ");// tabula /t e imprime a palavra saida
Serial.println(valorSaida);// imprime em nova linha o valor saida
delay(2);// aguarda 2 ms
}
void imprimeLcd() {
lcd.setCursor(0, 0);
lcd.print("sensor = " );
lcd.print(valorSensor);
lcd.setCursor(0, 1);
lcd.print ("motor =");
lcd.print(valorSaida);
}
Título: Controle de Sensores
Nome: Professor
Empresa: Escola Técnica Parobé
Data: 12/03/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 saida analógica com
objetivo de controlar a rotação de um motor CC.
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
Motor CC , baixo consumo
Incluir biblioteca I2C
criado em 11/03/2019
modificado em 22/03/2019
Referências em: Antonio
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
Fim do Cabeçalho*/
// Parte 2 - Inclusáo de bibliotecas
#include <Arduino.h> // Biblioteca padrão
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Parte 3 - Planejamento - Definição dos pinos e funções
#define sensorPino A0 // define rótulo ao pino
#define pinoSaida 13 //define ao rótulo ao pino 13
//const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Parte 4 Definição de Estruturas e Variáveis
void imprimeSerial (); // declara uma estrutura de impressão
void imprimeLcd();
int valorSensor = 0; // valor inicial do sensor
int valorSaida = 0; // valor inicial da saída
// Parte 5faz o setup do hardware
void setup(){
Serial.begin(9600);// inicializa a porta serial- reservar pinos 0 e 1
lcd.begin(16,2);
}
// Parte 6 - função principal- corpo do programa
void loop() {
valorSensor = analogRead(sensorPino);// lê entrada A) de o a 1023
valorSaida = map(valorSensor, 0, 1023, 0, 255);// converte entrada para saída - resolução
analogWrite(pinoSaida, valorSaida);//escreve na saída
imprimeSerial();
imprimeLcd();
}
// Rotina de impressão no monitor serial
void imprimeSerial () {
Serial.print("sensor = "); // imprime a palavra sensor
Serial.print(valorSensor);// imprime o valor da entrada
Serial.print("\t motor = ");// tabula /t e imprime a palavra saida
Serial.println(valorSaida);// imprime em nova linha o valor saida
delay(2);// aguarda 2 ms
}
void imprimeLcd() {
lcd.setCursor(0, 0);
lcd.print("sensor = " );
lcd.print(valorSensor);
lcd.setCursor(0, 1);
lcd.print ("motor =");
lcd.print(valorSaida);
}
sexta-feira, 8 de março de 2019
Assinar:
Postagens (Atom)