ARLA/CLUSTER: Keyer, Com Arduino (NANO), ajuda.

Pedro Ribeiro ct7abp gmail.com
Domingo, 21 de Fevereiro de 2016 - 23:53:53 WET


Saltou-se o conteúdo do tipo multipart/alternative -------------- próxima parte ----------
// Versão para uma chave dupla (lambic), com geração do tom em speaker e buzzer (opcional)
// Por Pedro Ribeiro CT7ABP
// Coompativel com a maioria das placas Arduino, incluindo UNO e NANO

const byte keyditpin = 2; // Ligar à chave no pino correspondente ao ponto
const byte keydahpin = 3; // Ligar à chave no pino correspondente ao traço, o pino comum liga ao
                          // GND do Arduino
const byte ledpin = 13; // Pino para o led da board e para eventual buzzer activo, se ligar um led
                        // externo, não esquecer uma resistência de uns 390ohm
const byte spkpin = 5; // Pino da saida para speaker, ligar através de uma resistência de ~390ohm
                       // e um condensador de 10uF para evitar danos

const byte cwspeed = 12; // Velociadade equivalente a 12 wpm, ajustar a gosto
const unsigned short dit_ms = 1200/cwspeed; // Tempo para um ponto em millisegundos
const unsigned short dah_ms = 3 * dit_ms; // Tempo para um traço em millisegundos
const unsigned short cw_tone = 500; // Tom de 500Hz (onda quadrada) no pino definido como spkpin

enum cwsym_t { SYM_DIT, SYM_DAH };

void setup() {
// Configurar o Pin 2 onde vamos ligar a chave de CW, o pino correspondente aos pontos como entrada
// colocar uma resistência de 4,7k entre o pino e 5V para o manter ao nivel logico alto por omissao
 pinMode(keyditpin,INPUT);
// Configurar o Pin 3 onde vamos ligar a chave de CW, o pino correspondente aos traços como entrada
// colocar uma resistência de 4,7k entre o pino e 5V para o manter ao nivel logico alto por omissao
 pinMode(keydahpin,INPUT);

// Configurar o Pin 13 como saida, este está nativamente ligado ao LED do UNO, NANO (e outros) e
// poderá ser opcionalmente usado para ligar o buzzer activo
 pinMode(ledpin,OUTPUT); 
 digitalWrite(ledpin,LOW); // Inicialmente o LED/Buzzer nao estão activos

// Configurar o Pin 5 como saida a usar pelo autofalante, NAO LIGAR DIRECTO porque fará danos a ambos
// autofalante e Arduino, ligar com uma resistência de 390ohm e um condensador de 10uF com o positivo
// do lado do Arduino (valores a ajustar)
 pinMode(spkpin,OUTPUT); 
 digitalWrite(spkpin,LOW); // Inicialmente speaker está inactivo
}

void ditdah(cwsym_t dd) {
    digitalWrite(ledpin,HIGH); // LED/buzzer activos
    tone(spkpin,cw_tone); // Gera som no pino definido para o speaker
    if(dd == SYM_DIT)
      delay(dit_ms); // Esperar o tempo de ponto equivalente ao WPM configurado
    else
      delay(dah_ms); // Esperar o tempo de traço equivalente ao WPM configurado
    noTone(spkpin); // Termina som no pino definido para o speaker
    digitalWrite(ledpin,LOW); // LED/buzzer inactivos
    delay(dit_ms); // Esperar o tempo de ponto equivalente ao WPM configurado antes de qualquer outro simbolo
}

void loop() {
// true = HIGH significa que o pullup está a condicionar o estado da entrada, false = LOW, se a chave estiver primida
 bool ditstate = digitalRead(keyditpin);
 bool dahstate = digitalRead(keydahpin);
 if(dahstate == false) { // traço primido
   ditdah(SYM_DAH);
 }
 if(ditstate == false) { // ponto primido
   ditdah(SYM_DIT);
 }
}
-------------- próxima parte ----------
Um anexo que não estava em formato texto não está incluído...
Nome : simpleLambicLedBuzzer_bread.png
Tipo : image/png
Tam  : 316756 bytes
Descr: não disponível
Url  : http://radio-amador.net/pipermail/cluster/attachments/20160221/2cdc5100/simpleLambicLedBuzzer_bread.png
-------------- próxima parte ----------
Um anexo que não estava em formato texto não está incluído...
Nome : simpleLambicLedBuzzer_schematic.png
Tipo : image/png
Tam  : 80381 bytes
Descr: não disponível
Url  : http://radio-amador.net/pipermail/cluster/attachments/20160221/2cdc5100/simpleLambicLedBuzzer_schematic.png


Mais informações acerca da lista CLUSTER