codice di un arduino connesso ad una Actionoiseboard con
IC 10OUT Per comandare 5 servomotori.
            


#include <Servo.h>     //libreria servo gia' installata di default nell'ide arduino


Servo myservoa;    //  creazione variabili per servo 
Servo myservob;
Servo myservoc;
Servo myservod;
Servo myservoe;

int servoa = 100;   // variabili contenenti la posizione iniziale dei servo
int servob = 100;   //ogni qualvolta la scheda arduino verrà resettata 
int servoc = 100;   // i servo torneranno nella medesima posizione.
int servod = 100; 
int servoe = 100; 


void setup() {
  myservoa.attach(9);            // il numero traparentesi indica il pin data Output di arduino dove 
  myservob.attach(8);           // connettere lingresso data del servo.
  myservoc.attach(6);
  myservod.attach(7);
  pinMode(12,INPUT);//servod    //i seguenti numeri di input(traparentesi) indicano gli ingressi di arduino   
  pinMode(13,INPUT);//servod    // provenienti dai pinout della actionoiseboard,
  pinMode(11,INPUT);//servoc    // come si puo' notare ad ogni coppia di servo appartiene una coppia di 
  pinMode(10,INPUT);//servoc    //due diversi numeri, ad ogni numero di input equivale la rotazione 
  pinMode(2 ,INPUT);//servoa    // del servo in senso arario e antiorario.
  pinMode(4,INPUT);//servoa     //ad ogni segnale di HIGH proveniente dalla Actionoiseboard
  pinMode(3,INPUT);//servob     //equivale la rotazione non cotinua di qualche millimetro del servo 
  pinMode(5,INPUT);//servob     //corrispondente, per ritornare alla posizione 
                                //sarà necessaria la frequenza di reset (SQ-R) proveniente dal pinout 
                                //della actionoiseboard che resetterà contemporaneamente tutte le board arduino
}                               // in quando connessi allo stesso pin di reset.

void loop() {
  

  
  if (digitalRead(2) == HIGH) {   //servoa movimento orario

  servoa++;

  if (servoa == 180) {
    
    servoa--;
    
      
    }

}

if (digitalRead(3) == HIGH){     //servob movimento orario

servob++;

if (servob == 180){
  
  servob--;
  
}
  
}
if (digitalRead(10)== HIGH){    //servoc movimento orario
servoc++;
if (servoc == 180){
  servoc--;
}
  
}
if (digitalRead(13)== HIGH){    //servod movimento orario
servod++;
if (servod == 180){
  servod--;
}
  
}
if (digitalRead(4) == HIGH){     //servoa movimento antiorario

  servoa--;

  if (servoa == 0){servoa++;   }
}
if (digitalRead(5) == HIGH){     //servob movimento antiorario

 servob--;
 if (servob == 0){
  
  servob++;
  
 }
}

if (digitalRead(11) == HIGH){  //servoc movimento antiorario 
servoc--;
if (servoc == 0){
  servoc++;
}
  
}
if (digitalRead(12) == HIGH){  //servod movimento antiorario   
servod--;
if (servod == 0){
  servod++;
}
  
}
myservoa.write(servoa); 
delay(3);// piu' il numero del delay sale piu' la velocita' del servo diminuisce. 
myservob.write(servob); 
delay(3);
myservoc.write(servoc);
delay(3);
myservod.write(servod);
delay(3);
}

    
// il valore traparentesi(servoa) varia al variare del segnale in entratata proveniente dalla actionoiseboard 
// e quindi dai comandi audio disponibili nella home page all'indirizzo actionoise.com
//ogni segnale decodificato dalla actionoiseboard darà un segnale di HIGH all'arduino 
// che farà variare i valori (servoa,servob,servoc ecc..) e quindi dare il movimento 
//orario o antiorario al servo corrispondente  


Di seguito video dimostrativo che descrive
il codice sopra
L'app dei comandi genera il corretto segnale audio
sollecitando L'IC 10OUT il quale manda il segnale ad Arduino
che lo elabora ed azione il servoa



L'app guitar command e' disponibile nello store google a questo link



per aumentare il numero di pinout della Actionoiseboard con
IC 10OUT e quindi avere piu' comandi remoti disponibili sulla board arduino

basterà utilizzare i 10 comandi audio in combinazione (sequenze audio-SQ)
di seguito il codice arduino per utilizzare la combinazione
ad esempio SQ1+SQ3(HIGH) SQ1+SQ2(HIGH)ecc....


//il seguente codice permette di avere un segnale HIGH in uscita della board arduino 
//tramite la combinazione di due segnali HIGH in entrata ordinati 
//provenienti dai pinout della actionoiseboard.
//ordinati perche' la sequenza innesca L'HIGH soltanto sollecitanto 
//l'input nella sequenza ordinata 1-2 e non 2-1.

int a=0;                     //la seguente variabile segnala la corretta sequenza

void setup()
{
   pinMode(4,INPUT);      
   pinMode(5,INPUT);   
   pinMode(6,INPUT);         
   pinMode(10,OUTPUT);  
   pinMode(11,OUTPUT);   
   digitalWrite(10,LOW); 
   digitalWrite(11,LOW); 
      
}
void loop()

{                                                                                  
               if(digitalRead(4)==HIGH){                        // se il Primo pin4 ha ricevuto L'HIGH              dalla                                  
               a=1;                                             //actionoiseboard la variabile "a"
               }                                                 //sarà 1
            if(digitalRead(5)==HIGH && a==1){                       
              digitalWrite(10,HIGH);                             // se il secondo pin5 riceve L'HIGH
                a=0;                                              // e la variabile "a" ha valore 1
               }                                                  //la sequenza e' corretta
              if(digitalRead(5)== HIGH && a!=1){                  //quindi il pin 10 va in HIGH
                while(1);}                                        // in caso contrario while(1)
                                                                 //blocca il loop quindi la board
                if(digitalRead(6)==HIGH && a==1){                 //necessita il reset
              digitalWrite(11,HIGH);                              //stessa cosa per il pin6
                a=0;                                               // che porta invece in HIGH
               }                                                    // il pin 11.
                
                if(digitalRead(6)== HIGH && a!=1){
                while(1);}
                
                
                
                }

// aggiungendo pin in input ed OUTPUT potranno essere aggiunti altri servo 
// azionabili da remoto

video dimostrativo del codice appena descritto che usa segnali combinati



nel seguente video ho utilizzato due led rispettivamente connessi
al pin 10 e 11 di arduino il quale a sua volta riceve i segnali di HIGH
dalla actionoiseboard, i pin di input della board di arduino del codice
sopra sono 4-5-6(pinout 1-2-3 della actionoiseboard)
la sequenza input4-5 (out1-2 actionoiseboard)
porta in HIGH il led rosso(pin 10 HIGH)
dopo il reset azionato con la sequenza audio dell'ultimo
bottone rosso che si puo vedere in video
la sequenza viene cambiata con in4-6 (1-3 actionoiseboard)
e aziona il led bianco
i bottoni rossi che si vedono nel monitor del notebook
portano in esecuzione le 10 sequenze audio che sollecitano
i 10 pin out della actionoiseboard
l'undicesimo tasto equivale al reset
nel sequente link potete trovare
la pagina comandi



Licenza Creative Commons
Quest'opera e' distribuita con Licenza Creative Commons Attribuzione - Non commerciale -