saranno presto aggiornate
le guide con tutte le novità
riguardo i nuovi prodotti
come ad esempio il playpad
che vedete nel
video a destra
per info su eventuali preordini
admin@actionoise.com
#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
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 perchè 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 è 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
// cosi da azionarli da remoto
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 è posibile visitare
la pagina comandi
//REMEMBER to connect Actionoiseboard reset(rst) to arduino(rst)
int reset = 0;
void setup() {
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(10,INPUT);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW); //aggiunta pin 10 per marcia avanti a scatti (leopard crawler)
}
void loop() {
//if(digitalRead(10)==HIGH){ //leopard crawler avanti (sequenza audio utilizzata per Aremote non piu disponibile)
//delay(50);
//digitalWrite(6,HIGH);
//digitalWrite(7,LOW);
//delay(50);
//digitalWrite(6,LOW);
//digitalWrite(7,LOW);
//delay(50);
//digitalWrite(8,LOW);
//digitalWrite(9,HIGH);
//delay(50);
//digitalWrite(8,LOW);
//digitalWrite(9,LOW);
// }
if (digitalRead(2)==HIGH){ //indietro
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}
if (digitalRead(3)==HIGH){ //avanti
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
}
if (digitalRead(4)==HIGH){ //dx
delay(200);
digitalWrite(6, HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(200); //aggiunta di pause per miglior controllo
digitalWrite(6, LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
}
if (digitalRead(5)==HIGH){ //sx
delay(200);
digitalWrite(6, LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(6, LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
}
DI seguito lo schema dei rispettivi pin i/o
da connettere tra actionoiseboard ed Arduino
ACTIONOISEBOARD............ARDUINO
pin.out.6------------------------pin.in.D2
pin.out.7------------------------pin.in.D4
pin.out.8------------------------pin.in.D5
pin.out.9------------------------pin.in.D3
pin.out.10-----------------------pin.in.D10
di seguito schema pin i/o
da connettere tra arduino e driver L293D
L293D....................ARDUINO
IN1.............................pin.out.D6
IN2.............................pin.out.D7
IN3.............................pin.out.D8
IN4.............................pin.out.D9
IMPORTANTE: RICORDARSI DI CONNETTERE
IL PAD RESET DELLA ACTIONOISEBOARD CON IL RESET DELL'ARDUINO
I TRE CONTROLLER INTERCAMBIABILI AL MOMENTO DISPONIBILI SONO:
Microcontroller Stepper:
Decodifica i segnali audio in entrata, fornendo l'output sui due driver ULN2803 per il movimento dei 4 motori stepper
2 motori stepper vengono utilizzati per l'inquadratura remota della camera quindi il movimento nord sud del cellulare
che sta ricevendo la videochiamata altri due motori stepper per i comandi remoti sulle ruote dello chassis direzionandole
Microcontroller Combo:
decodifica i segnali fornendo l'output al driver ULN2803 e da li ai 2 motori stepper per l'inquadratura.
fornisce inoltre output ad un terzo microcontroller o development board
(arduino,raspberry ecc... opportunamente programmati-vediSopra)
cosi da disporre dei comandi remoti su due motori brushless tramite driver L293D o similari (esempio schema sopra)
Microcontroller Servo:
fornisce semplici segnali (HIGH-LOW) ai 10 pinout della actionoiseboard cosi' da connettere un arduino o qualsiasi altra
development board e programmarla in base alle proprie esigenze che nascono dal voler inviare da remoto e con una semplice
videochiamata comandi per poter azionare servo,relay,motori,elettrovalvole ecc...
il tutto senza l'utilizzo di un cloud
in questa pagina ogni tasto aziona un pinout della actionoiseboard (inserendo un determinato codice
sarà possibile attivare Le audio frequenze)