switchare segnali ppm/pcm con arduino

Ciao ragazzi.
Vi scrivo perchè mi sto cimentando nella programmazione di arduino.
Non conosco nessun tipo di linguaggio, ho letto e riletto il libro di ARDUINO LA GUIDA UFFICIALE.
Non ho mai programmato arduino.
Con questo vengo al dunque.
Io faccio modellismo radiocomandato, e spesso mi trovo a dover fare dei piccoli progettini robotizzati da applicare sui miei modelli.
La mia radio trasmette in ppm o pcm

Ho la necessita' di switchare 4 segnali uscenti da 4 canali della mia rx. Lo scambio deve avvenire tra 2 batterie di 4 servocomandi l'una.
In pratica con una radio a 4 canali devo far muovere un carro, poi con uno switch della radio devo trasferire i 4 canali al robot montato sopra. Quindi carro fermo e muovo il robot sopra.
Ho provato a buttare giù un codice sicuramente errato :smiley: ma devo comunque cominciare.

Il codice è questo:

#include <Servo.h> 
int ch1 = A0;
int ch2 = A1;
int ch3 = A2;
int ch4 = A3;
int ch8state = 0;
Servo esc1; 
Servo esc2;
Servo esc3;
Servo esc4;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int val1;
int val2;
int val3;
int val4;

void setup() 
{
esc1.attach(6);
esc2.attach(7);
esc3.attach(8);
esc4.attach(9);
servo1.attach(10);
servo2.attach(11);
servo3.attach(12);
servo4.attach(13);

}

void loop() {
val1=analogRead(ch1);
val2=analogRead(ch2);
val3=analogRead(ch3);
val4=analogRead(ch4);

if (ch8state == 0) { 

esc1.write(val1);
esc1.write(val2);
esc1.write(val3);
esc1.write(val4);
servo1.write(511); // posizione servo a 0°
servo2.write(511); // posizione servo a 0°
servo3.write(511); // posizione servo a 0°
servo4.write(511); // posizione servo a 0°

} 
else {

esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
esc1.write(0); // esclusione esc
servo1.write(val1); 
servo2.write(val2); 
servo3.write(val3); 
servo4.write(val4); }
}
code]
So che si devono usare degli interrupt ma non so cosa siano e non so a cosa servono, potreste aiutarmi?
Ciao a tutti
Danny

Capisco che avrò scritto uno sketch senza capo ne coda, ma a chi posso chiedere se non qui?
Se non c'è nessuno in grado di rispondermi ( cosa che non credo vista la gran complessità dei lavori che ho visto qui in giro) potreste dirmi dove studiare il trasferimento dei segnali Di una rx da modellismo?

Porta pazienza, ad esempio io non sò risponderti. Qualcuno che conosce l'argomento risponderà.

Intanto, modifica il codice, devi racchiuderlo nei tag code (modifica il tuo post e usa il pulsante con disegnato <> su una pergamena) perchè come vedi se non è nei tag giusti una parte del codice diventa una faccina.

grazie mille

aspetterò con calma :smiley:

Dannyrocket:
Ho la necessita' di switchare 4 segnali uscenti da 4 canali della mia rx. Lo scambio deve avvenire tra 2 batterie di 4 servocomandi l'una.

Il codice che hai scritto non ha alcun senso.
Quello che vuoi fare è impossibile da realizzare solo con Arduino, programmato tramite wiring, unica possibile soluzione è usare quattro micro relè deviatori a cui in ingresso applichi i quattro segnali da commutare e su i due gruppi di quattro uscite i due differenti utilizzatori.
In alternativa ai relè è possibile usare due CD466 visto che si tratta di segnali a bassa corrente.

Grazie anche a te astrobeed.
Si so che con dei relè o dei semplici micro switch la cosa sia fattibile. Ho pensato ad arduino perchè mi piacerebbe imparare ad usare questa piattaforma e perchè questa mi permetterebbe di includere dei delay sui vari canali.
Sapevo anche di aver scritto una marea di ca..ate ma è il mio primo codice....
Fa nulla passerò alla commutazione classica con gli switch.
Grazie a tutti.

Dannyrocket:
Ho pensato ad arduino perchè mi piacerebbe imparare ad usare questa piattaforma e perchè questa mi permetterebbe di includere dei delay sui vari canali.

Il limite è dato dal framework che si utilizza per programmare Arduino, ovvero wiring, se da un lato rende tutto molto semplice dall'altro lato impone vari paletti che limitano le possibilità d'uso del micro.
Per esempio su i quadricotteri realizzati con Arduino viene acquisito il segnale delle riceventi Rx, elaborato come serve per controllare i quattro ESC, addirittura con frequenza in uscita 10 volte maggiore di quella in ingresso, ~500 Hz invece di 50 Hz, però il tutto viene fatto tramite programmazione in C puro bypassando wiring.
Quanto sopra giusto per chiarire la cosa, è impossibile se vuoi farlo tramite codice "Arduinesco", è possibile se lo fai tramite C, però devi studiarti a fondo il datasheet del 328 e saper programmare molto bene in C a basso livello su micro/mcu.
Se ti vuoi imbarcare nell'avventura puoi studiarti i codici dei programmi open source per multicotteri, uno dei più famosi è MultiWii, è anche il più semplice come struttura e gira sulla UNO, gli altri sono molto più complessi e girano solo su Mega2560.