Data pubblicazione: Feb 24, 2013 5:36:57 PM
In questo articolo vi spiegheremo come collegare un Arduino ad un trasmittente radio di quelle che vengono usate nell'ambito del modellismo.Vi spiegheremo come come fare ciò attraverso 4 STEP.
.
Prima di tutto dovete collegare la ricevente al vostro arduino. Nel nostro caso la ricevente ha tre canali ,dei quali noi useremo solo il canale 1 e il canale 2, e il connettore B/C che va collegato all'alimentazione che generalmente è di 5V.Il segnale che ci fornisce la ricevente è un segnale PWM (Pulse Width Modulation) lo stesso che si usa per i
Prima di tutto dovete collegare la ricevente al vostro arduino. Nel nostro caso la ricevente ha tre canali ,dei quali noi useremo solo il canale 1 e il canale 2, e il connettore B/C che va collegato all'alimentazione che generalmente è di 5V.Il segnale che ci fornisce la ricevente è un segnale PWM (Pulse Width Modulation) lo stesso che si usa per i servomotori.
Ora vi mostriamo un semplice schizzo che vi permetterà di stampare i valori in ingresso sul Serial Monitor,il codice è riportato di seguito:
int ch1; //creiamo due variabili intere rispettivamente ch1 (canale1) e ch2 (canale2)
int ch2;
void setup() {
pinMode(6, INPUT);//configuriamo il pin D6 e D7 come ingressi
pinMode(7, INPUT);
Serial.begin(9600); //settiamo la velocità di comunicazione con la porta USB
}
void loop() {
ch1 = pulseIn(6, HIGH, 25000); //settiamo il pulseIn
ch2 = pulseIn(7, HIGH, 25000);
Serial.print("Canale 1:");//stampiamo il valore del canle1
Serial.println(ch1);
Serial.print("canale 2:");//stampiamo il valore del canale2
Serial.println(ch2);
delay(100);
}
Ora che abbiamo mostrato come settare il PulseIN vi mostreremo 3 codici che mostrano come sfruttare tali segnali per far muovere dei servo motori .
Il primo è un codice molto semplice nel quale usiamo singolarmente i due canali per far muovere due servomotori.
Il codice è il seguente:
#include<Servo.h> //richiamiamo la libreria per gestire i servi
Servo servo1; //dichiariamo le due variabili relative ai sevo motori
Servo servo2;
int ch1;//dichiariamo le due variabili relative ai due canali
int ch2;
int val1;//dichiariamo due variabili intere che dovranno contenere i valori da inviare ai servi
int val2;
void setup() {
pinMode(6, INPUT); //settiamo i Pin D6 e D7 come ingreesi,sono i due Pin relativi ai due canali
pinMode(7, INPUT);
servo1.attach(8); //dichiariamo i pin sui quali abbiamo collegato i due servi rispettivamnete D8 e D9
servo2.attach(9);
Serial.begin(9600);//impostiamo velocità di comunicazione con la porta USB
}
void loop() {
ch1 = pulseIn(7, HIGH, 25000);//configuriamo il PulseIN
ch2 = pulseIn(6, HIGH, 25000);
val1 = map(ch2, 1000,2000,0,179);//andiamo a creare la relazione tra i valori letti dal pulseIn e i valori che dobbiamo inviare ai servi
servo1.write(val1);//scriviamo sui servi il valore delle due variabili val1 e val2
val2 = map(ch1, 1000,2000,0,179);
servo2.write(val2);
delay(15);
}
Il secondo codice mostra come miscellare un unico segnale sui due servi.
Il codice è il seguente:
#include<Servo.h> //richiamiamo la libreria per gestire i servi
Servo servo1; //dichiariamo le due variabili relative ai sevo motori
Servo servo2;
int ch1;//dichiariamo le due variabili relative ai due canali
int ch2;
int val1;//dichiariamo due variabili intere che dovranno contenere i valori da inviare ai servi
int val2;
void setup() {
pinMode(6, INPUT); //settiamo i Pin D6 e D7 come ingreesi,sono i due Pin relativi ai due canali
pinMode(7, INPUT);
servo1.attach(8); //dichiariamo i pin sui quali abbiamo collegato i due servi rispettivamnete D8 e D9
servo2.attach(9);
Serial.begin(9600);//impostiamo velocità di comunicazione con la porta USB
}
void loop() {
ch1 = pulseIn(7, HIGH, 25000);//configuriamo il PulseIN
ch2 = pulseIn(6, HIGH, 25000);
val1 = map(ch1, 1000,2000,0,179);//andiamo a creare la relazione tra i valori letti dal pulseIn e i valori che dobbiamo inviare ai servi
val2 = map(ch1, 1000,2000,179,0);//da notare che in entrambi i val abbiamo usato lo stesso canale
servo1.write(val1);//scriviamo sui servi il valore delle due variabili val1 e val2
servo2.write(val2);
delay(15);
}
Il terzo ed ultimo codice mostra come effettuare una routine,ovvero un movimento, mantenendo costante il valore di un canale.
Il codice è il seguente:
#include<Servo.h>
Servo servo1;
Servo servo2;
int ch1;
int ch2;
int val1;
int val2;
void setup() {
pinMode(6, INPUT);
pinMode(7, INPUT);
servo1.attach(8);
servo2.attach(9);
Serial.begin(9600);
}
void loop() {
ch1 = pulseIn(7, HIGH, 25000);
ch2 = pulseIn(6, HIGH, 25000);
val1 = map(ch2, 1000,2000,0,150);
val2 = map(ch2, 1000,2000,150,0);;
//di seguito vi è la routine
servo1.write(val1);
servo2.write(val2);
delay(800);
servo1.write(val2);
servo2.write(val1);
delay(800);
}
Ora vi proponiamo un video nel quale vi mostriamo gli ultimi 3 software spiegati in precedenza in azione buona visione.
Grazie per aver visitato il sito.