in realtà di funzionante ho solo la parte di codice che mi serve per leggere i segnali:
int channel_1_us;
int channel_2_us;
int channel_3_us;
int channel_4_us;
int channel_5_us;
int channel_6_us;
int channel_1_perc;
int channel_2_perc;
int channel_3_perc;
int channel_4_perc;
int channel_5_perc;
int channel_6_perc;
void setup() {
Serial.begin (9600);
pinMode (2, INPUT);
pinMode (3, INPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
pinMode (6, INPUT);
pinMode (7, INPUT);
}
void loop() {
//leggi la durata dell'impulso sui 6 pin
channel_1_us = pulseIn (2, HIGH);
channel_2_us = pulseIn (3, HIGH);
channel_3_us = pulseIn (4, HIGH);
channel_4_us = pulseIn (5, HIGH);
channel_5_us = pulseIn (6, HIGH);
channel_6_us = pulseIn (7, HIGH);
//limita la durata dell'impulso tra 1000 e 2000us e poi scalalo tra 0 e 100
channel_1_perc = map(constrain(channel_1_us, 1000, 2000), 1000, 2000, 0, 100);
channel_2_perc = map(constrain(channel_2_us, 1000, 2000), 1000, 2000, 0, 100);
channel_3_perc = map(constrain(channel_3_us, 1000, 2000), 1000, 2000, 0, 100);
channel_4_perc = map(constrain(channel_4_us, 1000, 2000), 1000, 2000, 0, 100);
channel_5_perc = map(constrain(channel_5_us, 1000, 2000), 1000, 2000, 0, 100);
channel_6_perc = map(constrain(channel_6_us, 1000, 2000), 1000, 2000, 0, 100);
//stampa sul serial monitor i valori in microsecondi e in percentuale
Serial.print("canale 1 microsec: ");
Serial.println(channel_1_us);
Serial.print("canale 1 %: ");
Serial.println(channel_1_perc);
Serial.print("canale 2 microsec: ");
Serial.println(channel_2_us);
Serial.print("canale 2 %: ");
Serial.println(channel_2_perc);
Serial.print("canale 3 microsec: ");
Serial.println(channel_3_us);
Serial.print("canale 3 %: ");
Serial.println(channel_3_perc);
Serial.print("canale 4 microsec: ");
Serial.println(channel_4_us);
Serial.print("canale 4 %: ");
Serial.println(channel_4_perc);
Serial.print("canale 5 microsec: ");
Serial.println(channel_5_us);
Serial.print("canale 5 %: ");
Serial.println(channel_5_perc);
Serial.print("canale 6 microsec: ");
Serial.println(channel_6_us);
Serial.print("canale 6 %: ");
Serial.println(channel_6_perc);
Serial.println("");
delay (2000);
in questi giorni ho provato, scritto e cestinato righe di codice, cercando in rete varie idee per comandare la mia motorshield (
https://www.futurashop.it/motor-shie...ata-8220-vma03)
ciò che mi blocca è come miscelare i canali per un movimento realistico da cingolato, sarebbe semplice usare 2 canali separati e farlo a mano, o usare i mix della radio..ma allora tanto varrebbe pormi la sfida di usare arduino
Sono ben lontano da definirmi anche solo pratico nell'uso del codice, però capisco cosa leggo e solitamemte riesco ad adattarlo alle mie esigenze. Ma in questo caso mi stà letteralmente fumando il cervello