Arduino
Wednesday, August 12, 2026
Thursday, January 29, 2026
Combinando portas lógicas NAND chip TTL 74HC00

Implementemos este circuito no chip TTL 74HC00, mostrado na figura abaixo:


A tabela-verdade para a porta lógica é mostrada a seguir:
1. Construa a tabela-verdade acima para este circuito.
2. Implemente o exemplo acima e teste-o.
3. Construa um diagrama para o circuito.
4. Implemente este exemplo fisicamente.
5. Construa o circuito que implementa a porta lógica descrita abaixo. Construa o diagrama, simule e Tinkercad, construa a tabela-verdade e implemente fisicamente usando chips TTL. CIs CMOS são mais frágeis e suscetíveis a eletricidade estática e devem ser usados em uma configuração de circuitos diferente desta, como veremos mais tarde..

Simulando saídas analógicas com analogWrite
1. Modifique o projeto acima de modo que tenhamos dois LEDs funcionando de modos opostos.
2. Modifique o projeto acima de modo que tenhamos uma fileira de LEDs cujas luminosidades aumentam e diminuem ordenadamente.
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:
Medindo distâncias com som
#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
Medições básicas
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:
- Desenhe o diagrama correspondente ao circuito mostrado abaixo e explique o que acontece quando a chave é pressionada.
- Simule em Tinkercad o circuito mostrado abaixo. Construa o seu próprio circuito e determine os valores medidos nos multímetros.
- 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.
- 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.
- Refaça o iten 4 utilizando LEDs vermelhos, brancos, amarelos e azuis.
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.
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.
// 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);
}
}
Fazendo o led piscar
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.
Saturday, October 30, 2021
Exercício com PWM e analogWrite
Objetivo: fazer o LED acender e apagar gradualmente
A simulação foi feita em Tinkercad: https://www.tinkercad.com/things/56zfbwPzEDZ-usando-analogwrite/editel
Sktech:
int ledPin = 9; // LED connected to digital pin 9
void setup() {
}
void loop() {
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
}
Sunday, January 27, 2019
Portas AND e NAND com transístores
A porta AND pode ser implementada com transístores como mostra a Fig. 1
Saturday, January 26, 2019
Porta NOT com transístor.
1. Implementação com chave mecânica
Construiremos incialmente um circuito simples com chaveamento mecânico. Utilizaremos as convenções mostradas na Fig. 2.
O diagrama do circuito a ser montado é mostrado na Fig. 3. Quando a chave está aberta (A = 0), o LED permanece aceso (ON <--> B = 1). Quando a chave é fechada (A = 1) o LED apaga (OFF <--> B = 0).
Este circuito pode ser simulado em Tinkercad do modo mostrado na Fig. 4
2. Porta NOT de chaveamento eletrônico de transistor NPN
Implementaremos o circuito mostrado na Fig. 5. Quando a chave fecha (A = 1) a corrente base-emissor faz com que o transistor conduza corrente entre o coletor e o emissor e o LED apaga (B = 0). Quando a chave é aberta (A = 0) o transistor bloqueia toda a corrente por ele e ela passa a circular pelo LED que acendo (B = 1).
A construção de uma simulação do circuito da Fig. 5 em Tinkercad é mostrada na Fig. 6.

