Wednesday, January 28, 2026

Porta lógica NOR


A porta lógica NOR pode ser descrita pela tabela-verdade:



Usando a notação booleana usual,










Faremos um teste com o IC 74HC02, descrito abaixo:




Faremos um teste das portas lógicas 1Y,  1A e 1B usando o seguinte diagrama:


O circuito é simulado em Tinkercad:





Exercício:

1. Use Tinkercad para desenhar e simular o teste da porta lógica.
2. Utilize o IC  74HC02 ou equivalente para construir este circuito físicamente.





Medindo distâncias com som

Para que o sistema seja autônomo, uma bateria de 9V pode ser usada para alimentar o arduíno e um LCD (1602 16x2 Character LCD Display Module HD44780 Controller Blue Arduino) é usado como mostrador. 

Veja as Aulas 19 e 20 deste curso: http://www.toptechboy.com/arduino-lessons/




#include <LiquidCrystal.h> 

// initialize the library with the numbers of the interface pins
LiquidCrystal LCD(7,8,9,10,11,12);
int trigPin=13; //Sensor Trip pin connected to Arduino pin 13
int echoPin=3;  //Sensor Echo pin connected to Arduino pin 11
float pingTime;
float targetDistance;
int speed= 345; //speed of sound at 26C, 1atm, in m/s

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly: 
  
  digitalWrite(trigPin, LOW); //Set trigger pin low
  delayMicroseconds(2000); //Let signal settle
  digitalWrite(trigPin, HIGH); //Set trigPin high
  delayMicroseconds(10); //Delay in high state
  digitalWrite(trigPin, LOW); //ping has now been sent
  delayMicroseconds(10); //Delay in high state

     pingTime = pulseIn(echoPin, HIGH);  //pingTime is presented in microceconds
  
  targetDistance = speed*pingTime/1000000/2; 

 LCD.setCursor(0,1);  //Set cursor to first column of second row
  LCD.print("                "); //Print blanks to clear the row
  LCD.setCursor(0,1);   //Set Cursor again to first column of second row
  LCD.print(targetDistance); //Print measured distance
  LCD.print(" m");  //Print your units.
  delay(250); //pause to let things settle
}

Controlando dois LEDs com um Botão

Objetivo: Temos dois LEDs. O primeiro deve acender/apagar com um toque longo (25 ms) do botão e o segundo, independentemente, deve acender/apagar com um toque curto do botão. 

Uma descrição está feita em https://www.instructables.com/Arduino-Dual-Function-Button-Long-PressShort-Press/(com um erro óbvio na ligação dos fios).




Simulação em Tinkercad: https://www.tinkercad.com/things/1pGJPK1KDiN-twoledsonebutton
 
Sketch: 

int LED1 = 12;
int LED2 = 13;
int button = 3;

boolean LED1State = false;
boolean LED2State = false;

long buttonTimer = 0;
long longPressTime = 250;

boolean buttonActive = false;
boolean longPressActive = false;

void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
if (digitalRead(button) == HIGH) {
if (buttonActive == false) {
buttonActive = true;
buttonTimer = millis();
}
if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {
longPressActive = true;
LED1State = !LED1State;
digitalWrite(LED1, LED1State);
}
} else {
if (buttonActive == true) {
if (longPressActive == true) {
longPressActive = false;
} else {
LED2State = !LED2State;
digitalWrite(LED2, LED2State);
}
buttonActive = false;
}
}
}

Exercício: Simule e explique o funcionamento deste circuito. Construa uma implementação física.

Medições básicas

Atividades:
Um LED, quando aparece num circuito ativo, apresenta uma tensão o oposta à tensão aplicada. No caso de um LED verde esta tensão é tipicamente de 2 V. Para LEDs vermelhos, amarelos e laranja, típicamente 1.5 V e 3 V para LEDs azuis. A resistência e a tensão no circuito devem ser tais que a corrente no LED não exceda 20 mA. Nesta atividade você deverá determinar esta tensão de oposição experimentalmente. Realize as seguintes atividades:

  1. Desenhe o diagrama correspondente ao circuito mostrado abaixo e explique o que acontece quando a chave é pressionada. 
  2. Simule em Tinkercad o circuito mostrado abaixo. Construa o seu próprio circuito e determine os valores medidos nos multímetros. 
  3. Construa este circuito fisicamente e meça a resitência R, a tensão Vf da fonte, Vr no resistor VL no LED verde e a corrente no circuito.  Verifique se VL+Vr=Vf e discuta as razões para uma possível discrepância.  Compare os resultados medidos com aqueles da simulação. 
  4. Meça VL para ao menos 20 LEDs verdes e calcule a média e a dispersão da tensão no LED. Construa a distribuição t.
  5. Refaça o iten 4 utilizando LEDs vermelhos, brancos, amarelos e azuis.
Nota: Se necessário, use uma bateria de 9 V e use o resistor apropriado para que a corrente no LED seja menor do que 20 mA. 


Tensão sobre o LED

 Nesta atividade mediremos a tensão sobre um  led vermelho e a corrente no circuito. Com isso, determinaremos sua resistência. Usemos o led vermelho. O circuito é o seguinte. 

O circuito simulado é mostrado abaixo. 


Calcule a corrente elétrica e confira o resultado do amperímetro da fonte. 

Programando o acendimento do LED

Nesta atividade, usando a placa Uno, ilustraremos o uso de funções em Sketch, fazendo ficar acesso e apagado 6 vezes, em intervalos de 0.4 s. O processo para por 5 s e depois se repete. O esquema é mostrado abaixo.










O programa é mostrado a seguir: 

// Programa led2
const int ledPin = 12;
const int delayPeriod = 400;
// Led pisca 10 vezes
// Pausa por 5 segundos
// Repete

void setup() {
    pinMode(ledPin, OUTPUT);
}

void loop() {
    flash(6, delayPeriod);
    delay(5000);
}

void flash(int numFlashes, int d) {
    for (int i = 1; i<=numFlashes; i++){
    digitalWrite(ledPin, HIGH);
    delay(d);
    digitalWrite(ledPin, LOW);
    delay(d);

    }
}

Note que a função flash, com dois argumentos: número de flashes e delay, definida no final do script, é chamada dentro do loop. O circuito simulado em Tinkercad é mostrado abaixo: 


Fazendo o led piscar

A primeira atividade com a placa Arduino Uno consiste em fazer o download da interface, conexão da placa com o computador, composição de um programa que faz um led piscar. É usado aqui um resistor de 100 ohms para reduzir a tensão sobre o led. O terminal longo (+) do led é conectado ao terminal 10 da placa. O terminal curto (-) é conectado, via resistor a um pino terra da placa. Veja este vídeo descritivo.

Aqui está o programa:

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

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(10, HIGH);
  delay(300);
  digitalWrite(10, LOW);
  delay(1000);
}

Ao contrário do que foi feito no vídeo, usei um breadboard como mostrado abaixo.


Veja como funciona o breadboard na figura abaixo: 


Este é o circuito simulado em Tinkercad: 

Exercícios

1. Modifique os intervalos de tempo nos quais o led fica aceso e apagado. 
2. Desenhe o diagrama do circuito.
3. Registre-se no site do Tinkercad e simule este projeto antes de implementá-lo na prática. 
4. Determine a tensão sobre o led e sobre o resistor, sabendo que o terminal 10 fornece 5V. 
5. Use um multímetro para verificar as diferenças entre medidas e cálculos do item anterior.