domingo, 28 de abril de 2019

Arduino WAVGAT

Diferenças básicas do Arduino WAVGAT para o convencional.

* Processador: AVGA328p ou LGT8F328D ao invés do ATMEGA328P
* Pinos GPIO: 3,3V ao invés de 5V
* Pinos ADC: 3,3V ao invés de 5V
* ADC: 12 bits ao invés de 10 bits (mas pode ser configurado como 10 bits)
* Portas com PWM: 5/6/9/10/11 ao invés de 3/5/6/9/10/11

Caso sua placa Arduino seja WAVGAT, alguns arquivos devem ser copiados para o ARDUINO IDE.

- Baixe o arquivo UPDATE do link AQUI !


Ou copie do CD, caso tenha em mãos.



quarta-feira, 17 de abril de 2019

Gráfico de Barra com LEDs


    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;


Circuito a ser montado:


     Os pinos digitais  2 à 11 estão ligados aos LEDs, também em cada LED há um resistor de 220 ohms para limitar a corrente. O potenciômetro está ligado ao pino A0, 5V e GND.

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:


     O código abaixo fará com que ao girar o potenciômetro os LEDs acendam em seqüência.

Código:


     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.

const int analogPin = A0;  
const int ledCount = 10;   
int ledPins[] = {
  2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};  


void setup() {
 
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
  }
}

void loop() {
 
  int sensorReading = analogRead(analogPin);
 
  int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);

 
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
   
    if (thisLed < ledLevel) {
      digitalWrite(ledPins[thisLed], HIGH);
    }
   
    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.

Os componentes deste tutorial podem ser comprados AQUI!

terça-feira, 16 de abril de 2019

Sequencial de LEDs com botão Arduino


    Neste projeto vamos aprender a fazer um sequencial de LED’s acionado por um botão.  

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;


Circuito a ser montado:


     Os pinos digitais  2 à 6 estão ligados aos LEDs e o 7 a chaves táctil.

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.

Código.


     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.

const int led1 = 2;
const int led2 = 3;
const int led3 = 4;
const int led4 = 5;
const int led5 = 6;
const int botao = 7;

int estadoBotao = 0;

void setup() {
  pinMode(led1,OUTPUT); 
  pinMode(led2,OUTPUT);   
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);    
  pinMode(led5,OUTPUT);
  pinMode(botao,INPUT);        .
}


void loop() {
  estadoBotao = digitalRead(botao);
  
  if (estadoBotao == HIGH) {
   
    digitalWrite(led1,HIGH);
    delay(1000);   
    digitalWrite(led2,HIGH);
    delay(1000);   
    digitalWrite(led3,HIGH);
    delay(1000);   
    digitalWrite(led4,HIGH);   
    delay(1000);
    digitalWrite(led5,HIGH);
    delay(1000);
  } else {
   
    digitalWrite(led1,LOW);   
    digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
  }
}


     Após carregar o código no Arduino, toque a chave para testar o acendimento sequencial. Você pode mudar o tempo de Delay para alterar o tempo de acendimento.

Os componentes deste tutorial pode ser comprados AQUI!

Piano com memória utilizando o Arduino



    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;


Circuito a ser montado:


     Os pinos digitais  2 à 9 estão ligados às chaves táctil e o pino 10 ao Buzzer.

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.


     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.

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;
    }
   
    else if(digitalRead(buttonPin) == HIGH && previousState == LOW)
    {
      previousState = HIGH;
    }
    buttonFlag = 0;
  }

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

     Após carregar o código no Arduino, toque as chaves para testar o piano.

Os componentes deste tutorial pode ser comprados AQUI!




Semáforo com Arduino


    Neste projeto vamos aprender a fazer um semáforo. Este projeto tem um semáforo para carros em conjunto com um para pedestres, funcionando em sincronismo.  

LISTA DE COMPONENTES:


1 - Arduino Uno;
2 - LED verde;
2 - LED vermelho;
1 - LED laranja;
5 - Resistores de 220 ohms;
1 - Protobord;
Alguns jumpers;


Circuito a ser montado:


     Os pinos digitais  5 à 9 estão ligados aos LEDs, também em cada LED há um resistor de 220 ohms para limitar a corrente.




Programando o Arduino:


     O código abaixo fará com que os LED’s acendam na seqüência necessária ao funcionamento sincronizado de um semáforo para carros em conjunto com um para pedestres.

Código:


     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.



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


     Após carregar o código no Arduino, você verá o funcionamento sincronizado do semáforo. Em Delay o tempo de cada LED pode ser alterado.

Os componentes deste tutorial pode ser comprados AQUI!

segunda-feira, 15 de abril de 2019

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

Sobre o principais componentes:

      Display de 7 segmentos, são comumente usados em eletrônica como forma de exibir uma informação alfanumérica. Ele é composto de 8 segmentos que são na verdade 8 LEDs, 7 mostram a informação e 1 é o ponto. O mostrado abaixo é de catodo comum.




Circuito a ser montado:

     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.

     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.

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.

Os componentes deste tutorial pode ser comprados AQUI!

Sensor de passagem com laser


     Neste projeto vamos aprender a fazer um controle de passagem com laser. O fato de estarmos utilizando um lazer possibilita que a distância monitorada seja maior.

LISTA DE COMPONENTES:


1 - Arduino Uno;
1 - LED;
1 - Resistor de 220 ohms
1 - Resistor de 1000 ohms
1 - Protobord;
1 - LDR;
Alguns jumpers;


Sobre o principais componentes:


     Módulo Laser Ky-008 , possuí 3 terminais, “S” de sinal, “-“ conectado ao negativo da fonte de alimentação e o terminal central que deve ser conectado ao positivo da fonte de alimentação, suas principais características são:

• Tensão de Operação: 5v
• Potência: 5mW
• Comprimento de onda: 650N.m OD 6 milímetros

Nota: A luz do laser pede ser perigosa se emitida diretamente aos olhos.


     O LDR, Resistor Dependente de Luz ou fotorresistência, é um componente eletrônico passivo do tipo resistor variável, mais especificamente, é um resistor cuja resistência varia conforme a intensidade da luz que incide sobre ele.


Circuito a ser montado:

     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.


     Copie e cole o código abaixo na tela do Arduino IDE. Em seguida execute-o.

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.

Os componentes deste tutorial pode ser comprados AQUI!