# data[].attributes.body
Lista 1 e2

# data[].attributes.body
Continuação

# data[].attributes.body
Lista 3

# data[].attributes.body
Continuação

# data[].attributes.headline
PADLET 1      Quais são os tipos de medições que podem ser feitas com um osciloscópio.

# data[].attributes.subject
PADLET 1      Quais são os tipos de medições que podem ser feitas com um osciloscópio.

# data[].attributes.body
Resposta:
O osciloscópio é um instrumento que permite observar numa tela plana uma diferença de potencial (ddp) em função do tempo ou em função de outa ddp.
Ele permite obter valores instantaneos de sinais elétricos rápidos como, por exemplo, valores de tensões, correntes, frequências e diferenças de fase de oscilações.

# data[].attributes.headline
PADLET 1       Mencione outras ferramentas de simulação decircuitos elétricos e eletrônicos que existem nainternet além das já descritas em aula.

# data[].attributes.subject
PADLET 1       Mencione outras ferramentas de simulação decircuitos elétricos e eletrônicos que existem nainternet além das já descritas em aula.

# data[].attributes.body
Resposta:
PartSim, Simulator.io, Scherne-it, Easy EDA, Circuits Cloud, Circuit Simulador Apple, etc.

link:https://www.micropress.com.br/2016/09/15/as-melhores-ferramentas-gratuitas-e-online-para-simular-e-projetar-circuitos-impressos-eletronicos-e-pcbs/

# data[].attributes.headline
Padlet 1     Mencionar as vantagens e desvantagens entre um multímetro analógico e digital.

# data[].attributes.subject
Padlet 1     Mencionar as vantagens e desvantagens entre um multímetro analógico e digital.

# data[].attributes.body
Cada modelo é indicado para determinada situação. Além da facilidade de uso, uma das principais vantagens do multímetro digital é a resolução, ou seja, o número de dígitos que aparecem no display. Isso não significa que o modelo digital seja mais preciso, mas apenas que têm leitura mais fácil, especialmente no caso de valores com mais de uma casa decimal.

O multímetro analógico é mais indicado para verificar variações de tensão, situação em que o valor da grandeza pode variar.  Na medição da queda de tensão de uma bateria de carro, por exemplo, o multímetro digital mostraria diferentes números no painel, enquanto com o analógico é possível verificar a amplitude da queda do ponteiro indicador

Resumindo: para grandezas fixas, o modelo digital é mais interessante, enquanto o analógico é mais indicado em situações em que a grandeza varia. O ideal, portanto, é trabalhar com os dois instrumentos, utilizando o que melhor se adequar às necessidades do momento.

Fonte:https://www.epi-tuiuti.com.br/blog/qual-o-melhor-multimetro-digital-ou-analogico/

# data[].attributes.body
1-Quais as principais diferenças ente um microcontroldor e um microprocessador?

Resposta:  Microcontrolador é um microprocessador, memória RAM, memória ROM, temporizadores, contadores, porta serial, conversores e portas de I/O em um só circuito integrado, ou seja, um microcomputador-de-um-só-chip.

Microprocessador é um circuito integrado responsável pelo processamento de dados, como uma  unidade lógica e aritmética, com diversos registradores especiais, mas precisa receber ordens externas e ter outros componentes externos para funcionar.

2-Tipos de memórias?

Resposta:  *Memória ROM (Read-Only Memory)  Alguns tipos de memória ROM:  PROM – Podem ser escritas com 13Núcleo de Estudo e Pesquisa em Processamento de Energia e Qualidade Prof. José Wilson Lima Nerys 13 Microprocessadores dispositivos especiais mas não podem mais ser apagadas.
EPROM – Podem ser apagadas pelo uso de radiação ultravioleta permitindo sua reutilização.  EEPROM – O seu contéudo pode ser modificado eletricamente.    Memória FLASH – São semelhantes às EEPROMs, porém mais rápidas e de menor custo. *Memória RAM  Alguns tipos de memória RAM: Memória Dinâmica (DRAM) – Baixa densidade, mas lenta. Capacitores com circuitos com “atualização de dados - refresh”.  Memória estática (SRAM) – Alta densidade. Rápida. Baseada em Flip-flops. 12Núcleo de Estudo e Pesquisa em Processamento de Energia e Qualidade Prof. José Wilson Lima Nerys 12 Microprocessadores Rápida. Baseada em Flip-flops.   Memória CACHE - Pequena quantidade de memória RAM estática (SRAM) usada para acelerar o acesso à memória principal (RAM dinâmica). Quando há necessidade de transferir dados da (para) memória dinâmica, estes são antes  transferidos para a memória cache.

