Escolar Documentos
Profissional Documentos
Cultura Documentos
&
ESP 8266
Práticas e
Componentes
www.saladeeletronica.com
Sumário
INTRODUÇÃO. ....................................................................................................... 3
Link: https://www.arduino.cc/en/main/software
Caso não apareça a porta para selecionar, mesmo com a placa Arduino
conectada, você pode ter adquirido um Arduino com controlador USB CH340;
Arduino com controlador USB CH340
Caso sua placa Arduino tenha o controlador USB CH340, será necessário
instalar um driver para que ela seja reconhecida.
Caso sua placa Arduino seja WAVGAT, alguns arquivos devem ser copiados
para o ARDUINO IDE.
Nota: Para que o LED não seja submetido a uma corrente elétrica elevada é
necessário a utilização de um resistor. LEDs comuns normalmente conduzem em
torno de 20 mA.
Chave táctil.
Figura 1 Figura 2
Figura 3 Figura 4
Um das práticas mais simples para quem está iniciando no uso do Arduino é
utilizar os códigos dos exemplos do ARDUINO IDE, um destes exemplos é o
BLINK (piscar). Este programa fará com que um LED pisque de forma
intermitente.
A placa Arduino UNO normalmente vem com um LED ligado ao pino 13, assim
não é necessário montar um circuito.
Se não estiver trabalhando com uma placa ARDUINO UNO ou quiser montar o
circuito para praticar, siga as instruções.
- LED;
- Protobord;
- Resistor de 220 ohms;
- Jumpers Macho & Macho;
- Arduino;
Ao abrir o ARDUINO IDE verá algumas abas na parte superior da tela, clique em
Arquivos, Exemplos, 01.Basics e Blink.
/*
Blink
Acende um LED por um segundo, depois desliga por um segundo, repetidamente.
A maioria dos Arduinos tem um LED on-board que você pode controlar. UNO, MEGA e
ZERO está ligado ao pino digital 13, no MKR1000 no pino 6. LED_BUILTIN está definido
para o pino de LED correto independente de qual placa é usada.
*/
// a função de configuração é executada uma vez quando você pressiona reset ou ligar a
placa
void setup() {
// inicialize o pino digital LED_BUILTIN como uma saída.
pinMode(LED_BUILTIN, OUTPUT);
}
//
a função loop é executada repetidamente para sempre
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Liga o LED
delay(1000); // aguarda um segundo
digitalWrite(LED_BUILTIN, LOW); // Desliga o LED
delay(1000); // aguarda um segundo
}
Nota: O termo “LED_BUILTIN” pode ser substituído pelo número do pino que se
quer acionar.
2 Sensor DHT11 de umidade e temperatura com Arduino
Módulo DHT11:
Montagem:
Arduino DHT11
Pino 5V VCC
Pino GND GND
Pino A1 DATA
Código:
#include <dht.h>
#define dht_dpin A1
dht DHT;
voidsetup()
{
Serial.begin(9600);
delay(1000);
}
voidloop()
{
DHT.read11(dht_dpin);
Serial.print("Umidade = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("Temperatura = ");
Serial.print(DHT.temperature);
Serial.println("Celsius ");
delay(2000);
}
Link: www.saladeeletronica.com
3 Foto sensor, LDR, acionando LED
Componentes necessários.
Para fazer a prática vamos utilizar os componentes abaixo:
1 Arduino Uno;
1 LDR;
jumpers M&M;
1 LED
1 Protobord
1 Resistor de 220 ohms
1 Resistor de 10.000 ohms ou 10K ohms
O pino digital 10 vai acionar o LED, a corrente é limitada por um resistor de 220
ohms, o pino A5 está ligado entre o LDR e o resistor de 10K ohms.
Programando o Arduino:
O programa abaixo faz com que o Arduino leia as informações de resistência do
sensor e quando a luz parar de incidir sobre ele a resistência se altera e um LED
acenda.
Código:
void setup()
{
pinMode(portaLed, OUTPUT);
}
void loop()
{
int estado = analogRead(portaLDR);
if (estado > 500)
{
digitalWrite(portaLed, HIGH);
}
else
{
digitalWrite(portaLed, LOW);
}
}
Componentes necessários:
1 Arduino Uno;
jumpers M&M;
jumpers M&F;
1 TCRT5000;
1 LED,
2 Resistor de 220 ohms,
1 Resistor de 330 ohms,
1 Resistor de 1000 ohms,
Programando o Arduino:
O código abaixo fará com que qualquer objeto que se aproxime do sensor seja
reconhecido e LED.
Código:
Lista de componentes:
1 - Arduino Uno;
1 - Controle remoto IR para teste;
1 - Receptor IR;
1 - Protobord;
Alguns jumpers;
Nota: O circuito para aplicação é o circuito a ser montado sugerido pelo fabricante.
KY-022
Programando o Arduino:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Inicia o receptor
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Recebe o próximo valor
}
}
Abra o monitor serial, na lupa, para ver os códigos emitidos pelo controle remoto.
Neste artigo vamos aprender a utilizar a chave táctil para acionar um LED.
Vai funcionar assim, quando a chave táctil for acionada o LED acenderá e
apagará quando a chave táctil for acionada novamente.
Componentes necessários:
1 Arduino Uno;
1 Chave táctil;
jumpers M&M;
1 LED
1 Protobord
2 Resistor de 220 ohms
O pino digital 2 vai acionar o LED, o pino digital 12 vai receber o sinal quando a
chave táctil for acionada. O resistor de 220 ohms junto ao LED serve para limitar a
corrente. A tensão, no resistor de 220 ohms junto a chave, muda de valor, de 0V à
5V, conforme o acionamento da chave.
Programando o Arduino:
O programa abaixo faz com que o Arduino leia as informações recebidas no
pino digital 2, quando a chave táctil for acionada o sinal mudará de 0V(Low) para
5V (High), essa informação fará com que o LED acenda, para um primeiro pulso
na chave, e apague para um segundo pulso na chave.
Código:
Você pode trocar o LED por um Relé, e assim pode acionar outros
componentes.
7 Medindo resistência com o Arduino
Componentes necessários:
1 Arduino Uno;
jumpers M&M;
1 Protobord
1 Resistor de 1000 ohms
Vários resistores para testar.
Montagem:
No espaço do R. teste deve ser inserido o resistor que se quer testar. O pino
A0 está ligado entre o resistor de 1000 ohms e o R. teste.
Programando o Arduino:
O programa abaixo faz com que o Arduino leia as informações recebidas no
pino A0 e converta em um valor de resistência. O valor medido é mostrado no
monitor serial do Arduino IDE.
Código:
void setup() {
Serial.begin(9600);
}
void loop() {
float tensao = (float)analogRead(A0)*5/1023;
Serial.println(R1);
delay(1000);
}
Após carregar o código no arduino, clique na lupa do Arduino IDE. Isto irá abrir
a tela do monitor serial e lá será mostrado o valor do R. teste.
Nota: Você pode utilizar controles que já tem, como o da TV. Mas utilize controles
de infravermelho.
Lista de componentes:
1 - Arduino Uno;
1 - Controle remoto;
1 - Receptor IR;
1 - Protobord;
3 - LED's;
3 - Resistores de 220 ohms;
Alguns jumpers;
Link: https://github.com/z3t0/Arduino-IRremote
Para ver como inserir uma nova biblioteca no Arduino IDE, acesse o link abaixo:
Link: https://www.arduino.cc/en/Guide/Libraries
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Inicia o receptor
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Recebe o próximo valor
}
}
Abra o monitor serial e veja os códigos recebidos do controle:
#include <IRremote.h>
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600); //
irrecv.enableIRIn(); //
pinMode(output1, OUTPUT);
pinMode(output2, OUTPUT);
pinMode(output3, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value;
switch(value) {
case code1:
if(itsONled[1] == 1) { //
digitalWrite(output1, LOW); //
itsONled[1] = 0; //
} else { //
digitalWrite(output1, HIGH); //
itsONled[1] = 1; //
}
break;
case code2:
if(itsONled[2] == 1) {
digitalWrite(output2, LOW);
itsONled[2] = 0;
} else {
digitalWrite(output2, HIGH);
itsONled[2] = 1;
}
break;
case code3:
if(itsONled[3] == 1) {
digitalWrite(output3, LOW);
itsONled[3] = 0;
} else {
digitalWrite(output3, HIGH);
itsONled[3] = 1;
}
break;
}
Serial.println(value); // Você pode comentar esta linha
irrecv.resume(); // Receber o próximo valor
}
}
Você pode alterar estes códigos de acordo com o código recebido no Monitor
serial a partir do primeiro código executado no arduino IDE.
9 Controlando LED RGB com Arduino
Lista de componentes:
1 - Arduino Uno;
1 - LED RGB de 4 terminais
3 - Resistores de 220 ohms
1 - Potenciômetro de 2 K ohms
1 - Protobord;
Alguns jumpers;
LED RGB com 4 terminais, anodo comum. Possui 4 terminais um para a cor
vermelha, outro para a cor verde, outro para a cor azul e o quarto terminal é
comum. Pode se dizer que são 3 LEDs em um, o consumo é de aproximadamente
20 mA para cada terminal.
Potenciômetro, tem a característica de variar a resistência elétrica conforme a
ação em seu eixo, no nosso caso, conforme se gira o eixo. Veja que os terminais
A e B, da figura abaixo, são fixos e tem uma resistência fixa. O terminal W está
ligado a um cursos que está em contato com a trilha e conforme desliza nesta
trilha altera a resistência entre o terminal central e os laterais.
O código abaixo fará com que ao girar o potenciômetro, as tensões, nos pinos
3, 5 e 6 mudem, assim com tensões diferentes mos terminais do LED ele mudará
de cor.
Código.
int pinPotenciometer = 2;
int pinRed = 3;
int pinBlue = 5;
int pinGreen = 6;
float h; // Hue range
int h_int; // Hue color
int r = 0, g = 0, b = 0; // Default RGB values
if ( var_i == 0 ) {
var_r = V ;
var_g = var_3 ;
var_b = var_1 ;
}
else if ( var_i == 1 ) {
var_r = var_2 ;
var_g = V ;
var_b = var_1 ;
}
else if ( var_i == 2 ) {
var_r = var_1 ;
var_g = V ;
var_b = var_3 ;
}
else if ( var_i == 3 ) {
var_r = var_1 ;
var_g = var_2 ;
var_b = V ;
}
else if ( var_i == 4 ) {
var_r = var_3 ;
var_g = var_1 ;
var_b = V ;
}
else {
var_r = V ;
var_g = var_1 ;
var_b = var_2 ;
}
Lista de componentes:
1 - Arduino Uno;
1 - LED;
2 - Resistores de 220 ohms
1 - Protobord;
1 - LDR;
Alguns jumpers;
Nota: A luz do laser pede ser perigosa se emitida diretamente aos olhos.
O pino A0 do Arduino irá receber 5V quando a luz recebida pelo LDR do laser
for interrompida, fazendo com que os pinos digitais 6 e 7 acionem o LED e o
Buzzer ativo.
Programando o Arduino:
O código abaixo fará com que o buzzer ativo e o LED sejam acionados quando
a luz do laser for interrompida.
Código.
int sensorPin=A0;
int sensorValue=0;
void setup(){
pinMode(sensorPin,INPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
digitalWrite(7,HIGH);
digitalWrite(6,LOW);
}
void loop(){
sensorValue=analogRead(sensorPin);
if(sensorValue<=1000)
{
digitalWrite(7,HIGH);
} else
{
digitalWrite(7,LOW);
}
sensorValue=1000;
}
Após carregar o código no Arduino, você pode interromper a luz que o laser
emite sobre o LDR, o Buzzer e o LED serão acionados.
11 Dado eletrônico
Neste projeto vamos aprender a fazer um dado eletrônico. Com ele os jogos
que utilizam dado vão ficar mais tecnológicos. Ao acionar a chave táctil o display
irá mostrar um número aleatório de 1 à 6.
Lista de componentes:
1 - Arduino Uno;
1 - Chave táctil;
2 - Resistores de 220 ohms;
1 - Protobord;
1 - Display de 7 segmentos;
Alguns jumpers;
O pino digital 5 do Arduino irá receber 5V quando a chave táctil for acionada,
isto dará inicio ao sorteio de um número de 1 à 6 que será mostrado no display.
O display será ligado aos pinos digitais de 6 à 12.
Programando o Arduino:
O código abaixo fará com que, ao acionar a chave táctil ocorrerá um sorteio
aleatório de um número de 1 à 6 e ele será mostrado no display.
Código.
int segE = 7;
int segD = 8;
int segC = 9;
int segB = 12;
int segA = 6;
int segF = 11;
int segG = 10;
int pinoTilt = 5;
void setup()
{
pinMode(segE, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(pinoTilt, INPUT);
}
void loop()
{
if(digitalRead(pinoTilt) == HIGH)
{
jogaDado();
}
}
void jogaDado()
{
for(int i=0; i<25; i++)
{
switch(random(1, 6)) // Escolhe um numero aleatorio entre 1 e 6
{
case 1 :
acende1();
break;
case 2 :
acende2();
break;
case 3 :
acende3();
break;
case 4 :
acende4();
break;
case 5 :
acende5();
break;
case 6 :
acende6();
break;
}
delay(4*i); // O delay aumenta conforme passam mais numeros
}
}
void acende1()
{
digitalWrite(segE,LOW);
digitalWrite(segD,LOW);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,LOW);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
}
void acende2()
{
digitalWrite(segE,HIGH);
digitalWrite(segD,HIGH);
digitalWrite(segC,LOW);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
digitalWrite(segG,HIGH);
}
void acende3()
{
digitalWrite(segE,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
digitalWrite(segG,HIGH);
}
void acende4()
{
digitalWrite(segE,LOW);
digitalWrite(segD,LOW);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,LOW);
digitalWrite(segF,HIGH);
digitalWrite(segG,HIGH);
}
void acende5()
{
digitalWrite(segE,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,LOW);
digitalWrite(segA,HIGH);
digitalWrite(segF,HIGH);
digitalWrite(segG,HIGH);
}
void acende6()
{
digitalWrite(segE,HIGH);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,LOW);
digitalWrite(segA,HIGH);
digitalWrite(segF,HIGH);
digitalWrite(segG,HIGH);
}
Após carregar o código no Arduino, você pode apertar a chave táctil várias
vezes e ver os números que são sorteados.
12 Semáforo
Lista de componentes:
1 - Arduino Uno;
2 - LED verde;
2 - LED vermelho;
1 - LED laranja;
5 - Resistores de 220 ohms;
1 - Protobord;
Alguns jumpers;
Arduino LED
Pino 5 Vermelho pedestre
Pino 6 Verde pedestre
Pino 7 Verde carro
Pino 8 Vermelho carro
Pino 9 Laranja Carro
Programando o Arduino:
Código.
Semáforo
int vda = 7;
int vma = 8;
int lra = 9;
int vdp = 6;
int vmp = 5;
void setup()
{
pinMode(vda, OUTPUT);
pinMode(vma, OUTPUT);
pinMode(lra, OUTPUT);
pinMode(vdp, OUTPUT);
pinMode(vmp, OUTPUT);
}
void loop()
{
carro_l();
delay(3000);
alerta();
delay(1000);
pedestre_l();
delay(3000);
void carro_l()
{
digitalWrite(vda, HIGH);
digitalWrite(vma, LOW);
digitalWrite(lra, LOW);
digitalWrite(vdp, LOW);
digitalWrite(vmp, HIGH);
}
void alerta()
{
digitalWrite(vda, LOW);
digitalWrite(vma, LOW);
digitalWrite(lra, HIGH);
digitalWrite(vdp, LOW);
digitalWrite(vmp, HIGH);
}
void pedestre_l()
{
digitalWrite(vda, LOW);
digitalWrite(vma, HIGH);
digitalWrite(lra, LOW);
digitalWrite(vdp, HIGH);
digitalWrite(vmp, LOW);
}
Neste projeto vamos aprender a fazer um piano que após tocar uma música ele
repete o que foi tocado.
Lista de componentes:
1 - Arduino Uno;
8 - chaves táctil;
1 - Protobord;
1 - Buzzer;
Alguns jumpers;
Arduino Componente
Pino 2 Chave repete
Pino 3 Chave tom
Pino 4 Chave tom
Pino 5 Chave tom
Pino 6 Chave tom
Pino 7 Chave tom
Pino 8 Chave tom
Pino 9 Chave tom
Pino 10 Buzzer
Programando o Arduino:
O código abaixo fará com que, quando as chaves de tom forem acionadas o
buzzer emitirá o som correspondente e ao acionar a chave repete, a sequência de
tons tocados se repetirá.
Código.
int val=0;
int buzzer = 10;
unsigned long on_time=0;
unsigned long off_time=0;
unsigned long button_ontime[20];
unsigned long button_offtime[20];
int button_seq[20];
int button1=3;
int button2=4;
int button3=5;
int button4=6;
int button5=7;
int button6=8;
int button7=9;
int button8=10;
int frequency[] = {262, 294, 330, 349, 392, 440, 494};
int buttonPin = 2;
int previousState = HIGH;
unsigned int previousPress;
volatile int buttonFlag;
int buttonDebounce = 20;
int path=1;
int i=0;
int led=13;
void playback (void);
void setup()
{
Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(led,OUTPUT);
///////////////
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
pinMode(button3,INPUT_PULLUP);
pinMode(button4,INPUT_PULLUP);
pinMode(button5,INPUT_PULLUP);
pinMode(button6,INPUT_PULLUP);
pinMode(button7,INPUT_PULLUP);
pinMode(button8,INPUT_PULLUP);
pinMode(buttonPin,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), button_ISR, CHANGE);
analogWrite(buzzer,0);
digitalWrite(led,HIGH);
}
void loop()
{
if(path==0)
{
Serial.println("playback");
playback();
}
if((millis() - previousPress) > buttonDebounce && buttonFlag)
{
previousPress = millis();
if(digitalRead(buttonPin) == LOW && previousState == HIGH)
{
path =! path;
previousState = LOW;
}
if(digitalRead(button1)==LOW)
{
analogWrite(buzzer,frequency[0]);
on_time=millis();
if(i>0)
{
button_offtime[i-1]=on_time-off_time;
}
while(digitalRead(button1)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=0;
i++;
Serial.println("button 1 stored");
}
}
else if(digitalRead(button2)==LOW)
{
analogWrite(buzzer,frequency[1]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button2)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=1;
i++;
Serial.println("button 2 stored");
}
}
else if(digitalRead(button3)==LOW)
{
analogWrite(buzzer,frequency[2]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button3)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=2;
i++;
Serial.println("button 3 stored");
}
}
else if(digitalRead(button4)==LOW)
{
analogWrite(buzzer,frequency[3]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button4)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=3;
i++;
Serial.println("button 4 stored");
}
}
else if(digitalRead(button5)==LOW)
{
analogWrite(buzzer,frequency[4]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button5)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=4;
i++;
Serial.println("button 5 stored");
}
}
else if(digitalRead(button6)==LOW)
{
analogWrite(buzzer,frequency[5]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button6)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=5;
i++;
Serial.println("button 6 stored");
}
}
else if(digitalRead(button7)==LOW)
{
analogWrite(buzzer,frequency[6]);
on_time=millis();
if(i!=0)
button_offtime[i-1]=on_time-off_time;
while(digitalRead(button7)==LOW);
if(path==1)
{
off_time=millis();
button_ontime[i]=(off_time-on_time);
button_seq[i]=6;
i++;
Serial.println("button 7 stored");
}
}
analogWrite(buzzer,0);
}
void playback (void)
{
digitalWrite(led,LOW);
for(int j=0;j<i;j++)
{
analogWrite(buzzer,frequency[button_seq[j]]);
delay(button_ontime[j]);
analogWrite(buzzer,0);
delay(button_offtime[j]);
}
i=0;
off_time=0;
on_time=0;
path=1;
digitalWrite(led,HIGH);
}
void button_ISR()
{
buttonFlag = 1;
LISTA DE COMPONENTES:
1 - Arduino Uno;
5 - LED’s, cores diversas;
1 - Protobord;
1 - Chave táctil;
5 - Resistores 220 ohms;
1 - Resistor 10 K ohms;
Alguns jumpers;
Arduino Componente
Pino 2 LED 1
Pino 3 LED 2
Pino 4 LED 3
Pino 5 LED 4
Pino 6 LED 5
Pino 7 Chave
Programando o Arduino:
O código abaixo fará com que, quando a chave for acionada os LEDs vão
acender em uma seqüência, copie e cole o código abaixo no Arduino IDE.
Código.
Neste projeto vamos aprender a fazer um gráfico de barra que é controlado por
um potenciômetro.
Lista de componentes:
1 - Arduino Uno;
10 - LEDs;
10 - Resistores de 220 ohms;
1 - Protobord;
1 - Potenciômetro;
Alguns jumpers;
Arduino Componente
Pino 2 LED
Pino 3 LED
Pino 4 LED
Pino 5 LED
Pino 6 LED
Pino 7 LED
Pino 8 LED
Pino 9 LED
Pino 10 LED
Pino 11 LED
Pino A0 Potenciômetro
Programando o Arduino:
Código.
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Após carregar o código no Arduino, você pode girar o potenciômetro para ver o
acendimento seqüencial dos LED’s. Com algumas adaptações podemos trocar o
potenciômetro por uma fonte de som, isto faria com que conforme o som toque os
LEDs acendam na mesma intensidade.
Configurando o NodeMCU no IDE Arduino
LINK: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Clique em OK.
Na sequência clique em Ferramentas -> Placa -> Gerenciador de Placas:
Lista de componentes:
1 - NodeMCU;
1 - Chave táctil;
6 - Resistores de 220 ohms;
1 - Protobord;
6 - LEDs;
Alguns jumpers;
Montagem:
IDE
NodeMCU Arduino
D0 16
D1 5
D2 4
D3 0
D4 2
D5 14
D6 12
D7 13
D8 15
D9 3
D10 1
Programando o NodeMCU.
O código abaixo irá fazer com que ao acionar a chave táctil de 1 à 6 LED’s
serão acionados aleatoriamente.
#include <ESP8266WiFi.h>
int segA = 5;
int segB = 4;
int segC = 0;
int segD = 12;
int segE = 13;
int segF = 15;
int pinoTilt = 14;
void setup()
{
pinMode(segE, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(pinoTilt, INPUT);
}
void loop()
{
if(digitalRead(pinoTilt) == HIGH)
{
jogaDado();
}
}
void jogaDado()
{
for(int i=0; i<25; i++)
{
switch(random(1, 7)) // Escolhe um numero aleatorio entre 1 e 6
{
case 1 :
acende1();
break;
case 2 :
acende2();
break;
case 3 :
acende3();
break;
case 4 :
acende4();
break;
case 5 :
acende5();
break;
case 6 :
acende6();
break;
}
delay(4*i); // O delay aumenta conforme passam mais numeros
}
}
void acende1()
{
digitalWrite(segE,LOW);
digitalWrite(segD,LOW);
digitalWrite(segC,LOW);
digitalWrite(segB,LOW);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
}
void acende2()
{
digitalWrite(segE,LOW);
digitalWrite(segD,LOW);
digitalWrite(segC,LOW);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
}
void acende3()
{
digitalWrite(segE,LOW);
digitalWrite(segD,LOW);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
}
void acende4()
{
digitalWrite(segE,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
}
void acende5()
{
digitalWrite(segE,HIGH);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,LOW);
}
void acende6()
{
digitalWrite(segE,HIGH);
digitalWrite(segD,HIGH);
digitalWrite(segC,HIGH);
digitalWrite(segB,HIGH);
digitalWrite(segA,HIGH);
digitalWrite(segF,HIGH);
}
Testando o experimento.
Material necessário:
- NodeMCU
- LED
- Protoboard;
- Resistor ( 220 Ω ou 330 Ω)
- Jumpers
IDE
NodeMCU Arduino
D0 16
D1 5
D2 4
D3 0
D4 2
D5 14
D6 12
D7 13
D8 15
D9 3
D10 1
Programando o NodeMCU.
O código abaixo irá criar uma página na qual você poderá clicar nos
botões e controlar um LED ou outra carga.
Copie o código abaixo no IDE e carregue no NodeMCU.
#include <ESP8266WiFi.h>
//Senha da rede
const char* password = "senha da rede";
//IP do ESP (para voce acessar pelo browser - voce TEM que mudar este IP tambem)
IPAddress ip(192, 168, 1, 5);
client.flush();
//Iniciando o buffer que ira conter a pagina HTML que sera enviada para o browser.
String buf = "";
Material necessário:
- NodeMCU;
- Protoboard;
- LDR;
- Resistor de 220 Ω;
- Jumpers;
Montagem:
O código abaixo fará com que o NodeMCU monitore o sinal wifi e leia o
valor do LDR, acesse a rede wifi, gere uma página e mostre as informações de
luminosidade e intensidade de sinal wifi nesta página.
#include <ESP8266WiFi.h>
const char* ssid = "nome da rede"; //Configuração de sua rede WiFI
const char* password = "senha";
int id = 1;
void setup() {
Serial.begin(9600);
delay(10);
void loop() {
delay(2000);
rssi = WiFi.RSSI();
valorldr = analogRead(ldr);
Serial.println("Webserver gerado.");
while(!client.available()){
delay(1);
}
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
String url = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE
HTML>\r\n";
//Geração da página HTML
url += "<html>\r\n";
url += "<title>Monitoramento remoto</title>";
url += "<center><h1>Intensidade luminosa e de sinal.</h1>";
url += "<br/>";
url += "<br/>";
url += "<br/>";
url += "<b>Luminosidade = </b>";
url += valorldr;
url += "<br/>";
url += "<b>Intens. Sinal = </b> ";
url += rssi;
url += "<br/>";
url += "<b>IP = </b>";
url += String(myIPAddrStr);
url += "<br/>";
url += "<input type=""button"" value=""Atualizar"" onClick=""history.go(0)"">" ;
//Essa linha gera um botão p/ atualizar a página do webservice.
url += "<br/>";
url += "<br/>";
url += "<br/>";
url += "<br/>";
url += "<br/>";
url += "<br/>";
url += "<b>www.saladeeletronica.com </b>";
url += "</center></html>\n";
client.print(url);
Serial.println();
Serial.println("Fechando a conexão");
delay(30000); //Espera 30 segundos e recomeça o loop.
}