domingo, 11 de março de 2012

SOS, LED Código Morse

Arduino by my Self
Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);



Este projeto é mais um simples uso do Arduino, neste caso vamos gerar um Código Morse "SOS", que será mostrado em um LED ou, facilmente adaptável para uma Lâmpada de Sinalização.

SOS é um sinal usado em situaçãoes de emergência.  Quando enviado em CódigoMorse, consiste em três pontos (correspondente à letra S_, três traços (correspondentes à letra O) e novamente três pontos (. . . - - - . . .) - oralmente diz-se "dit dit dit   dah dah dah   dit dit dit" .
SOS pode significar:
"Save Our Souls" - Salve Nossas Almas;
"Save Our Seamens" - Salve Nossos Marinheiros;
"Save Our Ship" - Salve Nosso Navio;
"Survivor On Shore" - Sobreviventes na Costa;


O HARDWARE:
1 x Arduino UNO
1 x BreadBoard
1 x resistor de 220O 1/8W
1 x LED vermelho
Fios

O CIRCUITO:
Ligar o catodo do LED no negativo da alimentação;
Ligar um terminal do resistor ao anodo do LED;
O outro terminal do resistor ligar diretamente ao pino 10 do Arduino.





O SOFTWARE:

Abaixo o Software comentado das duas versões executadas

Primeira versão:


  Este exemplo é um código de domínio público.
 */

int ledPin = 10;  // pino onde será ligado o LED ou Lâmpada Sinalizadora

// matriz com a duração de piscadas para a palvra em Código Morse "SOS"
int durations[] = {200, 200, 200, 500, 500, 500, 200, 200, 200};


void setup() // inicialização do Arduino
  {
    pinMode(ledPin, OUTPUT); // configura o pino digital como saída
  }
  
void loop()  // loop principal do programa
  {
    for (int i = 0; i < 9; i++) // Loop iterativo das 9 piscadas do SOS
    {
      flash(durations[i]); // executa a função de piscar com a duração
                           // correspondente da matriz
    }
    delay(2000);   // espera 2 segundo e começa novamente
  }
  
// função para piscar o LED com uma certa duração  
void flash(int duration)
  {
    digitalWrite(ledPin, HIGH); // acende o LED
    delay(duration);            // espera a duração necessária
    digitalWrite(ledPin, LOW);  // apaga o LED
    delay(duration);            // espera a duração necessária
  }


Esta segunda versão têm a temporização de dits, dahs e separação entre caracteres de acordo com as normas internacionais:


  Este exemplo é um código de domínio público.
 */


int ledPin = 10;  // LED conectado ao pino 10


void setup() // inicialização do Arduino
{
pinMode(ledPin, OUTPUT); // configura pino do LED como saída
}

void loop() // loop principal do programa
{
// 3 dits
for (int x=0; x<3; x++) {
digitalWrite(ledPin, HIGH); // acende o LED
delay(150); // espera 150ms
digitalWrite(ledPin, LOW); // apaga o LED
delay(100); // espera 100ms
}

// delay de 100ms para ter um gap entre as letras
delay(100);

// 3 dahs
for (int x=0; x<3; x++) {
digitalWrite(ledPin, HIGH); // acende o LED
delay(400); // espera 400ms
digitalWrite(ledPin, LOW); // apaga oLED
delay(100); // espera 100ms
}

// delay de 100ms para ter um gap entre as letras
delay(100);

// 3 dits novamente
for (int x=0; x<3; x++) {
digitalWrite(ledPin, HIGH); // acende o LED
delay(150); // espera 150ms
digitalWrite(ledPin, LOW); // apaga o LED
delay(100); // espera 100ms
}

// espera 5 segundos antes de repetir o código de SOS
delay(5000);
}



O VÍDEO:

Vejamos os resultados!

Dúvidas e sugestões enviem para: arduinobymyself@gmail.com


video