Visualizza messaggio singolo
Vecchio 26 novembre 14, 16:16   #12 (permalink)  Top
CarloRoma63
User
 
L'avatar di CarloRoma63
 
Data registr.: 08-08-2011
Residenza: Roma
Messaggi: 5.806
Citazione:
Originalmente inviato da dannybon Visualizza messaggio
Buongiorno
Allora..... Ho ripreso in mano il libro di arduino e ho ricominciato a dare una lettura.
Ho scritto uno sketch sicuramente sbagliato ma devo pur cominciare......
Quello che m'interessa al momento è sapere se il concetto scritto è giusto, non m'interessa sapere se è correttamente scritto o se funzionera'.
Questo è quanto scritto:

int ch1 = 1;
int ch2 = 2;
int ch3 = 3;
int ch4 = 4;
int ch8 = 5;
int ch1(2) = 6;
int ch2(2) = 7;
int ch3(2) = 8;
int ch4(2) = 9;
int ch1(3) = 10;
int ch2(3) = 11;
int ch3(3) = 12;
int ch4(3) = 13;
void setup() {

pinMode(ch1, INPUT);
pinMode(ch2, INPUT);
pinMode(ch3, INPUT);
pinMode(ch4, INPUT);
pinMode(ch8, INPUT);
pinMode(ch1(2), OUTPUT);
pinMode(ch2(2), OUTPUT);
pinMode(ch3(2), OUTPUT);
pinMode(ch4(2), OUTPUT);
pinMode(ch1(3), OUTPUT);
pinMode(ch2(3), OUTPUT);
pinMode(ch3(3), OUTPUT);
pinMode(ch4(3), OUTPUT);

}

void loop() {
// read the value from the sensor:
ch1 = analogRead(ch1);
ch2 = analogRead(ch2);
ch3 = analogRead(ch3);
ch4 = analogRead(ch4);
ch8 = analogRead(ch8);
if
ch8= LOW
digitalWrite(ch1(2), Valore letto da ch1 );
digitalWrite(ch2(2), valore letto da ch2 );
digitalWrite(ch3(2), valore letto da ch3 );
digitalWrite(ch4(2), valore letto da ch4 );

else
digitalWrite(ch1(3), valore letto da ch1) ;
digitalWrite(ch1(3), valore letto da ch2) ;
digitalWrite(ch1(3), valore letto da ch3) ;
digitalWrite(ch1(3), valore letto da ch4) ;

In pratica sto cercando di dire ad arduino che i 4 canali principali CH1,2,3,4 devono leggere il segnale proveniente dalla rx. Se ch8 ha un segnale basso ( switch radio basso) il segnale deve uscire dalla batteria di canali CH 1,2,3,4 (2) altrimenti uscire dall'altra batteria ch1,2,3,4 (3).

E' la prima volta che scrivo un codice non mi massacrate
Concettualmente sembra tutto OK, solo che le funzioni di lettura che hai usato sono ANALOGICHE, leggono quindi la tensione presente su pin, non il tempo per cui è stata ON o OFF. Pur conquesta limitazione, il programma potrebbe quasi funzionare (dovresti sostiuire l'analogRead con la digitalRead e, con la imprecisione data dalla limitazione della velocità di elaborazione, riusciresti a "copiare" in tempo reale gli ingressi sulle uscite) ma non con la gestione del CH8 fatta così.
Per il Ch8 dovresti implementare una routine basata sugli interrupt per leggerne con precisione la durata dell'impulso e, di conseguenza, decidere verso quali uscite copiare gli ingressi.
Qualcosa sia sugli interrupt che sulla lettura del PPM la puoi leggere quì: RCArduino: How To Read RC Receiver PPM Stream

Se tu riuscissi ad accedere all'intero frame PPM anzichè ai singoli canali, allora il codice che ti ho linkato è esattamente quello che ti occorre, dovresti modificarlo solo per la parte di uscita.

Carlo
__________________
Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
I miei modelli: http://www.youtube.com/results?search_query=carloroma63
CarloRoma63 non è collegato   Rispondi citando