3-Função de um compilador e de um bootloader?

Resposta: *Compilador (gerar código de máquina).
*Bootloader tem a função de acessar o disco do computador e carregar o sistema operacional na memória para assumir o controle do equipamento.

4-Princiais vantagens das arquiteturas Harvard e Von Neuman?

Resposta: *Harvard: Tem dupla ligação às memórias de dados e programas permitindo assim que o processador leia uma instrução ao mesmo tempo que faz um acesso à memória de dados e executa um programa em menor tempo do que um processador da arquitetura Von Neuman.  *Von Neuman:Tem possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo manipular tais programas.

5-O que é o Assembly e qual é a sua importância?

Resposta:  A linguagem Assembly nada mais é do que a linguagem pura entendida por um computador, diferente de nós o computador entende tudo por números e sequências de códigos, um conjunto de números faz com que ele realize determinada ação. Isso significa que uma simples letra pode ser um conjunto de números únicos que interpretado pelo computador se tornará a letra desejada no monitor. A importância é que existem programas de baixo nível que são melhores escritos em Assembly, pois esta permite um acesso a certas capacidades da máquina que as linguagens de auto-nível não permitem e que a linguagem Assembly é apenas uma forma mais natural de se expressar a linguagem nativa de uma máquina (i.e. linguagem de máquina).

6-Principal função da Unidade Lógica e Aritmética ou ALU?

Resposta:  Tem como função realizar as operações aritméticas como a adição, subtração, divisão e multiplicação, e também as operações lógicas relacionais como deslocamento, transferência, comparação, classificação, etc. Quando um programa solicita uma operação matemática ao computador, a Unidade de Controle entrega para a Unidade de Lógica e Aritmética os dados envolvidos e a operação a ser utilizada. A Unidade de Aritmética e Lógica executa o cálculo e imediatamente devolve os dados para a Unidade de Controle, a partir da qual os dados são então manipulados até chegar a um objetivo.

7-Qual a função principal dos registradores?

Resposta:  - Registradores visíveis aos usuários: Permite ao programador em linguagem de maquina ou assembler minimizar as referencias à memória principal otimizando o uso dos registradores.  - Registradores de controle e estado: usados pela unidade de controle para controlar a operação da CPU e por programas do sistema operacional como privilégio de controlar a execução de programas.

8- Qual é microcontrolador utilizado na placa Arduino UNO e qual é a arquitetura usada neste microcontrolador?

Resposta: ATmega328- Microcontrolador

# data[].attributes.body
1 - Quais pinos do Arduino UNO são usados para leitura de dados
analógicos? Quais são usados para leitura e escrita de dados
digitais?
*  Os pinos analógicos são os: A - 0, 1, 2, 3, 4, 5, na parte inferior do Arduino.
*  Os pino digitais são os os: D - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, na parte superior do Arduino.

2 - Quais são os pinos de Interrupção do Arduino UNO?
* Os pinos digitais 2 e 3 do Arduino

3- Explique o padrão de comunicação LORA, SPI e I2C?
* LORA - LoRa® é uma tecnologia de radio frequência que permite comunicação a longas distâncias com consumo mínimo de energia. Baseia-se em uma rede com topologia estrela, similar a uma rede de telefonia celular.

Os módulos enviam e recebem dados de Gateways específicos (similar as redes wifi, mas com alcance muito maior), que os encaminham via conexão IP para servidores locais ou remotos.

Suas principais aplicações são sistema de IoT (internet das coisas) como sensores e monitores remotos (pressão, luz, on-off, temperatura,, ...) , sobretudo aqueles operados a bateria, de mensagens curtas e em alguns casos em locais de difícil acesso.

