annuncio

Comprimi
Ancora nessun annuncio.

Piccoli esperimenti con Arduino crescono...

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Piccoli esperimenti con Arduino crescono...

    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à.
    Ultima modifica di IZ7PDX; 23-11-13, 18:55.
    http://www.iz7pdx.it
    http://www.facebook.com/pages/Iz7pdx...64912436856097
    http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
    http://www.youtube.com/user/IZ7PDX

    73 de Luigi
    IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

  • #2
    Re: Piccoli esperimenti con Arduino crescono...

    Originariamente inviato da IZ7PDX Visualizza il messaggio
    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à.
    Non sono banalità, quando funziona un programma in un linguaggio nuovo si strilla come per un new one
    Questo l'ho scritto a memoria, senza provarlo, sul blocco note di windows.
    Fa parte della mentalità del programmatore: ogni cosa si può fare con meno codice incluso quello che ti quoto sotto.
    E' una buona occasione per studiare 4 nuove istruzioni e migliorare quello che ho scritto.. la stringa in questo caso viene scritta in punti e linee.. ma, forse si potrebbe fare di meglio, vero ?
    Intanto riduciamo le righe di codice necessarie:
    codice:
    String CQ = "-.-. --.- -.. . .. --.. --... .--. -.. -..-"; //stringa da trasmettere
    int lunghezzacq = CQ.length(); //ricavo la lunghezza della stringa
    
    for (int carattere = 1; carattere = lunghezzacq; carattere++)  {
    //ciclo for che dura per la lunghezza della stringa con la variabile carattere che incrementa
       
    	if CQ.charAt(carattere)="-" {
       	digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
    	delay(inputUnita*3); // wait for 3 unità.
      	}
    
    	if CQ.charAt(carattere)="." {
    	digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
    	delay(inputUnita); // wait for 1 unità.
    	}
    	if CQ.charAt(carattere)=" " {
    	delay(inputUnita); // se c'è unop spazio wait for 1 unità.
    	}
    }
    Perdonami se c'è qualche errore, ma l'ho scritto senza provarlo, *dovrebbe* essere corretto.
    Cris IZ0IEN
    http://www.technecom.it
    Founder of FOC - Frigo Operators Club
    Member of SOC #990 - Second Operator Class
    Orgoglioso cultore del CW a correzione d'errore.

    Commenta


    • #3
      Re: Piccoli esperimenti con Arduino crescono...

      Originariamente inviato da IZ0IEN Visualizza il messaggio
      Non sono banalità, quando funziona un programma in un linguaggio nuovo si strilla come per un new one
      Questo l'ho scritto a memoria, senza provarlo, sul blocco note di windows.
      Fa parte della mentalità del programmatore: ogni cosa si può fare con meno codice incluso quello che ti quoto sotto.
      E' una buona occasione per studiare 4 nuove istruzioni e migliorare quello che ho scritto.. la stringa in questo caso viene scritta in punti e linee.. ma, forse si potrebbe fare di meglio, vero ?
      Intanto riduciamo le righe di codice necessarie:
      codice:
      String CQ = "-.-. --.- -.. . .. --.. --... .--. -.. -..-"; //stringa da trasmettere
      int lunghezzacq = CQ.length(); //ricavo la lunghezza della stringa
      
      for (int carattere = 1; carattere = lunghezzacq; carattere++)  {
      //ciclo for che dura per la lunghezza della stringa con la variabile carattere che incrementa
         
      	if CQ.charAt(carattere)="-" {
         	digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
      	delay(inputUnita*3); // wait for 3 unità.
        	}
      
      	if CQ.charAt(carattere)="." {
      	digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
      	delay(inputUnita); // wait for 1 unità.
      	}
      	if CQ.charAt(carattere)=" " {
      	delay(inputUnita); // se c'è unop spazio wait for 1 unità.
      	}
      }
      Perdonami se c'è qualche errore, ma l'ho scritto senza provarlo, *dovrebbe* essere corretto.
      Ehm... quanti grappini avevi bevuto prima?
      Ho corretto un po' di cose...
      73 de Guido, ik2bcp

      codice:
      String CQ = "-.-. --.- -.. . .. --.. --... .--. -.. -..- "; //stringa da trasmettere
      int lunghezzacq = CQ.length(); //ricavo la lunghezza della stringa
      
      for (int carattere = 0; carattere < lunghezzacq; carattere++)  {
      //ciclo for che dura per la lunghezza della stringa con la variabile carattere che incrementa
         
      	if CQ.charAt(carattere)="-" {
         	digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
      	delay(inputUnita*3); // wait for 3 unità.
         	digitalWrite(led, LOW);
      	delay(inputUnita);
        	}
      
      	if CQ.charAt(carattere)="." {
      	digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
      	delay(inputUnita); // wait for 1 unità.
         	digitalWrite(led, LOW);
      	delay(inputUnita);
      	}
      
      	if CQ.charAt(carattere)=" " {
         	delay(inputUnita*3); // se c'è uno spazio wait for 3 unità.
      	}
      }

      Commenta


      • #4
        Re: Piccoli esperimenti con Arduino crescono...

        È un anno e oltre che non tocco Arduino, sry grazie delle correzioni !!!

        inviato da Galaxy S4 via Tapatalk
        Cris IZ0IEN
        http://www.technecom.it
        Founder of FOC - Frigo Operators Club
        Member of SOC #990 - Second Operator Class
        Orgoglioso cultore del CW a correzione d'errore.

        Commenta


        • #5
          Re: Piccoli esperimenti con Arduino crescono...

          Mi sembra ottima l'idea, come supponevo esiste sempre il modo giusto di fare le cose e risparmiare codice.
          Partendo dall'esercizio di base lo ho modificato facendo qualcosa di più interessante ma tua soluzione Cris è qualcosa di molto interessante e va approfondita!

          Nonostante la correzione di Guido l' IDE 1.0.5 mi da questo messaggio di errore, da cosa dipende?

          CW_BEACON_LED:4: error: expected unqualified-id before 'for'
          CW_BEACON_LED:4: error: expected constructor, destructor, or type conversion before '<' token
          CW_BEACON_LED:4: error: expected constructor, destructor, or type conversion before '++' token
          http://www.iz7pdx.it
          http://www.facebook.com/pages/Iz7pdx...64912436856097
          http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
          http://www.youtube.com/user/IZ7PDX

          73 de Luigi
          IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

          Commenta


          • #6
            Re: Piccoli esperimenti con Arduino crescono...

            Oramai ho preso gusto!


            // Simulazione di un control box per commutazione antenne a 4 canali (IZ7PDX antenne 10-630m)
            // impostiamo le variabile LED sui pin digitale 8-9-10-11
            // i 4 led fanno capo a relativi 4 relè di potenza che commutano la RF o eventuali altri relè
            // si trovano in commercio piccole schede relè con uscite di potenza (da provare per la RF bassa potenza) alimentati a 5V ideali per uso con Arduino
            // http://www.ebay.it/itm/151062339980?...84.m1423.l2649
            // CODICE REDATTO DA Luigi D'Arcangelo IZ7PDX CON SCOPO PURAMENTE DIDATTICO
            // DECLINO OGNI RESPONSABILITA' SU EVENTUALI DANNI COLLATERALI :-)
            // le opportunità di modificare il codice per usi SO2R o semplice gestione delle necessità dui stazione sono tante
            // unico limite la fantasia.

            // Le possibilità di fare interagire Arduino con il mondo reale sono notevoli,sensori di corrente interfacciati con rosmetri...
            // compresa comunicazione seriale con RTX o PA. Vediamo di esplorare questo fantastico mondo insieme.

            #define LEDa 8
            #define LEDb 9
            #define LEDc 10
            #define LEDd 11

            int val = 0; // usiamo la variabile val per salvare i valori provenienti da tastiera
            int statoA = 0; // usiamo la variabile stato per salvare lo stato in cui si trova il led. 0 = spento, 1 = acceso
            int statoB = 0; // usiamo la variabile stato per salvare lo stato in cui si trova il led. 0 = spento, 1 = acceso
            int statoC = 0; // usiamo la variabile stato per salvare lo stato in cui si trova il led. 0 = spento, 1 = acceso
            int statoD = 0; // usiamo la variabile stato per salvare lo stato in cui si trova il led. 0 = spento, 1 = acceso

            void setup() {
            pinMode(LEDa, OUTPUT); // impostiamo il pin del led (11) come output
            pinMode(LEDb, OUTPUT); // impostiamo il pin del led (10) come output
            pinMode(LEDc, OUTPUT); // impostiamo il pin del led (9) come output
            pinMode(LEDd, OUTPUT); // impostiamo il pin del led (8) come output
            Serial.begin(9600);
            Serial.println(" PREGO SELEZIONARE L'ANTENNA DA COLLEGARE. ");
            Serial.println(" CANALE a: 80-160-630 METRI ");
            Serial.println(" CANALE b: 40 METRI ");
            Serial.println(" CANALE c: 20-10 METRI ");
            Serial.println(" CANALE d: 15 METRI ");
            }

            void loop() {
            val = Serial.read(); // leggiamo il valore da tastiera e lo salviamo

            // controlliamo l'input da tastiera e abilitiamo il canale richiesto

            if (val == 'a') {
            statoA = 1 - statoA;
            statoB = 0;
            statoC = 0;
            statoD = 0;
            }
            if (val == 'b') {
            statoA = 0;
            statoB = 1 - statoB;
            statoC = 0;
            statoD = 0;
            }
            if (val == 'c') {
            statoA = 0;
            statoB = 0;
            statoC = 1 - statoC;
            statoD = 0;
            }
            if (val == 'd') {
            statoA = 0;
            statoB = 0;
            statoC = 0;
            statoD = 1 - statoD;
            }

            if (statoA == 1) {
            digitalWrite(LEDa, HIGH); // accendiamo il led
            // Serial.println("ANTENNA 80-160-630 METRI ATTIVATA")
            }
            if (statoB == 1) {
            digitalWrite(LEDb, HIGH); // accendiamo il led
            // Serial.println("ANTENNA 40 METRI ATTIVATA")
            }
            if (statoC == 1) {
            digitalWrite(LEDc, HIGH); // accendiamo il led
            // Serial.println("ANTENNA 20-10 METRI ATTIVATA")
            }
            if (statoD == 1) {
            digitalWrite(LEDd, HIGH); // accendiamo il led
            // Serial.println("ANTENNA 15 METRI ATTIVATA")
            }
            else {
            digitalWrite(LEDa, LOW); //Spegnamo il led del CANALE D
            digitalWrite(LEDb, LOW); //Spegnamo il led del CANALE D
            digitalWrite(LEDc, LOW); //Spegnamo il led del CANALE D
            digitalWrite(LEDd, LOW); //Spegnamo il led del CANALE D
            }
            }


            Codice che chiaramente può essere snellito in mille modi...
            http://www.iz7pdx.it
            http://www.facebook.com/pages/Iz7pdx...64912436856097
            http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
            http://www.youtube.com/user/IZ7PDX

            73 de Luigi
            IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

            Commenta


            • #7
              Re: Piccoli esperimenti con Arduino crescono...

              Post interessante, ci gioco ( anche perché li vendiamo qui in negozio ), anch'io, il prodotto sta riscuotendo molto interesse fra i radioamatori, l'ARRL ha già un libro dedicato all'argomento.
              Tornando al tuo esperimento, partendo dai libri che stai usando, passa ad integrare il classico display a 2 righe, così le varie funzioni le vedi sul display senza usare il monitor del pc.
              Ti seguo con vivo interesse.
              I7CSB Mike

              Commenta


              • #8
                Re: Piccoli esperimenti con Arduino crescono...

                Originariamente inviato da IZ7PDX Visualizza il messaggio
                Mi sembra ottima l'idea, come supponevo esiste sempre il modo giusto di fare le cose e risparmiare codice.
                Partendo dall'esercizio di base lo ho modificato facendo qualcosa di più interessante ma tua soluzione Cris è qualcosa di molto interessante e va approfondita!

                Nonostante la correzione di Guido l' IDE 1.0.5 mi da questo messaggio di errore, da cosa dipende?

                CW_BEACON_LED:4: error: expected unqualified-id before 'for'
                CW_BEACON_LED:4: error: expected constructor, destructor, or type conversion before '<' token
                CW_BEACON_LED:4: error: expected constructor, destructor, or type conversion before '++' token
                Sorry, avevo controllato velocemente solo la logica di funzionamento e non la sintassi, dove ho visto esserci degli errori anche li...
                Questo dovrebbe compilarsi:
                codice:
                  String CQ = "-.-. --.- -.. . .. --.. --... .--. -.. -..- "; //stringa da trasmettere
                  int lunghezzacq = CQ.length(); //ricavo la lunghezza della stringa
                
                  for (int carattere = 0; carattere < lunghezzacq; carattere++)  {
                    //ciclo for che dura per la lunghezza della stringa con la variabile carattere che incrementa
                
                    if (CQ.charAt(carattere) == '-') {
                      digitalWrite(led, HIGH); // LINEA - turn the LED on (HIGH is the voltage level)
                      delay(inputUnita*3); // wait for 3 unità.
                      digitalWrite(led, LOW);
                      delay(inputUnita);
                    }
                
                    if (CQ.charAt(carattere) == '.') {
                      digitalWrite(led, HIGH); // PUNTO - turn the LED on (HIGH is the voltage level)
                      delay(inputUnita); // wait for 1 unità.
                      digitalWrite(led, LOW);
                      delay(inputUnita);
                    }
                
                    if (CQ.charAt(carattere) == ' ') {
                      delay(inputUnita*3); // se c'è uno spazio wait for 3 unità.
                    }
                  }

                Commenta


                • #9
                  Re: Piccoli esperimenti con Arduino crescono...

                  Originariamente inviato da ik2bcp Visualizza il messaggio
                  Sorry, avevo controllato velocemente solo la logica di funzionamento e non la sintassi, dove ho visto esserci degli errori anche li...
                  Questo dovrebbe compilarsi:
                  Ho capito, lo rimonto
                  Cris IZ0IEN
                  http://www.technecom.it
                  Founder of FOC - Frigo Operators Club
                  Member of SOC #990 - Second Operator Class
                  Orgoglioso cultore del CW a correzione d'errore.

                  Commenta


                  • #10
                    Re: Piccoli esperimenti con Arduino crescono...

                    Ottimo thread!
                    Visto che non è così complicato?
                    73 de IK0VVE Max
                    www.ik0vve.net

                    Commenta


                    • #11
                      Re: Piccoli esperimenti con Arduino crescono...

                      Vedo Michele, hai tante belle cosette nel tuo negozio!
                      Io ho iniziato da poco a smanettare (studiare mi sembra inappropriato) con Arduino e ho molto da imparare ma devo ammettere che in dieci minuti puoi fare l'impensabile con una facilità estrema... basta essere coscienti che sono giochi per il momento!

                      Per il display a cristalli ho già tutto l'occorrente devo solo trovare il tempo per fare, appena posso provo anche lo Sketch di Cris, sono molto curioso, grazie per la pazienza.
                      http://www.iz7pdx.it
                      http://www.facebook.com/pages/Iz7pdx...64912436856097
                      http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
                      http://www.youtube.com/user/IZ7PDX

                      73 de Luigi
                      IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

                      Commenta


                      • #12
                        Re: Piccoli esperimenti con Arduino crescono...

                        Spero di non essere tacciato di chi si vuol fare pubblicità, ma Arduino mi piace proprio, ho qui un circuitino che fa da mini stazione meteo, anche quel settore molto interessante, e gioco con quello, il bello è proprio questa grossa possibilità di personalizzare anche i progetti di altri, il limite di Arduino, per me è la fantasia, naturalmente, chi conosce C è di molto agevolato, e il tipico utente, spesso non è un tecnico, sapessi quanta gente mi chiama e si lamenta che uno shield magari è in kit, non hanno il saldatore, per fortuna ci sono i Radioamatori.
                        I7CSB Mike

                        Commenta


                        • #13
                          Re: Piccoli esperimenti con Arduino crescono...

                          Originariamente inviato da i7csb Visualizza il messaggio
                          Spero di non essere tacciato di chi si vuol fare pubblicità, ma Arduino mi piace proprio, ho qui un circuitino che fa da mini stazione meteo, anche quel settore molto interessante, e gioco con quello, il bello è proprio questa grossa possibilità di personalizzare anche i progetti di altri, il limite di Arduino, per me è la fantasia, naturalmente, chi conosce C è di molto agevolato, e il tipico utente, spesso non è un tecnico, sapessi quanta gente mi chiama e si lamenta che uno shield magari è in kit, non hanno il saldatore, per fortuna ci sono i Radioamatori.
                          Quoto a 100 %, il tuo entusiasmo è anche il mio !
                          Anzi da ignorante e dopo i primi esperimenti a cuor leggero posso affermare che un radioamatore attivo non può assolutamente ignorare ARDUINO e le sue infinite possibilità di realizzare ciò che difficilmente potremmo fare in altro modo.

                          Questo è il mio arduino-coffee time di dieci minuti per definire il codice base del control box!

                          http://www.iz7pdx.it
                          http://www.facebook.com/pages/Iz7pdx...64912436856097
                          http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
                          http://www.youtube.com/user/IZ7PDX

                          73 de Luigi
                          IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

                          Commenta


                          • #14
                            Re: Piccoli esperimenti con Arduino crescono...

                            Originariamente inviato da IZ7PDX Visualizza il messaggio
                            Questo è il mio arduino-coffee time di dieci minuti per definire il codice base del control box!
                            Luigi,
                            due idee:
                            1) Perché non metti l'Arduino (ben schermato) nell'accordatore e arrivi in stazione con solo 4 fili: alimentazione e seriale su RS485?
                            2) Gli stepping motors sono molto comodi, perché ti permettono posizionamenti precisi senza la necessità di encoders, però ti consiglio di mettere dei fine corsa (ad esempio dei fotoaccoppiatori a "forcellina ottica") per calibrare la posizione iniziale.
                            73 de Guido, ik2bcp

                            Commenta


                            • #15
                              Re: Piccoli esperimenti con Arduino crescono...

                              Originariamente inviato da ik2bcp Visualizza il messaggio
                              Luigi,
                              due idee:
                              1) Perché non metti l'Arduino (ben schermato) nell'accordatore e arrivi in stazione con solo 4 fili: alimentazione e seriale su RS485?
                              2) Gli stepping motors sono molto comodi, perché ti permettono posizionamenti precisi senza la necessità di encoders, però ti consiglio di mettere dei fine corsa (ad esempio dei fotoaccoppiatori a "forcellina ottica") per calibrare la posizione iniziale.
                              73 de Guido, ik2bcp
                              In effetti Guido ci avevo pensato, i tuoi suggerimenti sono interessanti e fattibili al 100%.
                              Malgrado ciò sono ancora alla fase di sperimentazione di Arduino e della sua logica di programmazione, sono a valutare tutte le possibilità per poi passando alla progettazione di fatto del sistema di controllo, scegliere la soluzione più opportuna.
                              Mi sono già procurato due sensori reed di piccole dimensioni per "delimitare" la corsa massima in entrambe le direzioni del roller.

                              Il bello è che li puoi utilizzare dove vuoi con l'ausilio di un piccolo magnete (esistono anche quelli in miniatura con potente biadesivo),con Arduino li puoi utilizzare come finecorsa, contatore, sensore di posizione per monitorare cosa accade, eccetera!
                              In effetti pensando di dover far convergere su Arduino diversi segnali digitali e analogici oltre alle quattro uscite PMW per alimentare lo/gli stepper si profila sempre più opportuna la possibilità di utilizzare per comunicare l'interfaccia RS485.

                              Non nego che sono tentato di acquistare Arduino Yun http://arduino.cc/en/Main/ArduinoBoa...ain.ArduinoYUN che permette il controllo completo tramite rete WiFi e quindi dovrei portare al box solo l'alimentazione 12V per motori, relè e riduttore di tensione a 5 V per Arduino.
                              Nel frattempo lo "studio" va avanti nei rangenti di tempo libero (vedi notte inoltrata) e sono sempre più meravigliato da ARDUINO.
                              Le possibilità sono infinite e al momento sono saturo di idee, accetto sempre i vostri ottimi consigli...
                              File allegati
                              http://www.iz7pdx.it
                              http://www.facebook.com/pages/Iz7pdx...64912436856097
                              http://www.hrdlog.net/ViewLogbook.aspx?user=IZ7PDX
                              http://www.youtube.com/user/IZ7PDX

                              73 de Luigi
                              IQ7GC - IJ7A - ID8/IQ8CS Team - JN80 MF-LF-VLF Club.

                              Commenta

                              Sto operando...
                              X