Partendo dal programma per fare lampeggiare il led on board (pin13) presente nell'archivio del software di Arduino ho implementato seguendo puramente l'istinto una serie di modifiche atte a far diventare più interessante l'esperimento.
http://www.youtube.com/watch?v=xfMB5...ature=youtu.be
Tramite una serie di istruzioni viene eseguito un loop di "chiamata" CQ IZ7PDX che fa lampeggiare il led on board del pin digitale 13.
L'unità di tempo "DI" pò assumere valori a nostro piacimento e verranno rispettati tutti i tempi del codice CW durante la trasmissione del lampeggio.
Si potrebbe creare una funzione matematica per rapportare l'unità di tempo a WPM ma ciò esula dall'intento didattico del programmino.
Ci sono una serie di informazioni che vengono "stampate" sulla seriale di Arduino (led tx), si potrebbe scrivere su un display a cristalli... ma anche questa cosa non è essenziale.
/*
Blink CQ IZ7PDX
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// si dichiara una variabile a cuiè assegnato il valore ti tempo che desideriamo in milli secondi
int inputUnita = 150;
// the setup routine runs once when you press reset:
void setup()
{
// initialize serial:
Serial.begin(9600);
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
// Per i profani del CW come me ... RICORDA:
// DI (punto) = 1 unità (impostato come 500 ms )
// DA (linea) = 3 unità (impostato come 1500 ms)
// Spazio tra i suoni che compongono una stessa lettera = 1 unità (impostato come 500 ms)
// Spazio tra 2 lettere diverse di una stessa parola = 3 unità (impostato come 1500 ms)
// Spazio tra 2 diverse parole = 5 unità (impostato come 2500 ms)
void loop() {
// stampa l'unità di tempo sulla seriale:
Serial.print(" CQ IZ7PDX ");
Serial.print(" L'unita' di tempo (DI) e' stata impostata al valore di millisecondi: ");
Serial.println(inputUnita);
// LETTERA C
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA Q
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità..
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA I
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA Z
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// NUMERO 7
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA P
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA D
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA X
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// print the number of seconds since reset:
Serial.print(" DURATA DEL LOOP DI CHIAMATA sec 18. ");
Serial.print(" TEMPO TOTALE DA INIZIO ASCOLTO SU SERIALE DEL LOOP CQ IZ7PDX sec. ");
Serial.println(millis()/1000);
}
Questo è il codice da me modificato ed ampliato, sicuramente esiste un modo diverso per ottenere un risultato simile o migliore utilizzando anche meno codice ma ripeto è solo uno dei miei primi esperimenti pensando con la mente DOS di 30 anni fa.
Magari dichiarando delle variabili aggiuntive e facendo lampeggiare qualsiasi nominativo o frase.... magari collegando una normale tastiera di PC si potrebbe battere sui tasti e vedere e sentire il Morse.
Sono solo all'inizio, scusate le banalità.
http://www.youtube.com/watch?v=xfMB5...ature=youtu.be
Tramite una serie di istruzioni viene eseguito un loop di "chiamata" CQ IZ7PDX che fa lampeggiare il led on board del pin digitale 13.
L'unità di tempo "DI" pò assumere valori a nostro piacimento e verranno rispettati tutti i tempi del codice CW durante la trasmissione del lampeggio.
Si potrebbe creare una funzione matematica per rapportare l'unità di tempo a WPM ma ciò esula dall'intento didattico del programmino.
Ci sono una serie di informazioni che vengono "stampate" sulla seriale di Arduino (led tx), si potrebbe scrivere su un display a cristalli... ma anche questa cosa non è essenziale.
/*
Blink CQ IZ7PDX
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// si dichiara una variabile a cuiè assegnato il valore ti tempo che desideriamo in milli secondi
int inputUnita = 150;
// the setup routine runs once when you press reset:
void setup()
{
// initialize serial:
Serial.begin(9600);
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
// Per i profani del CW come me ... RICORDA:
// DI (punto) = 1 unità (impostato come 500 ms )
// DA (linea) = 3 unità (impostato come 1500 ms)
// Spazio tra i suoni che compongono una stessa lettera = 1 unità (impostato come 500 ms)
// Spazio tra 2 lettere diverse di una stessa parola = 3 unità (impostato come 1500 ms)
// Spazio tra 2 diverse parole = 5 unità (impostato come 2500 ms)
void loop() {
// stampa l'unità di tempo sulla seriale:
Serial.print(" CQ IZ7PDX ");
Serial.print(" L'unita' di tempo (DI) e' stata impostata al valore di millisecondi: ");
Serial.println(inputUnita);
// LETTERA C
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA Q
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità..
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA I
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA Z
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// NUMERO 7
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA P
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA D
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// LETTERA X
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita); // wait for 1 unità.
digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
delay(inputUnita*3); // wait for 3 unità.
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(inputUnita*5); // wait for 5 unità.
// print the number of seconds since reset:
Serial.print(" DURATA DEL LOOP DI CHIAMATA sec 18. ");
Serial.print(" TEMPO TOTALE DA INIZIO ASCOLTO SU SERIALE DEL LOOP CQ IZ7PDX sec. ");
Serial.println(millis()/1000);
}
Questo è il codice da me modificato ed ampliato, sicuramente esiste un modo diverso per ottenere un risultato simile o migliore utilizzando anche meno codice ma ripeto è solo uno dei miei primi esperimenti pensando con la mente DOS di 30 anni fa.
Magari dichiarando delle variabili aggiuntive e facendo lampeggiare qualsiasi nominativo o frase.... magari collegando una normale tastiera di PC si potrebbe battere sui tasti e vedere e sentire il Morse.
Sono solo all'inizio, scusate le banalità.
Commenta