º  LoRaWAN™ é o nome dado ao protocolo que define a arquitetura do sistema bem como os parâmetros de comunicação usando a tecnologia LoRa®.

O protocolo LoRaWAN™ implementa os detalhes de funcionamento, segurança, qualidade do serviço, ajustes de potência visando maximizar a duração da bateria dos módulos, e os tipos de aplicações tanto do lado do módulo quanto do servidor.

Em resumo:

LoRa®: Camada física da rede LoRaWAN™: Camada lógica da rede

* SPI - Serial Peripheral Interface ou SPI é um protocolo que permite a comunicação do microcontrolador com diversos outros componentes, formando uma rede. É uma especificação de interface de comunicação série síncrona usada para comunicação de curta distância, principalmente em sistemas embarcados. A interface foi desenvolvida pela Motorola e tornou-se um padrão de facto. Aplicações típicas incluem cartões SD e mostradores de cristal líquido.

* I²C - I²C (Inter-Integrated Circuit) é um protocolo de barramento(ou bus), ou seja, com os mesmo fios conectamos todos os dispositivos do nosso setup. Essa característica, barramento, é um dos grandes atrativos do I²C, pois reduzimos em muito a necessidade de pinos de conexão no Arduino, pois usaremos sempre os mesmo fios para a conexão, não importa se estamos utilizando 1 ou 127 dispositivos.

4 - Codifique um algoritmo no Arduino IDE para fazer piscar um LED
indeterminadamente com estado lógico “1” de 3 segundos e
estado lógico “0” de 2 segundos.

CÓDIGO
//LED'S
void setup()
{
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}

void loop()
{
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(3000);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(2000);
}

# data[].attributes.body
// piscando led´s com botoeiras
const int led = 8;
const int botao = 2;
const int botoeira = 3;
int estadoBotao = 0;
int estadoBotoeira = 0;

void setup() {
pinMode(8, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop() {
estadoBotao = digitalRead(botao);
estadoBotoeira = digitalRead(botoeira);

if (estadoBotao == HIGH) {
digitalWrite(8, HIGH);
}if (estadoBotoeira == HIGH) {
digitalWrite(2, LOW);
digitalWrite(8, LOW);
}
}

# data[].attributes.body
void setup() {
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);

}

void loop() {
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,HIGH);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,HIGH);
digitalWrite (7,LOW);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,HIGH);
digitalWrite (7,HIGH);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,HIGH);
digitalWrite (6,LOW);
digitalWrite (7,LOW);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,HIGH);
digitalWrite (6,LOW);
digitalWrite (7,HIGH);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,HIGH);
digitalWrite (6,HIGH);
digitalWrite (7,LOW);

delay (400);

digitalWrite (4,LOW);
digitalWrite (5,HIGH);
digitalWrite (6,HIGH);
digitalWrite (7,HIGH);

delay (400);

digitalWrite (4,HIGH);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);

delay (400);

digitalWrite (4,HIGH);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,HIGH);

delay (400);
}

# data[].attributes.body
parte 1

# data[].attributes.body
parte 2

# data[].attributes.body
parte 3

# data[].attributes.body
parte 1

# data[].attributes.body
parte 2

# data[].attributes.body
parte 3

# data[].attributes.body
parte 4

# data[].attributes.body
parte 5

# data[].attributes.body
Uso de multiplicação e divisão no teclado matricial

const uint8_t row_size = 4;

const uint8_t col_size = 4;

const uint8_t row_pin[row_size] = {4, 5, 6, 7};

const uint8_t col_pin[col_size] = {8, 9, 10, 11};

const char keys[row_size][col_size] = {

{ '1', '2', '3', 'A' },

{ '4', '5', '6', 'B' },

{ '7', '8', '9', 'C' },

{ '*', '0', '#', 'D' }

};

bool stable[row_size][col_size];

bool unstable[row_size][col_size];

uint32_t bounce_timer;