- Porta lógica NOT com transistor (vídeo: Laboratório de Eletrônica - YouTube)
- Transistor bipolar como chave (texto: Fundação Universidade Federal de Rondônia)
- Transistores bipolares (texto: UFSC)
- Análogo mecânico de um transistor.
Monday, March 6, 2017
18. Medindo a distância e velocidade do som com saída no monitor
int echoPin=11; //Sensor Echo pin connected to Arduino pin 11
float pingTime;
float targetDistance;
int speed= 345; //sound speed in m/s at 26C at see level
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
pingTime = pulseIn(echoPin, HIGH); //pingTime is presented in microceconds
targetDistance = speed*pingTime/1000000/2;
Serial.print("the distance is: ");
Serial.print(targetDistance);
Serial.println(" m");
delay(1000);
}
Para medir a velocidade do som, partimos de uma distância bem determinada (digamos, 20cm) e modificamos o código acima do seguinte modo:
int trigPin=13; //Sensor Trip pin connected to Arduino pin 13
int echoPin=11; //Sensor Echo pin connected to Arduino pin 11
float pingTime;
float speedOfSound;
float targetDistance=0.2; //Distance to Target in m
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
pingTime = pulseIn(echoPin, HIGH); //pingTime is presented in microceconds
speedOfSound = (targetDistance*2)/pingTime*1000000;
Serial.print("The Speed of Sound is: ");
Serial.print(speedOfSound);
Serial.println(" m/s");
delay(1000);
}
Saturday, March 4, 2017
17. Semáforo (4)
Baseado em:
Simon Monk, 30 Arduino Projects for the Evil Genius, McGraw-Hill Education TAB; 2nd ed., 2013.
int redPin = 4;
int yellowPin = 3;
int greenPin = 2;
int buttonPin = 5;
int state = 0;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(buttonPin) == LOW)
{
if (state == 0)
{
setLights(HIGH, LOW, LOW);
state = 1;
delay(3000);
}
else if (state == 1)
{
setLights(HIGH, HIGH, LOW);
state = 2;
delay(2000);
}
else if (state == 2)
{
setLights(LOW, LOW, HIGH);
state = 3;
delay(3000);
}
else if (state == 3)
{
setLights(LOW, HIGH, LOW);
state = 0;
delay(2000);
}
delay(1000);
}
}
void setLights(int red, int yellow, int green)
{
digitalWrite(redPin, red);
digitalWrite(yellowPin, yellow);
digitalWrite(greenPin, green);
}
Monday, February 6, 2017
16. Entrada analógica analogRead e saída pseudoanalógica com analogWrite
analogWrite() para controlar a intensidade de um led com
um potenciômetro.
Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos
Pontificia Universidad Católica de Chile
Simulação em Autodesk Circuits
int AnInput = 0;
int ledPin = 11; //Este pin tem PWM
int leitura = 0;
int aux = 0;
void setup() {
Serial.begin(9600);
delay(1000);
pinMode(11,OUTPUT);
}
void loop() {
leitura = analogRead(AnInput);
//Mapeia o valor ADC entre 0 e 255
aux = map(leitura, 0, 1023, 0, 255);
analogWrite(ledPin,aux);
}
15. analogRead - Potenciômetro
Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos
Pontificia Universidad Católica de Chile
Implementação em Autodesk Circuits
int btn1 = 2;
int AnInput = 0;
int leitura = 0;
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
lectura = analogRead(AnInput);
if (digitalRead(btn1) == LOW) {
//Imprime o valor digital
Serial.println(leitura);
}
else {
//Imprime o equivalente en voltagem
Serial.println(leitura * 0.0049);
}
delay(1000);
}
Sunday, February 5, 2017
14. ISR
Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos
Pontificia Universidad Católica de Chile
Implementação em Autodesk Circuits
int Btn0 = 2; // Pin ligado a int.0
int Btn1 = 3; // Pin ligado a int.1
int pinLed = 11;
void setup() {
pinMode(Btn0, INPUT);
pinMode(Btn1, INPUT);
pinMode(pinLed, OUTPUT);
attachInterrupt(0,apaga_led, RISING);
attachInterrupt(1,acende_led, RISING);
Serial.begin(9600);
delay(2000);
}
void loop() {
delay(2500);
Serial.print("Passaram ");
delay(2500);
Serial.println("5 segundos");
}
/* A função de interrupção muda o presente estado do led */
void apaga_led() {
digitalWrite(pinLed, 0);
}
void acende_led() {
digitalWrite(pinLed, 1);
}
13. attachInterrupt
Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos
Pontificia Universidad Católica de Chile
Notamos que a simulação não funcionou no Autodesk Circuits. Implemente e teste diretamente este código no seu Arduino Uno.
//Definimos o pino correspondente ao led
int ledPin = 11;
//Definimos o pino correpondente à interrupção 0
int intPin = 2;
void setup()
{
//Configuramos os pinos como saída
pinMode(2,OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(intPin, HIGH);
//Configuramos a interrupcao 0 para ativar-se quando temos
//queda de tensão, executando a funcao acende_led
attachInterrupt(0, acende_led,FALLING);
}
void loop()
{
digitalWrite(ledPin, LOW);
delay(300);
digitalWrite(intPin, LOW);
/* Neste momento se ativa o alerta e se
executa a funcao acende_led */
delay(500);
}
void acende_led(){
digitalWrite(ledPin, HIGH);
digitalWrite(intPin, HIGH);
}

























