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
}

Interrupção Arduino

www.arduino.cc/reference/pt/language/functions/external-interrupts/attachinterrupt/


Portal de Silicio

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);


}