void scan() {

for (uint8_t e = 0; e < col_size; ++e) {

pinMode(col_pin[e], OUTPUT);

digitalWrite(col_pin[e], 0);

for (uint8_t r = 0; r < row_size; ++r) {

if (changed(r, e)) {

Serial.print(keys[r][e]);

Serial.print(" : ");

Serial.println(stable[r][e]);

}

}

pinMode(col_pin[e], INPUT);

}

}

bool changed(const uint8_t& row, const uint8_t& col) {

bool now = digitalRead(row_pin[row]);

if (unstable[row][col] != now) {

bounce_timer = millis();

unstable[row][col] = now;

}

else if (millis() - bounce_timer > 10) {

if (stable[row][col] != now) {

stable[row][col] = now;

return 1;

}

}

return 0;

}

void setup() {

Serial.begin(9600);

for (uint8_t r = 0; r < row_size; ++r) {

pinMode(row_pin[r], INPUT_PULLUP);

}

for (uint8_t c = 0; c < col_size; ++c) {

pinMode(col_pin, INPUT);

}

for (uint8_t c = 0; c < col_size; ++c) {

for (uint8_t r = 0; r < row_size; ++r) {

stable[r] = 1;

}

}

}

void loop() {

scan();

}

# data[].attributes.body
Parte 1

# data[].attributes.body
Parte 2

# data[].attributes.body
Parte 3

# data[].attributes.body
Parte 4

# data[].attributes.body
Parte 5

# data[].attributes.body
Parte 6

# data[].attributes.body
Parte 7

# data[].attributes.body
Parte 8

# data[].attributes.body
Criando Um Teclado Musical
MATERIAIS
- 8 botoeiras
- 1 buzzer
- 1 Arduino
- 7 LEDs
- Jumpers
- Uma matriz de contato

CÓDIGO

/*teclado musical*/

#define SPK 13
#define PLAYBACK_BTN 12
#define BUFFERSIZE 160
int keys[] = {2,3,4,5,6,7,8,9};
int tones[] = {2093,1976,1760,1568,1397,1319,1175,1047}; // melhor tom
//int tones[] = {1047,1175,1319,1397,1568,1760,1976,2093};
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
//int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

int length = sizeof keys/sizeof *keys;

// for recording
int count = 0;
int recorder[BUFFERSIZE];
unsigned long interval[BUFFERSIZE];
unsigned long pauseInterval[BUFFERSIZE];

void setup() {
  pinMode(SPK,OUTPUT);
  pinMode(PLAYBACK_BTN,INPUT);
  for(int i=0; i<length; i++){
  pinMode(keys[i],INPUT);
  }
}

void loop() {
  unsigned long startTime;
  static unsigned long pauseTime;
  static int playback_btn=0;
  int lastState = LOW;

  // prevent buffer overflow
  if(count>=BUFFERSIZE) count=0;

  // playback button
  if(digitalRead(PLAYBACK_BTN)==HIGH){
   playback();
   playback_btn=1;
  }

  // for each keyboard key
  for(int i=0; i<length; i++){
  //startTime = micros();
  startTime = millis();
  while(digitalRead(keys[i])==HIGH){
  if(playback_btn){
  // reset count after playback
  playback_btn = 0;
  count=0;
    }
  recorder[count]=i;
  tone(SPK,tones[i]);
  delay(200); // debounce
  lastState=HIGH;
    }
  if(lastState==HIGH){
  lastState=LOW;
  noTone(SPK);
  interval[count]=millis()-startTime;
  if(count)
  pauseInterval[count-1]=millis()-pauseTime;
  pauseTime=millis();
   count++;
    }
  }
}

void playback(){
  int index, key;
  for(int i=0; i<length; i++){
    pinMode(keys[i],OUTPUT);
  }
  for(int i=0; i<count; i++){
    index = recorder[i];
    key = keys[index];
    digitalWrite(key,HIGH);
    tone(SPK,tones[index]);
    delay(interval[i]);
    digitalWrite(key,LOW);
    noTone(SPK);
    delay(pauseInterval[i]);
  }
  for(int i=0; i<length; i++){
    pinMode(keys[i],INPUT);
  }
}